Skip to content

fix(backend): skip GitHub API call for cosign when disabled or unconfigured#8753

Merged
jdx merged 2 commits intomainfrom
fix/aqua-locked-skip-cosign-api-call
Mar 25, 2026
Merged

fix(backend): skip GitHub API call for cosign when disabled or unconfigured#8753
jdx merged 2 commits intomainfrom
fix/aqua-locked-skip-cosign-api-call

Conversation

@jdx
Copy link
Copy Markdown
Owner

@jdx jdx commented Mar 25, 2026

Summary

  • Fixes mise install --locked making unnecessary GitHub Releases API calls even when the lockfile has pre-resolved URLs and checksums
  • The needs_cosign flag in verify_provenance() was unconditionally true, triggering a checksum file download via github_release_asset()github::get_release() even when cosign was disabled or the package had no cosign config
  • Now checks settings.aqua.cosign and whether the package has cosign configured before downloading

Fixes #8677

Test plan

  • Reproduced the issue: mise install --locked with api.github.com redirected to invalid host → DNS error
  • After fix: installs successfully using only the lockfile URL, no API calls
  • Normal (non-locked) installs still work
  • cargo test — all 546 unit tests pass
  • Pre-commit hooks pass (cargo-check, cargo-fmt, clippy, etc.)

🤖 Generated with Claude Code


Note

Medium Risk
Touches provenance/verification flow in AquaBackend::verify_provenance, so a logic mistake could inadvertently skip expected cosign checks or lockfile provenance updates. Change is small and gated by settings/config, reducing likelihood of broad impact.

Overview
Prevents unnecessary checksum-file downloads (and resulting GitHub Releases API calls) during aqua installs by tightening when cosign verification is considered needed.

needs_cosign is now true only when cosign is not skipped by lockfile provenance, settings.aqua.cosign is enabled, and the package’s checksum.cosign config exists and isn’t disabled; the subsequent cosign execution check is updated to use this flag.

Written by Cursor Bugbot for commit 425f965. This will update automatically on new commits. Configure here.

…igured

When installing with --locked, the aqua backend was unconditionally
downloading the checksum file via the GitHub Releases API to support
cosign verification, even when:
- The cosign setting was disabled
- The package had no cosign configuration
- The lockfile already contained the checksum

This caused API calls that defeated the purpose of --locked mode,
leading to rate limit errors and failures in air-gapped environments.

Now `needs_cosign` checks both the `aqua.cosign` setting and whether
the package actually has cosign configured before triggering the
checksum file download.

Fixes #8677

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request optimizes the mise install --locked command by preventing redundant GitHub API calls for cosign verification. Previously, these calls were made even when cosign was disabled or not configured, leading to potential network errors and slower installations. The changes ensure that external API interactions are only initiated when genuinely required, enhancing the robustness and efficiency of locked installations.

Highlights

  • GitHub API Calls: Eliminated unnecessary GitHub Releases API calls during mise install --locked when cosign verification is disabled or not configured for a package, preventing DNS errors and improving installation reliability.
  • Cosign Logic: Updated the needs_cosign flag logic to conditionally check settings.aqua.cosign and package-specific cosign configuration, ensuring API calls are only made when cosign is active and relevant.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the needs_cosign logic within the AquaBackend implementation in src/backend/aqua.rs to incorporate additional checks from settings and package checksums. A review comment suggests an improvement to simplify the condition by directly using an already bound checksum variable for better conciseness and to avoid redundant access.

Comment on lines +1083 to +1089
let needs_cosign = !skip_cosign
&& Settings::get().aqua.cosign
&& pkg
.checksum
.as_ref()
.and_then(|c| c.cosign.as_ref())
.is_some_and(|c| c.enabled != Some(false));
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Since this code is inside an if let Some(checksum) = &pkg.checksum block, you can simplify this condition by using the checksum variable directly instead of accessing pkg.checksum again. This makes the code more concise and avoids redundant access.

Suggested change
let needs_cosign = !skip_cosign
&& Settings::get().aqua.cosign
&& pkg
.checksum
.as_ref()
.and_then(|c| c.cosign.as_ref())
.is_some_and(|c| c.enabled != Some(false));
let needs_cosign = !skip_cosign
&& Settings::get().aqua.cosign
&& checksum.cosign.as_ref().is_some_and(|c| c.enabled != Some(false));

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Mar 25, 2026

Greptile Summary

