Skip to content

Update dependency uv to v0.13.4 [SECURITY] - #278

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/pypi-uv-vulnerability
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/pypi-uv-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Aug 7, 2025 •

Copy link
Copy Markdown
Contributor

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
uv (source, changelog) ==0.2.25 → ==0.13.4 age confidence

uv allows ZIP payload obfuscation through parsing differentials

CVE-2025-54368 / GHSA-8qf3-x8v5-2pj8

More information

Details

Impact

In versions 0.8.5 and earlier of uv, remote ZIP archives were handled in a streamwise fashion, and file entries were not reconciled against the archive's central directory. This enabled two parser differentials against other Python package installers:

  1. An attacker could contrive a ZIP archive that would extract with legitimate contents on some package installers, and malicious contents on others due to multiple local file entries. The attacker could choose which installer to target.
  2. An attacker could contrive a "stacked" ZIP input with multiple internal ZIPs, which would be handled differently by different package installers. The attacker could choose which installer to target.

In both cases, the outcome is that an attacker can produce a ZIP with a consistent digest that expands differently with different installers.

The ZIP standard is ambiguous with respect to these behavior differentials. Consequently, these same differentials may be accepted ZIP parsers other than those used in uv. This advisory is for uv in particular, but all consumers of ZIP-based Python package distributions, e.g., pip, are potentially susceptible to similar parser differentials in other ZIP parsers.

The practical impact of these differentials is limited by a number of factors:

  • To be compromised via this vulnerability, user interaction of some sort is required. In particular, the user must run uv install $package with an attacker-controlled $package.
  • When using wheel distributions, installation of the malicious package is not sufficient for execution of malicious code, the vicim would need to perform a separate invocation, e.g., python -c "import $package".
  • If a ZIP-based source distribution (which are less common than tarball source distributions), is encountered, malicious code can be executed during package resolution or installation. uv may invoke the malicious code when building the source distribution into a wheel.
  • The practical impact of these differentials is limited by a coordinated fix to Warehouse, PyPI's backend: Warehouse now rejects ZIPs exhibiting these differentials, limiting the ability of an attacker to distribute malicious ZIP distributions via PyPI. As part of that coordinated fix, a review of Warehouse revealed no evidence of exploitation.
Patches

Versions 0.8.6 and newer of uv address both of the parser differentials above, by refusing to process ZIPs with duplicated local file entries or stacked contents.

Workarounds

Users are advised to upgrade to 0.8.6 or newer to address this advisory.

Most users should experience no breaking changes as a result of the patch above. However, users who do experience breakage should carefully review their distributions for signs of malicious intent. Users may choose to set UV_INSECURE_NO_ZIP_VALIDATION=1 to revert to the previous behavior.

Attribution

This vulnerability was discovered separately by two different individuals: Caleb Brown (Google) and Tim Hatch (Netflix).

Severity

  • CVSS Score: 6.8 / 10 (Medium)
  • Vector String: CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


uv has differential in tar extraction with PAX headers

GHSA-w476-p2h3-79g9

More information

Details

Impact

In versions 0.9.4 and earlier of uv, tar archives containing PAX headers with file size overrides were not handled properly. As a result, an attacker could contrive a source distribution (as a tar archive) that would extract differently when installed via uv versus other Python package installers.

The underlying parsing differential here originates with astral-tokio-tar, which disclosed this vulnerability as CVE-2025-62518.

In practice, the impact of this vulnerability is low: only source distributions can be formatted as tar archives, and source distributions execute arbitrary code at build/installation time by definition. Consequently, a parser differential in tar extraction is strictly less powerful than the capabilities already exposed to an attacker who has the ability to control source distributions.

However, this particular source of malleability in source distributions is unintentional and not operating by design, and therefore we consider it a vulnerability despite its overlap in capabilities with intended behavior.

Patches

Versions 0.9.5 and newer of uv address the vulnerability above. Users should upgrade to 0.9.5 or newer.

Workarounds

Users are advised to upgrade to version 0.9.5 or newer to address this advisory.

