Repository navigation
Conversation
apache#1952) On a Claude Code secure setup (sandbox enabled, ~/ in denyRead), write operations dispatched via vetted-op failed because vetted-op ran inside the sandbox, where it cannot access the fixed plugin path and child gh calls fail with macOS Seatbelt TLS certificate errors. Exclude vetted-op from sandbox.excludedCommands in both uv run --project and uvx --from launcher forms, matching vetted-op-tracker. vetted-op remains strictly under permissions.ask (never allow) so every remote write continues to require interactive operator confirmation. Generated-by: Claude Code
Kaap10
force-pushed
the
fix/1952-vetted-op-sandbox-exclusion
branch
from
November 1, 2026 14:56
abaf097 to
ddb8a61
Compare
Kaap10
marked this pull request as draft
November 1, 2026 15:03
Contributor
Author
|
Closing in favor of maintainer PR #1956, which covers the sandbox exclusion and also addresses the |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Closes #1952.
On a Claude Code secure setup (sandbox enabled,
~/indenyRead), write operations through the write dispatcher (vetted-op) failed before starting:As diagnosed in #1952,
vetted-op-readandvetted-op-trackerwork because they are declared insandbox.excludedCommands. In contrast,vetted-opwas omitted fromsandbox.excludedCommands, causing it to run inside the sandbox where:~/.claude/magpie/vetted-opsunderdenyRead.ghCLI commands fail with macOS Seatbelt TLS certificate errors (x509: OSStatus -26276).This PR excludes
vetted-opfromsandbox.excludedCommandsin bothuv run --projectanduvx --fromlauncher forms, mirroringvetted-op-tracker.vetted-opremains strictly gated underpermissions.ask(neverallow), preserving the human-in-the-loop confirmation requirement for remote mutations.Changes
tools/sandbox-lint/src/sandbox_lint/__init__.py:uv run --project ~/.claude/magpie/vetted-ops vetted-op *anduvx --from ~/.claude/magpie/vetted-ops vetted-op *toEXCLUDED_COMMAND_ALLOWLIST..claude/settings.jsonandtools/sandbox-lint/expected.json:vetted-oplauncher forms tosandbox.excludedCommands.vetted-oplauncher forms topermissions.ask.tools/sandbox-lint/tests/test_validator.py:test_baseline_never_excludes_the_vetted_op_write_dispatcherwithtest_baseline_excludes_and_asks_the_vetted_op_write_dispatcher, verifying that both launcher forms are present insandbox.excludedCommandsandpermissions.ask, and absent frompermissions.allow.Documentation and Skill Checks:
docs/setup/secure-agent-setup.md,tools/vetted-ops/README.md,tools/sandbox-lint/README.md,tools/spec-loop/specs/agent-isolation-sandbox.md,tools/spec-loop/specs/vetted-command-surface.md,step-v-vetted-ops.md,conditional-checks.md, andvetted-ops-drift.mdto document thatvetted-opruns outside the sandbox while remaining underpermissions.ask.Verification
uv run python -m pytest tools/sandbox-lint/tests/test_validator.py -k vetted_op: 26 passed.uv run python -m pytest tools/sandbox-lint/tests/test_validator.py -k "test_baseline_file_matches_live_settings or test_baseline_satisfies_invariants or test_live_settings_satisfy_invariants": 3 passed (0 diffs between live settings and baseline expected.json).sandbox-lint --settings .claude/settings.json --expected tools/sandbox-lint/expected.json: OK.uv run python -m pytest plugins/magpie-setup: 31 passed, 7 skipped.prek run mixed-line-ending trailing-whitespace end-of-file-fixer typos: all passed with LF line endings.Generated-by: Claude Code