This PR fixes a regression where mise install --locked made unnecessary GitHub Releases API calls even when the lockfile already contained pre-resolved URLs and checksums. The root cause was needs_cosign in verify_provenance() being set to !skip_cosign — which was effectively always true when no cached provenance existed — regardless of whether cosign was enabled or configured for the package.

Changes:

  • needs_cosign is now gated on both Settings::get().aqua.cosign (global setting) and whether the package's checksum.cosign block exists and is not explicitly disabled, matching the same guards already present inside cosign_checksums().
  • The downstream if !skip_cosign && ... guard that calls cosign_checksums is updated to use needs_cosign for consistency.
  • No change to the needs_checksum path — checksum file downloads for non-cosign purposes are unaffected.

The new condition is semantically aligned with the early-exit guards already inside cosign_checksums(), so no cosign verification is skipped that was being done before; only the unnecessary checksum file download (and the GitHub API round-trip it required) is eliminated when cosign is disabled or unconfigured.

Confidence Score: 5/5

  • Safe to merge — the fix is narrowly scoped, semantically correct, and the new condition mirrors guards already present in cosign_checksums().
  • The change is a two-line diff that only tightens the condition under which a checksum file is downloaded. The new needs_cosign guards (settings.aqua.cosign and checksum.cosign.is_some_and(...)) are identical in semantics to the early-exit checks already inside cosign_checksums(), so no previously-executed cosign verification path is bypassed. The needs_checksum download path is entirely unaffected. All 546 unit tests pass and the issue was manually reproduced and verified fixed.
  • No files require special attention.

Important Files Changed

Filename Overview
src/backend/aqua.rs Guards needs_cosign behind both the global settings.aqua.cosign flag and the per-package checksum.cosign.enabled state, preventing an unnecessary checksum file download (and the GitHub Releases API call it triggers) when cosign is disabled or unconfigured.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[verify_provenance called] --> B{pkg.checksum present\nand enabled?}
    B -- No --> Z[return Ok]
    B -- Yes --> C{needs_checksum?}
    C -- Yes --> D[needs_checksum = true]
    C -- No --> E{Settings::get.aqua.cosign?}
    E -- No --> F[needs_cosign = false]
    E -- Yes --> G{checksum.cosign\npresent and not disabled?}
    G -- No --> F
    G -- Yes --> H[needs_cosign = true]
    D --> I{needs_checksum OR\nneeds_cosign and not already verified}
    F --> I
    H --> I
    I -- Yes, file not cached --> J[Download checksum file\nGitHub Release / HTTP]
    I -- No OR file cached --> K{needs_cosign and\nnot cosign_already_verified?}
    J --> K
    K -- Yes --> L[cosign_checksums\nverify signature]
    K -- No --> M{needs_checksum?}
    L --> M
    M -- Yes --> N[parse_checksum_from_content\nupdate lock_platforms]
    M -- No --> Z
Loading

Reviews (2): Last reviewed commit: "fix(backend): address PR review feedback..." | Re-trigger Greptile

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 25, 2026

Hyperfine Performance

mise x -- echo

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.3.15 x -- echo 24.7 ± 0.6 23.5 28.4 1.01 ± 0.04
mise x -- echo 24.5 ± 0.8 23.0 36.6 1.00

mise env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.3.15 env 24.4 ± 0.9 22.4 30.5 1.02 ± 0.04
mise env 24.0 ± 0.6 22.1 26.5 1.00

mise hook-env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.3.15 hook-env 24.8 ± 0.7 22.8 27.5 1.01 ± 0.05
mise hook-env 24.5 ± 0.9 22.5 37.8 1.00

mise ls

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.3.15 ls 24.3 ± 1.0 22.5 36.1 1.00
mise ls 24.7 ± 0.8 21.9 26.8 1.02 ± 0.05

xtasks/test/perf

Command mise-2026.3.15 mise Variance
install (cached) 160ms 159ms +0%
ls (cached) 86ms 83ms +3%
bin-paths (cached) 89ms 88ms +1%
task-ls (cached) 839ms 820ms +2%

Use already-bound `checksum` variable instead of redundant
`pkg.checksum.as_ref()` access, and use `needs_cosign` instead of
`!skip_cosign` to guard the `cosign_checksums` call for consistency.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jdx jdx merged commit ef0835e into main Mar 25, 2026
36 checks passed
@jdx jdx deleted the fix/aqua-locked-skip-cosign-api-call branch March 25, 2026 23:52
mise-en-dev added a commit that referenced this pull request Mar 26, 2026
### 🐛 Bug Fixes