Users should experience no breaking changes as a result of the patch above.

References
  • See CVE-2025-62518 for the corresponding advisory against astral-tokio-tar

Severity

Low

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


uv allows ZIP payload obfuscation through parsing differentials

GHSA-pqhf-p39g-3x64

More information

Details

Impact

In versions 0.9.5 and earlier of uv, ZIP archives were handled in a manner that enabled two parsing differentials against other components of the Python packaging ecosystem:

  1. Central directory entries in a ZIP archive can contain comment fields. However, uv would assume that these fields were not present, since they aren't widely used. Consequently, a ZIP archive could be constructed where uv would interpret the contents of a central directory comment field as ZIP control structures (such as a new central directory entry), rather than skipping over them.
  2. Both local file entries and central directory entries contain filename fields, which are used to place archive members on disk. These fields are arbitrary sequences of bytes, and may therefore be invalid or ambiguous. For example, they may contain ASCII null bytes, in which case different ZIP extractors behave differently: Python's zipfile module truncates the filename at the first null, while uv would skip (not extract) any archive members whose filenames contained nulls. Because of this difference, a ZIP archive could be constructed that would extract differently across different Python package installers.

In both cases, the outcome is that an attacker may be able to produce a ZIP with a consistent digest that expands differently with different Python package installers.

Like with GHSA-8qf3-x8v5-2pj8, the impact of these differentials is limited by a number of factors:

  • To be compromised via this vulnerability, user interaction of some sort is required. In particular, the user must run uv pip install $package or similar with an attacker-controlled $package.
    When using wheel distributions, installation of the malicious package is not sufficient for execution of malicious code, the vicim would need to perform a separate invocation, e.g., python -c "import $package".
  • If a ZIP-based source distribution (which are less common than tarball source distributions), is encountered, malicious code can be executed during package resolution or installation. uv may invoke the malicious code when building the source distribution into a wheel.
Patches

Versions 0.9.6 and newer of uv address both of the parser differentials above, by properly handling comments in central directory entries and by refusing to process ZIPs that contain filename fields that are unlikely to be interpreted consistently across other ZIP parser implementations.

Workarounds

Users are advised to upgrade to 0.9.6 or newer to address this advisory.

Most users should experience no breaking changes as a result of the patch above. However, users who do experience breakage should carefully review their distributions for signs of malicious intent. Users may choose to set UV_INSECURE_NO_ZIP_VALIDATION=1 to revert to the previous behavior.

Attribution

This vulnerability was disclosed by Caleb Brown (Google).

Severity

  • CVSS Score: 6.8 / 10 (Medium)
  • Vector String: CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


uv vulnerable to arbitrary file deletion through RECORD entries

CVE-2026-114110 / GHSA-pjjw-68hj-v9mw

More information

Details

Impact

Wheel RECORD entries can contain relative paths that traverse outside of the wheel’s installation prefix. In versions 0.11.5 and earlier of uv, these wheels were not rejected on installation and the RECORD was respected without validation on uninstall.

uv uses the RECORD to determine files to remove on uninstall. Consequently, a malicious or malformed wheel could induce deletion of arbitrary files outside of the wheel’s installation prefix on uninstall.

uv does not use the RECORD file to determine wheel file paths. Invalid RECORD entries cannot be used to create or modify files in arbitrary locations.

Standards-compliant Python packaging tooling does not produce RECORD files that exhibit this behavior; an attacker must manually manipulate the RECORD. A user must install and uninstall the malformed wheel to be affected. An attack must guess the depth of the installation prefix path in order to target system files.

Absolute paths in RECORD files are not allowed by the specification and, when present, uv always treats them as rooted in the wheel’s installation prefix. Absolute paths cannot be used to delete arbitrary files.

Only files can be deleted, attempts to delete a directory via an invalid RECORD entry will fail.

Patches

Versions 0.11.6 and newer of uv address the validation gap above, by removing invalid entries from RECORD files on wheel installation and ignoring RECORD paths that would escape the installation prefix on uninstall.

Workarounds

Users are advised to upgrade to 0.11.6 or newer to address this advisory.

Users should experience no breaking changes as a result of the patch above.

Severity

  • CVSS Score: 2.1 / 10 (Low)
  • Vector String: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


uv is vulnerable to arbitrary file write through entry point names

GHSA-4gg8-gxpx-9rph

More information

Details

Impact

In versions of uv prior to 0.11.15, when installing a distribution containing an entry point specification (under console_scripts or gui_scripts), uv would place the generated entry point according to the given name even if doing so resulted in a path outside of the environment's scripts directory.

A malicious wheel could use this to place an executable outside of the intended environment, including in a directory already present on the user's PATH. This could shadow or overwrite an existing executable and potentially result in unexpected code execution under the wheel's control, even if the wheel's installation environment was not explicitly added to PATH by the user.

In order to exploit this vulnerability, the attacker must induce their target into installing a malicious wheel.

Patches

uv 0.11.15 and newer address this vulnerability. Users are encouraged to upgrade to 0.11.15.

Workarounds

There is no workaround other than upgrading to uv 0.11.15.

Severity

Medium

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


uv's bundled CA store trusts an emSign root whose intermediate CA keys are compromised

GHSA-hq85-5cpj-mr62

More information

Details

By default, uv verifies TLS connections against a vendored copy of the webpki-root-certs bundle. Versions before 0.13.4 include the emSign ECC Root CA - G3 root. Eight eMudhra intermediate CA certificates that chain to that root have compromised private keys, and the CA has revoked them.

An attacker with one of the compromised keys can issue certificates that uv accepts for any hostname, and can be used to issue certificates to enable MITM attacks.

uv 0.13.4 removes the root from its vendored bundle, following webpki-root-certs 1.0.10. Upgrade to 0.13.4 or later.

Severity

  • CVSS Score: 9.1 / 10 (Critical)
  • Vector String: CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

astral-sh/uv (uv)

v0.13.4

Compare Source

Released on 2026-10-20.

