You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Replace --dangerously-skip-permissions with a fine-grained per-campaign permission policy. Allow only what experiment_plan.yaml actually needs; deny writes outside the worktree by default.
Why this matters
cli_dispatch.py:222 uses --dangerously-skip-permissions, which auto-approves every tool call including ones the user might want to gate (writes outside the worktree, network calls). Claude Code has finer-grained mechanisms — dontAsk lists, deny rules, allowOnly paths — that we should be using.
This is also the foundation for #8 (PreToolUse plan enforcer).
What's already shipped
The --dangerously-skip-permissions invocation (the thing this replaces).
Proposed approach
Generate a per-campaign .claude/settings.json template at campaign init:
allowOnly for the worktree path.
Allowlist of expected binaries (go build, ./blis run, python, etc.).
Deny network access except to localhost / configured proxies.
TL;DR
Replace
--dangerously-skip-permissionswith a fine-grained per-campaign permission policy. Allow only whatexperiment_plan.yamlactually needs; deny writes outside the worktree by default.Why this matters
cli_dispatch.py:222uses--dangerously-skip-permissions, which auto-approves every tool call including ones the user might want to gate (writes outside the worktree, network calls). Claude Code has finer-grained mechanisms —dontAsklists, deny rules, allowOnly paths — that we should be using.This is also the foundation for #8 (PreToolUse plan enforcer).
What's already shipped
--dangerously-skip-permissionsinvocation (the thing this replaces).Proposed approach
.claude/settings.jsontemplate at campaign init:allowOnlyfor the worktree path.go build,./blis run,python, etc.).--dangerously-skip-permissionsfrom the default invocation; pass--settings <campaign>/.claude/settings.jsoninstead.nous-permissions.jsonlibrary of templates per common target (Go binary, Python pipeline, Node service).Acceptance criteria
examples/runs with--dangerously-skip-permissionsafter this lands.docs/security.md.Out of scope
--dangerously-skip-permissionsflag — keep it for emergency use behind an explicit opt-in.Part of #120.