- **(backend)** skip GitHub API call for cosign when disabled or
unconfigured by @jdx in [#8753](#8753)

## 📦 Aqua Registry Updates

#### New Packages (1)

- [`wasm-bindgen/wasm-pack`](https://github.com/wasm-bindgen/wasm-pack)

#### Updated Packages (10)

- [`Songmu/maltmill`](https://github.com/Songmu/maltmill)
- [`adhocteam/ssm`](https://github.com/adhocteam/ssm)
- [`cnosuke/kushi`](https://github.com/cnosuke/kushi)
- [`goark/depm`](https://github.com/goark/depm)
- [`google/go-jsonnet`](https://github.com/google/go-jsonnet)
- [`ipld/go-car`](https://github.com/ipld/go-car)
- [`nao1215/sqly`](https://github.com/nao1215/sqly)
- [`sharkdp/vivid`](https://github.com/sharkdp/vivid)
-
[`terraprovider/statebridge`](https://github.com/terraprovider/statebridge)
-
[`zerocore-ai/microsandbox`](https://github.com/zerocore-ai/microsandbox)
@hoechenberger
Copy link
Copy Markdown

hoechenberger commented Mar 26, 2026

@jdx
I'm super sorry, but this still doesn't seem to fix the issue for me:

$ mise i --locked
mise 2026.3.16 by @jdx [3/3]
gh@2.88.0 verify GitHub artifact attestations ◝
jq@1.8.1 verify GitHub artifact attestations ◝
uv@0.11.1 verify GitHub artifact attestations ◝
mise ERROR Failed to install tools: aqua:astral-sh/uv@0.11.1, aqua:cli/cli@2.88.0, aqua:jqlang/jq@1.8.1

aqua:astral-sh/uv@0.11.1: GitHub artifact attestations verification failed for aqua:astral-sh/uv@0.11.1: API error: GitHub API returned 403 Forbidden: {"message":"API rate limit exceeded for 34.255.80.162. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)","documentation_url":"https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting"}

aqua:cli/cli@2.88.0: GitHub artifact attestations verification failed for aqua:cli/cli@2.88.0: API error: GitHub API returned 403 Forbidden: {"message":"API rate limit exceeded for 34.255.80.162. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)","documentation_url":"https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting"}

aqua:jqlang/jq@1.8.1: GitHub artifact attestations verification failed for aqua:jqlang/jq@1.8.1: API error: GitHub API returned 403 Forbidden: {"message":"API rate limit exceeded for 34.255.80.162. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)","documentation_url":"https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting"}

mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information

mise.toml:

[tools]
gh = "2.88.0"
jq = "1.8.1"
node = "24"
pnpm = "10.31"
uv = "0.11.1"
$ mise config ls 
Path                              Tools                  
[redacted, it's the mise.toml from above]  gh, jq, node, pnpm, uv 

Or is this something else? Here's my mise.lock:

Details # @generated - this file is auto-generated by `mise lock` https://mise.jdx.dev/dev-tools/mise-lock.html

[[tools.gh]]
version = "2.88.0"
backend = "aqua:cli/cli"

[tools.gh."platforms.linux-arm64"]
checksum = "sha256:d9bffed5c9bb65fca9d6097eaa3ebd6edb7438c8bfd641f8595a39c7dc69042f"
url = "https://github.com/cli/cli/releases/download/v2.88.0/gh_2.88.0_linux_arm64.tar.gz"

[tools.gh."platforms.linux-arm64-musl"]
checksum = "sha256:d9bffed5c9bb65fca9d6097eaa3ebd6edb7438c8bfd641f8595a39c7dc69042f"
url = "https://github.com/cli/cli/releases/download/v2.88.0/gh_2.88.0_linux_arm64.tar.gz"

[tools.gh."platforms.linux-x64"]
checksum = "sha256:4d268420ad31846a807e3012ac4b6547df662777e7776fa7f4c55ce062e15b15"
url = "https://github.com/cli/cli/releases/download/v2.88.0/gh_2.88.0_linux_amd64.tar.gz"

[tools.gh."platforms.linux-x64-musl"]
checksum = "sha256:4d268420ad31846a807e3012ac4b6547df662777e7776fa7f4c55ce062e15b15"
url = "https://github.com/cli/cli/releases/download/v2.88.0/gh_2.88.0_linux_amd64.tar.gz"

[tools.gh."platforms.macos-arm64"]
checksum = "sha256:0ea4edb4b1be0ffa2b4c53bcce81691dd58647bb03bfb5b9fdb01ee5b2afc581"
url = "https://github.com/cli/cli/releases/download/v2.88.0/gh_2.88.0_macOS_arm64.zip"

[tools.gh."platforms.macos-x64"]
checksum = "sha256:49d309a6b2152807fb0a70d6db02d14a2d9264b01f52c852938aadb331f4cf70"
url = "https://github.com/cli/cli/releases/download/v2.88.0/gh_2.88.0_macOS_amd64.zip"

[tools.gh."platforms.windows-x64"]
checksum = "sha256:0cbf0abde47cd873edbf937e30665d665c07145ff14199f81358d0188affae57"
url = "https://github.com/cli/cli/releases/download/v2.88.0/gh_2.88.0_windows_amd64.zip"

[[tools.jq]]
version = "1.8.1"
backend = "aqua:jqlang/jq"

[tools.jq."platforms.linux-arm64"]
checksum = "sha256:6bc62f25981328edd3cfcfe6fe51b073f2d7e7710d7ef7fcdac28d4e384fc3d4"
url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-linux-arm64"

[tools.jq."platforms.linux-arm64-musl"]
checksum = "sha256:6bc62f25981328edd3cfcfe6fe51b073f2d7e7710d7ef7fcdac28d4e384fc3d4"
url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-linux-arm64"

[tools.jq."platforms.linux-x64"]
checksum = "sha256:020468de7539ce70ef1bceaf7cde2e8c4f2ca6c3afb84642aabc5c97d9fc2a0d"
url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-linux-amd64"

[tools.jq."platforms.linux-x64-musl"]
checksum = "sha256:020468de7539ce70ef1bceaf7cde2e8c4f2ca6c3afb84642aabc5c97d9fc2a0d"
url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-linux-amd64"

[tools.jq."platforms.macos-arm64"]
checksum = "sha256:a9fe3ea2f86dfc72f6728417521ec9067b343277152b114f4e98d8cb0e263603"
url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-macos-arm64"

[tools.jq."platforms.macos-x64"]
checksum = "sha256:e80dbe0d2a2597e3c11c404f03337b981d74b4a8504b70586c354b7697a7c27f"
url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-macos-amd64"

[tools.jq."platforms.windows-x64"]
checksum = "sha256:23cb60a1354eed6bcc8d9b9735e8c7b388cd1fdcb75726b93bc299ef22dd9334"
url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-windows-amd64.exe"

[[tools.node]]
version = "24.14.1"
backend = "core:node"

[tools.node."platforms.linux-arm64"]
checksum = "sha256:734ff04fa7f8ed2e8a78d40cacf5ac3fc4515dac2858757cbab313eb483ba8a2"
url = "https://nodejs.org/dist/v24.14.1/node-v24.14.1-linux-arm64.tar.gz"

[tools.node."platforms.linux-arm64-musl"]
checksum = "sha256:734ff04fa7f8ed2e8a78d40cacf5ac3fc4515dac2858757cbab313eb483ba8a2"
url = "https://nodejs.org/dist/v24.14.1/node-v24.14.1-linux-arm64.tar.gz"

[tools.node."platforms.linux-x64"]
checksum = "sha256:ace9fa104992ed0829642629c46ca7bd7fd6e76278cb96c958c4b387d29658ea"
url = "https://nodejs.org/dist/v24.14.1/node-v24.14.1-linux-x64.tar.gz"

[tools.node."platforms.linux-x64-musl"]
checksum = "sha256:ace9fa104992ed0829642629c46ca7bd7fd6e76278cb96c958c4b387d29658ea"
url = "https://nodejs.org/dist/v24.14.1/node-v24.14.1-linux-x64.tar.gz"

[tools.node."platforms.macos-arm64"]
checksum = "sha256:25495ff85bd89e2d8a24d88566d7e2f827c6b0d3d872b2cebf75371f93fcb1fe"
url = "https://nodejs.org/dist/v24.14.1/node-v24.14.1-darwin-arm64.tar.gz"

[tools.node."platforms.macos-x64"]
checksum = "sha256:2526230ad7d922be82d4fdb1e7ee1e84303e133e3b4b0ec4c2897ab31de0253d"
url = "https://nodejs.org/dist/v24.14.1/node-v24.14.1-darwin-x64.tar.gz"

[tools.node."platforms.windows-x64"]
checksum = "sha256:6e50ce5498c0cebc20fd39ab3ff5df836ed2f8a31aa093cecad8497cff126d70"
url = "https://nodejs.org/dist/v24.14.1/node-v24.14.1-win-x64.zip"

[[tools.pnpm]]
version = "10.31.0"
backend = "aqua:pnpm/pnpm"

[tools.pnpm."platforms.linux-arm64"]
checksum = "sha256:5e8f5b3fc8fc00963686a8502ddf5882681b29dcfe392671336b660f78127152"
url = "https://github.com/pnpm/pnpm/releases/download/v10.31.0/pnpm-linux-arm64"

[tools.pnpm."platforms.linux-arm64-musl"]
checksum = "sha256:5e8f5b3fc8fc00963686a8502ddf5882681b29dcfe392671336b660f78127152"
url = "https://github.com/pnpm/pnpm/releases/download/v10.31.0/pnpm-linux-arm64"

[tools.pnpm."platforms.linux-x64"]
checksum = "sha256:21f99c8eb302967af820ce575a48717d017203269916f932e34f5ff86334008d"
url = "https://github.com/pnpm/pnpm/releases/download/v10.31.0/pnpm-linux-x64"

[tools.pnpm."platforms.linux-x64-musl"]
checksum = "sha256:21f99c8eb302967af820ce575a48717d017203269916f932e34f5ff86334008d"
url = "https://github.com/pnpm/pnpm/releases/download/v10.31.0/pnpm-linux-x64"

[tools.pnpm."platforms.macos-arm64"]
checksum = "sha256:6f2a7f51faa0bbee013fcad9be2f0d503e3a77d872c8f9551866285c64b98cd2"
url = "https://github.com/pnpm/pnpm/releases/download/v10.31.0/pnpm-macos-arm64"

[tools.pnpm."platforms.macos-x64"]
checksum = "sha256:1e8e40e0c127248300975ffc50de9d7d49fade78b55240cab1db02a9324f65d6"
url = "https://github.com/pnpm/pnpm/releases/download/v10.31.0/pnpm-macos-x64"

[tools.pnpm."platforms.windows-x64"]
checksum = "sha256:26cfa9cb3963e4841fbd0da3b5114b1c72631b41b5617ed07f451d5974cfa494"
url = "https://github.com/pnpm/pnpm/releases/download/v10.31.0/pnpm-win-x64.exe"

[[tools.uv]]
version = "0.11.1"
backend = "aqua:astral-sh/uv"

[tools.uv."platforms.linux-arm64"]
checksum = "sha256:bd04ffce77ee8d77f39823c13606183581847c2f5dcd704f2ea0f15e376b1a27"
url = "https://github.com/astral-sh/uv/releases/download/0.11.1/uv-aarch64-unknown-linux-musl.tar.gz"

[tools.uv."platforms.linux-arm64-musl"]
checksum = "sha256:bd04ffce77ee8d77f39823c13606183581847c2f5dcd704f2ea0f15e376b1a27"
url = "https://github.com/astral-sh/uv/releases/download/0.11.1/uv-aarch64-unknown-linux-musl.tar.gz"

[tools.uv."platforms.linux-x64"]
checksum = "sha256:4e949471a95b37088a1ff1a585f69abed4d3cd3f921f50709a46b6ba62986d38"
url = "https://github.com/astral-sh/uv/releases/download/0.11.1/uv-x86_64-unknown-linux-musl.tar.gz"

[tools.uv."platforms.linux-x64-musl"]
checksum = "sha256:4e949471a95b37088a1ff1a585f69abed4d3cd3f921f50709a46b6ba62986d38"
url = "https://github.com/astral-sh/uv/releases/download/0.11.1/uv-x86_64-unknown-linux-musl.tar.gz"

[tools.uv."platforms.macos-arm64"]
checksum = "sha256:f7815f739ed5d0e4202e6292acedb8659b9ae7de663d07188d8c6cbd7f96303f"
url = "https://github.com/astral-sh/uv/releases/download/0.11.1/uv-aarch64-apple-darwin.tar.gz"

[tools.uv."platforms.macos-x64"]
checksum = "sha256:2103670e8e949605e51926c7b953923ff6f6befbfb55aee928f5e760c9c910f8"
url = "https://github.com/astral-sh/uv/releases/download/0.11.1/uv-x86_64-apple-darwin.tar.gz"

[tools.uv."platforms.windows-x64"]
checksum = "sha256:6659250cebbd3bb6ee48bcb21a3f0c6656450d63fb97f0f069bcb532bdb688ed"
url = "https://github.com/astral-sh/uv/releases/download/0.11.1/uv-x86_64-pc-windows-msvc.zip"

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants