-
Notifications
You must be signed in to change notification settings - Fork 12
build: add git and cargo permissions to Claude Code workflow #565
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
a445cd1
build: add git and cargo permissions to Claude Code workflow
lklimek 1f1fb32
fix: use claude_args for model and allowed tools
lklimek c620496
fix: use single quotes to prevent glob expansion in allowed tools
lklimek c0a32c8
build: sandbox cargo commands and add git permissions for Claude
lklimek bebcdf1
fix: switch safe-cargo.sh from denylist to allowlist approach
lklimek 9deac6b
build: deny Claude from editing CI scripts and workflows
lklimek 9f17205
fix: conditionally pass optional env vars in safe-cargo.sh
lklimek d8c4ceb
rabbit feedback
lklimek cbd59c2
build: move safe-cargo.sh to scripts/ and allow +nightly fmt
lklimek File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| #!/bin/bash | ||
| set -euo pipefail | ||
| # | ||
| # safe-cargo.sh — Run cargo without CI secrets leaking to build scripts. | ||
| # | ||
| # WHY THIS FILE EXISTS | ||
| # -------------------- | ||
| # Cargo build scripts (build.rs / proc-macros) execute arbitrary code during | ||
| # compilation. In CI the runner environment contains secrets such as | ||
| # CLAUDE_CODE_OAUTH_TOKEN and GITHUB_TOKEN. A compromised or malicious | ||
| # dependency could read those variables and exfiltrate them. | ||
| # | ||
| # This wrapper uses `env -i` (an allowlist approach) so that cargo and every | ||
| # child process it spawns start with only the variables listed below. | ||
| # Any new secret added to CI in the future is automatically excluded without | ||
| # having to update a denylist. | ||
| # | ||
| # USAGE (GitHub Actions) | ||
| # scripts/safe-cargo.sh build --all-features | ||
| # scripts/safe-cargo.sh test --all-features --workspace | ||
| # scripts/safe-cargo.sh clippy --all-features --all-targets -- -D warnings | ||
| # scripts/safe-cargo.sh +nightly fmt --all | ||
| # | ||
|
|
||
| # Build the environment allowlist. Only pass variables that are set | ||
| # to avoid empty values confusing tools (e.g. PROTOC="" breaks prost). | ||
| ENV_ARGS=( | ||
| HOME="$HOME" | ||
| PATH="$PATH" | ||
|
lklimek marked this conversation as resolved.
|
||
| CARGO_HOME="${CARGO_HOME:-$HOME/.cargo}" | ||
| RUSTUP_HOME="${RUSTUP_HOME:-$HOME/.rustup}" | ||
| TMPDIR="${TMPDIR:-/tmp}" | ||
| LANG="${LANG:-C.UTF-8}" | ||
| TERM="${TERM:-dumb}" | ||
| ) | ||
|
|
||
| # Conditionally pass optional variables only if they are set and non-empty. | ||
| for var in PROTOC CC CXX PKG_CONFIG_PATH USER SHELL; do | ||
| if [ -n "${!var:-}" ]; then | ||
| ENV_ARGS+=("$var=${!var}") | ||
| fi | ||
| done | ||
|
|
||
| exec env -i "${ENV_ARGS[@]}" cargo "$@" | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.