2025-10-12 20:27:08 +02:00
# Environment and Tools
This document covers environment activation, tool directory configuration, and authentication options.
## Activate environment
You can set `activate-environment` to `true` to automatically activate a venv.
This allows directly using it in later steps:
```yaml
- name : Install the latest version of uv and activate the environment
2026-07-08 13:14:13 +02:00
uses : astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
2025-10-12 20:27:08 +02:00
with :
activate-environment : true
- run : uv pip install pip
```
2026-02-04 08:40:32 +01:00
By default, the venv is created at `.venv` inside the `working-directory` .
You can customize the venv location with `venv-path` , for example to place it in the runner temp directory:
```yaml
2026-07-08 13:14:13 +02:00
- uses : astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
2026-02-04 08:40:32 +01:00
with :
activate-environment : true
venv-path : ${{ runner.temp }}/custom-venv
```
2025-10-12 20:27:08 +02:00
> [!WARNING]
>
> Activating the environment adds your dependencies to the `PATH`, which could break some workflows.
> For example, if you have a dependency which requires uv, e.g., `hatch`, activating the
> environment will shadow the `uv` binary installed by this action and may result in a different uv
> version being used.
>
> We do not recommend using this setting for most use-cases. Instead, use `uv run` to execute
> commands in the environment.
## GitHub authentication token
2026-03-12 22:03:21 +01:00
By default, this action resolves available uv versions from
[`astral-sh/versions` ](https://github.com/astral-sh/versions ), then downloads uv artifacts from
GitHub Releases.
You can provide a token via `github-token` to authenticate those downloads. By default, the
`GITHUB_TOKEN` secret is used, which is automatically provided by GitHub Actions.
2025-10-12 20:27:08 +02:00
If the default
[permissions for the GitHub token ](https://docs.github.com/en/actions/security-for-github-actions/security-guides/automatic-token-authentication#permissions-for-the-github_token )
are not sufficient, you can provide a custom GitHub token with the necessary permissions.
```yaml
- name : Install the latest version of uv with a custom GitHub token
2026-07-08 13:14:13 +02:00
uses : astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
2025-10-12 20:27:08 +02:00
with :
github-token : ${{ secrets.CUSTOM_GITHUB_TOKEN }}
```
## UV_TOOL_DIR
On Windows `UV_TOOL_DIR` is set to `uv-tool-dir` in the `TMP` dir (e.g. `D:\a\_temp\uv-tool-dir` ).
On GitHub hosted runners this is on the much faster `D:` drive.
On all other platforms the tool environments are placed in the
[default location ](https://docs.astral.sh/uv/concepts/tools/#tools-directory ).
If you want to change this behaviour (especially on self-hosted runners) you can use the `tool-dir`
input:
```yaml
- name : Install the latest version of uv with a custom tool dir
2026-07-08 13:14:13 +02:00
uses : astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
2025-10-12 20:27:08 +02:00
with :
tool-dir : "/path/to/tool/dir"
```
## UV_TOOL_BIN_DIR
On Windows `UV_TOOL_BIN_DIR` is set to `uv-tool-bin-dir` in the `TMP` dir (e.g.
`D:\a\_temp\uv-tool-bin-dir` ). On GitHub hosted runners this is on the much faster `D:` drive. This
path is also automatically added to the PATH.
On all other platforms the tool binaries get installed to the
[default location ](https://docs.astral.sh/uv/concepts/tools/#the-bin-directory ).
If you want to change this behaviour (especially on self-hosted runners) you can use the
`tool-bin-dir` input:
```yaml
- name : Install the latest version of uv with a custom tool bin dir
2026-07-08 13:14:13 +02:00
uses : astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
2025-10-12 20:27:08 +02:00
with :
tool-bin-dir : "/path/to/tool-bin/dir"
```
## Tilde Expansion
This action supports expanding the `~` character to the user's home directory for the following inputs:
- `version-file`
- `cache-local-path`
- `tool-dir`
- `tool-bin-dir`
- `cache-dependency-glob`
```yaml
- name : Expand the tilde character
2026-07-08 13:14:13 +02:00
uses : astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
2025-10-12 20:27:08 +02:00
with :
cache-local-path : "~/path/to/cache"
tool-dir : "~/path/to/tool/dir"
tool-bin-dir : "~/path/to/tool-bin/dir"
cache-dependency-glob : "~/my-cache-buster"
```
## Ignore empty workdir
By default, the action will warn if the workdir is empty, because this is usually the case when
`actions/checkout` is configured to run after `setup-uv` , which is not supported.
If you want to ignore this, set the `ignore-empty-workdir` input to `true` .
```yaml
- name : Ignore empty workdir
2026-07-08 13:14:13 +02:00
uses : astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
2025-10-12 20:27:08 +02:00
with :
ignore-empty-workdir : true
```
## Environment Variables
This action sets several environment variables that influence uv's behavior and can be used by subsequent steps:
- `UV_PYTHON` : Set when `python-version` input is specified. Controls which Python version uv uses.
- `UV_CACHE_DIR` : Set when caching is enabled (unless already configured in uv config files). Controls where uv stores its cache.
- `UV_TOOL_DIR` : Set when `tool-dir` input is specified. Controls where uv installs tool environments.
- `UV_TOOL_BIN_DIR` : Set when `tool-bin-dir` input is specified. Controls where uv installs tool binaries.
- `UV_PYTHON_INSTALL_DIR` : Always set. Controls where uv installs Python versions.
- `VIRTUAL_ENV` : Set when `activate-environment` is true. Points to the activated virtual environment.
**Environment variables that affect the action behavior:**
- `UV_NO_MODIFY_PATH` : If set, prevents the action from modifying PATH. Cannot be used with `activate-environment` .
- `UV_CACHE_DIR` : If already set, the action will respect it instead of setting its own cache directory.
```yaml
- name : Example using environment variables
2026-07-08 13:14:13 +02:00
uses : astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
2025-10-12 20:27:08 +02:00
with :
python-version : "3.12"
tool-dir : "/custom/tool/dir"
enable-cache : true
- name : Check environment variables
run : |
echo "UV_PYTHON: $UV_PYTHON"
echo "UV_CACHE_DIR: $UV_CACHE_DIR"
echo "UV_TOOL_DIR: $UV_TOOL_DIR"
echo "UV_PYTHON_INSTALL_DIR: $UV_PYTHON_INSTALL_DIR"
```