Preview features
  • Validate PEP 825 variant metadata and treat package versions with invalid metadata as unavailable under wheel-variants (#​22512)
Other changes
  • Update the bundled Mozilla root certificates via webpki-root-certs 1.0.10 (#​22760)

v0.13.3

Compare Source

Released on 2026-10-20.

Performance
  • Avoid severe uv export slowdowns in dependency graphs with extras (#​22750)

v0.13.2

Compare Source

Released on 2026-10-19.

Enhancements
  • Report all installed packages in uv workspace metadata, including packages outside the selected resolution (#​22395)
  • Include supported environment restrictions when exporting pylock.toml (#​22596)
  • Retry dropped GET and HEAD requests when fetching package and index data (#​22672)
  • Preserve encoding declarations in wheel data scripts that require shell launchers (#​22526)
  • Show causes and hints when uv python find --script cannot discover an interpreter, including with -q (#​22549)
  • Print valid ksh activation instructions and support non-relocatable environments under OpenBSD-derived ksh (#​22538, #​22572)
  • Allow PEP 508 direct URLs, including Mercurial and extensionless archive URLs, in uv-build's [build-system].requires validation (#​22577)
Python
Preview features
  • Fetch and parse PEP 825 index-level variant metadata with wheel-variants (#​22509, #​22511)
Performance
  • Avoid exponential work when simplifying, traversing, and exporting complex dependency markers (#​22608, #​22615, #​22651, #​22674)
  • Reduce the time and memory used to parse and store complex dependency markers (#​22675, #​22676, #​22681)
  • Reduce resolver memory use for large dependency graphs, forks, extras, and dependency groups (#​22565, #​22625)
  • Speed up project discovery in large workspaces by caching member names (#​22635)
  • Reduce uv's binary size and speed up CycloneDX exports (#​22431)
  • Reduce uv-build binary size, including Linux x86_64 wheels (#​22539, #​22573)
  • Reduce allocations when parsing TOML (#​22679)
Bug fixes
  • Respect --exclude-newer when a newer wheel for the selected source distribution is already cached (#​22685)
  • Prevent URL credentials from leaking through diagnostics or persisted metadata (#​22600, #​22601, #​22617, #​22622, #​22646)
  • Keep separate cache entries for signed --find-links URLs that differ only in sensitive query values (#​22630)
  • Honor PEP 751 environment restrictions when installing or syncing from pylock.toml (#​22594)
  • Use configured credentials before prompting during uv publish, and avoid prompting when no upload occurs (#​22593)
  • Match recursive build globs against complete file paths and ignore invalid license symlinks (#​22581, #​22583)
  • Return an error for invalid uv pip compile --python-version values instead of panicking (#​22727)
  • Reject invalid pylock.toml output filenames before resolution instead of panicking (#​22725)
  • Avoid panicking during repeated resolution conflicts involving fixed-priority packages (#​22589)
  • Create version aliases correctly when installing managed Python into a relative directory (#​22547)
  • Show incompatibilities from failing uv pip check invocations with -q (#​22544)
  • Treat logically equivalent dependency markers as equal regardless of construction order (#​22680)
Rust API
  • Require the opt-in unsafe-url feature to use raw url::Url APIs in uv-pep508 (#​22623)
Documentation
  • Clarify credential lookup, environment synchronization, managed Python, and integration guidance (#​22542)
Other changes
  • Use stable sh.astral.* signing identifiers for macOS binaries (#​22648)

v0.13.1

Compare Source

Released on 2026-10-14.

Enhancements
  • Ignore Requires-Python upper bounds in uv pip check and uv pip install --strict, consistent with resolution (#​22500)
  • Support Linux SPARC by falling back when filesystem cloning and detailed cache accounting are unavailable (#​22463)
  • Report missing trusted hashes in resolution errors (#​22241)
Python
Preview features
  • Allow uv tool upgrade to upgrade installed tools when tool-install-locks is enabled (#​22498)
  • Add preliminary support for parsing PEP 825 variant labels in wheel filenames with wheel-variants (#​22039)
Performance
Bug fixes
  • Prevent tool and managed Python uninstalls from deleting unrelated files beside their storage directories (#​22495)
  • Restore support for source distributions containing hard links or full-length tar user or group names (#​22516, #​22522)
  • Preserve device files and FIFOs used as uv pip compile or uv export output destinations (#​22496)
  • Fix sys._base_executable detection for environments created from symlinked interpreters (#​22520)
  • Prevent concurrent readers from observing partially written lockfiles, Python version files, or managed Python sysconfig files (#​22399, #​22402, #​22403)
  • Serialize concurrent project commands that reach the same environment through real and symlinked paths (#​22390)
  • Prevent installs, syncs, and environment creation from failing when they race with uv cache clean (#​22387)
  • Prevent concurrent tool installations from corrupting an environment when the last tool is uninstalled (#​22391)
  • Persist changed upgrade settings even when uv tool upgrade leaves the tool version unchanged (#​22499)
  • Reuse environments with installed Git dependencies pinned to full commit hashes without resolving again (#​22464)
Documentation
  • Explain how to select an emulated Python interpreter on Windows ARM64 when native wheels are unavailable (#​22424)
  • Fix the .netrc format documentation link (#​22514)
Other changes
  • Publish Python 3.15-based uv Docker images under stable tags (#​22503)

v0.13.0

Compare Source

Released on 2026-10-09.

uv 0.13.0 makes Python 3.15 the default stable Python version. We've also included several breaking changes to improve correctness, performance, and compatibility, described below.

We expect most users to be able to upgrade without making changes.

While not a breaking change, this release also updates the format of many of uv's cache entries to improve performance. uv may download or rebuild dependencies after upgrading, because some cached entries from earlier versions cannot be reused. Multiple versions of uv can still safely share the same cache directory.

There are no breaking changes to the configuration of the uv build backend. If your [build-system] table includes an upper bound on uv_build, update it to allow uv_build 0.13, e.g., uv_build>=0.13.0,<0.14.

Breaking changes
  • Use Python 3.15 as the default stable version

    The default stable Python version has changed from 3.14 to 3.15. This affects Python downloads when no version is requested or pinned, e.g., when running uv python install.

    uv continues to use compatible Python installations that are already present. For example, uv venv can still use an installed Python 3.14. If no suitable interpreter is installed and automatic downloads are enabled, commands such as uv venv and uvx python can now download Python 3.15.

    You can opt out of this behavior by requesting Python 3.14 explicitly, e.g., uv venv --python 3.14. For projects, use uv python pin 3.14 to record the version in .python-version.

  • Honor --require-hashes in included constraints files (#​22275)

    Previously, uv ignored --require-hashes in constraints files included with -c from a requirements file. Now, uv honors the directive and requires hashes for all requirements in the installation. Installs that previously succeeded can now fail if a requirement is missing a hash.

    You cannot opt out while the directive is present. Add the missing hashes to your requirements, or remove the --require-hashes directive from the included constraints file if hash checking is not intended.

  • Prefer native Python on Windows ARM64 (#​22100)

    Previously, ARM64 builds of uv preferred emulated x86_64 Python installations because native wheel support was limited. Now, uv prefers native ARM64 (aarch64) interpreters across Python versions.

    This follows similar changes in CPython, the official Windows Python install manager, and GitHub's actions/setup-python.

    When a native interpreter is unavailable, uv continues to fall back to x86_64, then 32-bit x86.

    You can opt out of this behavior by setting UV_PYTHON_ARCH=x86_64 or requesting an explicit architecture, e.g., cpython-3.14-windows-x86_64. If you are using setup-uv, you can set python-arch: x86_64 instead.

  • Reject editable requirements in included constraints files (#​22282)

    Previously, uv silently ignored editable (-e) requirements in constraints files included with -c from a requirements file. Now, uv rejects these requirements with an error, matching pip's behavior.

    You cannot opt out of this behavior. Move editable requirements to a requirements file passed with -r, or pass them directly with --editable, instead of including them in a constraints file.

  • Omit the distutils startup patch on Python 3.10 and later (#​22096)

    Previously, uv installed _virtualenv.py and _virtualenv.pth into every new virtual environment to prevent distutils configuration from changing installation paths. Now, like virtualenv 21.6.0, uv omits these files on Python 3.10 and later, which already ignore the affected configuration keys. This reduces Python startup overhead. Python 3.9 and earlier retain the patch.

    You cannot opt out of this behavior. Existing virtual environments are not modified automatically. Recreate an environment with Python 3.10 or later to remove the patch.

    This stabilizes the no-distutils-patch preview feature.

  • Treat requirement-file option values as single paths (#​22290)

    Previously, uv split values passed to --constraint, --override, --exclude, and --build-constraint on spaces, even when quoted. Now, each value is treated as a single path, allowing file paths containing spaces.

    You cannot opt out of this behavior. Repeat the option to provide multiple files. For example, replace -c "a.txt b.txt" with -c a.txt -c b.txt.

    Space-separated lists in UV_CONSTRAINT, UV_OVERRIDE, UV_EXCLUDE, and UV_BUILD_CONSTRAINT remain supported.

  • Use tar-codec for tar archives by default (#​22094)

    Previously, uv used astral-tokio-tar to extract tar archives, build source distributions with uv_build, and read their metadata for uv publish. Now, uv uses tar-codec, which applies stricter validation when reading archives.

    uv may now reject archives containing hard links or unsupported tar extensions that previous versions accepted. Source distributions created by uv_build can also have different archive bytes and hashes.

    You can opt out of this behavior by setting UV_LEGACY_TAR_BACKEND=1.

    This stabilizes the tar-codec preview feature.

  • Reject uv build --clear output directories that contain a build source
    (#​22276)

    Previously, uv build --clear could delete a project or input source distribution when the
    output directory contained the source. Now, uv rejects these output directories, including
    equivalent paths reached through symlinks, before clearing any build output.

    Select an output directory that does not contain any build sources, or omit --clear.

Python
Preview features
  • Require hashes for build dependencies, including transitive dependencies, with --require-build-hashes (#​21411)
Performance
  • Speed up revalidation of cached HTTP responses by avoiding rewrites of unchanged payloads (#​22130)
  • Reduce allocations when reading cached HTTP responses (#​22136)
  • Reduce cache storage for HTTP policies and package records (#​22135, #​22133)
  • Reduce allocations for cached source distribution revisions (#​22131)
Bug fixes
  • Fix incorrect dependency resolution when reusing source metadata with different build settings (#​22404)
  • Avoid overlong wheel cache lock filenames on Windows (#​22134)

v0.12.24

Compare Source

Release Notes

Released on 2026-10-08.

Enhancements
  • Remove orphaned temporary build environments with uv cache prune (#​22171)
  • Accept PEP 508 marker operators directly before grouped expressions (#​22309)
  • Reject malformed requirements-file options instead of partially parsing or ignoring them (#​22317)
  • Show underlying filesystem and registry errors when managed Python uninstallation fails (#​22362)
  • Identify the invalid source URL in Python mirror errors (#​22364)
Preview features
  • Display preferred advisory IDs in uv audit reports, prioritizing PYSEC, GHSA, then CVE identifiers (#​22292)
Configuration
  • Support custom installation mirrors for GraalPy (#​22269)
  • Support custom installation mirrors for Pyodide (#​22271)
  • Allow UV_NO_CACHE=false to override no-cache = true in configuration (#​22324)
  • Report more precise error locations for invalid trusted-host ports and preview-feature list entries (#​22144)
Performance
  • Speed up later commands after creating an environment by warming its interpreter cache (#​21304)
  • Reduce code-signature verification work for ARM64 macOS releases with 16 KiB signature pages (#​22246)
  • Enforce resource limits when parsing package indexes and --find-links pages with astral-html (#​22203)
  • Reduce standalone uv-build executable size by 7.5% by omitting unused Zstandard support (#​22242)
  • Reduce uv's binary size by about 232 KB by simplifying configuration deserialization (#​22144)
  • Reduce Python download error formatting code size by sharing its formatter (#​22141)
Bug fixes
  • Verify supplied hashes even when hash presence is disabled with --no-require-hashes or require-hashes = false (#​22369)
  • Honor exact managed Python patch pins when creating script environments instead of following patch upgrades (#​22360)
  • Prevent dependency overrides and constraints from activating optional dependencies when their extras are not selected (#​22237)
  • Exclude optional dependencies from exports when their extras are activated only in incompatible environments (#​22234)
  • Give explicit uv publish --trusted-publishing values precedence over configuration (#​22279)
  • Allow UV_OFFLINE=false to override offline = true in configuration (#​22283)
  • Allow UV_SYSTEM_CERTS=false to override system-certs = true in configuration (#​22291)
  • Allow uv auth login over IPv6 loopback addresses (#​22306)
  • Resolve GitHub dependencies whose Git references contain # or % characters (#​22281)
  • Recognize existing Pyodide interpreters as satisfying Pyodide Python requests (#​22322)
  • Preserve JSON output from uv version and uv self version with a single --quiet flag (#​22280)
  • Preserve trailing spaces and tabs in passwords returned by subprocess keyrings (#​22284)
  • Restore wheel incompatibility hints when WHEEL metadata contains multiple expanded Tag: rows (#​22235)
  • Preserve Windows wheel-script rename errors unless a cross-drive copy fallback applies (#​22302)
  • Prevent workspace-cache assertion failures after modifying a project at the workspace root (#​22236)
  • Hide the ignored --keyring-provider option from uv auth help (#​19520)
  • Report HTTP client setup failures directly when resolving unnamed uv tool requirements (#​22320)
Documentation
  • Update Docker and AWS Lambda examples to cache dependency layers using frozen lockfiles without project manifests (#​22172)
  • Fix stale links and descriptions in Rust crate documentation (#​22311, #​22361)
  • Fix a typo in the required-environments documentation (#​22238)

Install uv 0.12.24

Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.24/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.24/uv-installer.ps1 | iex"

Download uv 0.12.24

File Platform Checksum
uv-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
uv-x86_64-apple-darwin.tar.gz Intel macOS checksum
uv-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
uv-i686-pc-windows-msvc.zip x86 Windows checksum
uv-x86_64-pc-windows-msvc.zip x64 Windows checksum
uv-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
uv-i686-unknown-linux-gnu.tar.gz x86 Linux checksum
uv-powerpc64le-unknown-linux-gnu.tar.gz PPC64LE Linux checksum
uv-riscv64gc-unknown-linux-gnu.tar.gz RISCV Linux checksum
uv-s390x-unknown-linux-gnu.tar.gz S390x Linux checksum
uv-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
uv-armv7-unknown-linux-gnueabihf.tar.gz ARMv7 Linux checksum
uv-aarch64-unknown-linux-musl.tar.gz ARM64 MUSL Linux checksum
uv-i686-unknown-linux-musl.tar.gz x86 MUSL Linux checksum
uv-riscv64gc-unknown-linux-musl.tar.gz RISCV MUSL Linux checksum
uv-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum
uv-arm-unknown-linux-musleabihf.tar.gz ARMv6 MUSL Linux (Hardfloat) checksum
uv-armv7-unknown-linux-musleabihf.tar.gz ARMv7 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

v0.12.23

Compare Source

Release Notes

Released on 2026-10-03.

Python
Preview features
  • Sync from uv.lock without a workspace manifest using uv sync --frozen with frozen-lockfile (#​22018)
  • Export from uv.lock without a workspace manifest using uv export --frozen with frozen-lockfile (#​22007)
  • Inspect dependency trees from uv.lock without a workspace manifest using uv tree --frozen with frozen-lockfile (#​22016)
  • Inspect workspace metadata and optionally sync its environment from uv.lock without a workspace manifest using uv workspace metadata --frozen with frozen-lockfile (#​22017, #​22018)
Bug fixes
  • Reject alternate sources for workspace members across conflicting dependency selections, avoiding lockfiles that cannot be installed (#​22153)
  • Allow x86-64 Python interpreters running under emulation on Windows ARM64 to install compatible win_amd64 wheels instead of building from source (#​22099)

Install uv 0.12.23

Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.23/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.23/uv-installer.ps1 | iex"

Download uv 0.12.23

File Platform Checksum
uv-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
uv-x86_64-apple-darwin.tar.gz Intel macOS checksum
uv-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
uv-i686-pc-windows-msvc.zip x86 Windows checksum
uv-x86_64-pc-windows-msvc.zip x64 Windows checksum
uv-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
uv-i686-unknown-linux-gnu.tar.gz x86 Linux checksum
uv-powerpc64le-unknown-linux-gnu.tar.gz PPC64LE Linux checksum
uv-riscv64gc-unknown-linux-gnu.tar.gz RISCV Linux checksum
uv-s390x-unknown-linux-gnu.tar.gz S390x Linux checksum
uv-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
[uv-armv7-unknown-linux-gnueabihf.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.23/uv-armv7-unkn

[!IMPORTANT]
✂ PR body was truncated to here.

@renovate renovate Bot added the dependencies Pull requests that update a dependency file label Aug 7, 2025
@renovate
renovate Bot force-pushed the renovate/pypi-uv-vulnerability branch from c14217a to 13bc82f Compare October 22, 2025 02:08
@renovate renovate Bot changed the title Update dependency uv to v0.8.6 [SECURITY] Update dependency uv to v0.9.5 [SECURITY] Oct 22, 2025
@renovate
renovate Bot force-pushed the renovate/pypi-uv-vulnerability branch from 13bc82f to 5f5ef92 Compare October 30, 2025 03:31
@renovate renovate Bot changed the title Update dependency uv to v0.9.5 [SECURITY] Update dependency uv to v0.9.6 [SECURITY] Oct 30, 2025
@renovate renovate Bot changed the title Update dependency uv to v0.9.6 [SECURITY] Update dependency uv to v0.9.6 [SECURITY] - autoclosed Mar 27, 2026
@renovate renovate Bot closed this Mar 27, 2026
@renovate
renovate Bot deleted the renovate/pypi-uv-vulnerability branch March 27, 2026 01:02
@github-project-automation github-project-automation Bot moved this from Do to Done in boilerdata Mar 27, 2026
@renovate renovate Bot changed the title Update dependency uv to v0.9.6 [SECURITY] - autoclosed Update dependency uv to v0.9.6 [SECURITY] Mar 30, 2026
@renovate renovate Bot reopened this Mar 30, 2026
@renovate
renovate Bot force-pushed the renovate/pypi-uv-vulnerability branch 2 times, most recently from 5f5ef92 to 8b5dac5 Compare March 30, 2026 20:54
@github-project-automation github-project-automation Bot moved this from Done to Doing in boilerdata Mar 30, 2026
@renovate
renovate Bot force-pushed the renovate/pypi-uv-vulnerability branch from 8b5dac5 to eb7fe97 Compare April 10, 2026 21:11
@renovate renovate Bot changed the title Update dependency uv to v0.9.6 [SECURITY] Update dependency uv to v0.11.6 [SECURITY] Apr 10, 2026
@renovate renovate Bot changed the title Update dependency uv to v0.11.6 [SECURITY] Update dependency uv to v0.11.6 [SECURITY] - autoclosed Apr 27, 2026
@renovate renovate Bot closed this Apr 27, 2026
@github-project-automation github-project-automation Bot moved this from Doing to Done in boilerdata Apr 27, 2026
@renovate renovate Bot changed the title Update dependency uv to v0.11.6 [SECURITY] - autoclosed Update dependency uv to v0.11.6 [SECURITY] Apr 27, 2026
@renovate renovate Bot reopened this Apr 27, 2026
@renovate
renovate Bot force-pushed the renovate/pypi-uv-vulnerability branch from c124a7f to eb7fe97 Compare April 27, 2026 23:31
@github-project-automation github-project-automation Bot moved this from Done to Doing in boilerdata Apr 27, 2026
@renovate
renovate Bot force-pushed the renovate/pypi-uv-vulnerability branch from eb7fe97 to c124a7f Compare April 27, 2026 23:31
@renovate
renovate Bot force-pushed the renovate/pypi-uv-vulnerability branch from c124a7f to adf20e6 Compare August 26, 2026 16:47
@renovate renovate Bot changed the title Update dependency uv to v0.11.6 [SECURITY] Update dependency uv to v0.11.15 [SECURITY] Aug 26, 2026
@renovate
renovate Bot force-pushed the renovate/pypi-uv-vulnerability branch from adf20e6 to 7818152 Compare October 21, 2026 02:49
@renovate renovate Bot changed the title Update dependency uv to v0.11.15 [SECURITY] Update dependency uv to v0.13.4 [SECURITY] Oct 21, 2026
@renovate renovate Bot changed the title Update dependency uv to v0.13.4 [SECURITY] Update dependency uv to v0.13.4 [SECURITY] - autoclosed Oct 22, 2026
@renovate renovate Bot closed this Oct 22, 2026
@github-project-automation github-project-automation Bot moved this from Doing to Done in boilerdata Oct 22, 2026
@renovate renovate Bot changed the title Update dependency uv to v0.13.4 [SECURITY] - autoclosed Update dependency uv to v0.13.4 [SECURITY] Oct 22, 2026
@renovate renovate Bot reopened this Oct 22, 2026
@renovate
renovate Bot force-pushed the renovate/pypi-uv-vulnerability branch 2 times, most recently from 7818152 to 209267f Compare October 22, 2026 21:12
@github-project-automation github-project-automation Bot moved this from Done to Doing in boilerdata Oct 22, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

Status: Doing

Development

Successfully merging this pull request may close these issues.

0 participants