Investigate native always-allow support in Claude permission protocol
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- typescript
- Domain
- api
Research direction
Start by reviewing the Claude control protocol behavior described here, especially control_response and control_request, and compare it with the session-level behavior in issue #136. Determine whether a native always-allow flag such as allowAlways can prevent future matching requests; done means documenting whether the protocol supports this or confirming that the daemon workaround remains necessary.
Written by the indexing model from the issue text.
Description
Context
Claude Code's control protocol for permissions only supports binary "allow" / "deny" responses via control_response. There is no protocol-level mechanism to communicate "always allow this tool" — the native Claude Code TUI handles this entirely client-side by remembering the user's choice and auto-replying to matching future requests.
Current Workaround
We are implementing session-level always-allow caching in the sandbox-agent daemon layer (#136 related). When a user replies "always" via the Gigacode/OpenCode UI, the daemon stores the decision and auto-replies "allow" to matching future control_request events from Claude.
Proposal
Investigate whether Claude's control protocol could natively support an "always allow" behavior flag (e.g. "behavior": "allowAlways") that would tell the Claude agent process to stop emitting control_request for matching tools, rather than requiring the daemon to intercept and auto-reply.
This would reduce latency (no round-trip through the daemon for auto-approved permissions) and align with how Codex (acceptForSession) and OpenCode (always) handle this natively.
Priority
Low — the daemon-side workaround is sufficient. This is a nice-to-have for protocol cleanliness.
🤖 Generated with Claude Code
- Dominant language
- TypeScript
- Stars
- 1.6k
- Forks
- 125
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from rivet-dev/sandbox-agent
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
rivet-dev/sandbox-agent#313 · 1 comment ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
rivet-dev/sandbox-agent#146 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 58/100
rivet-dev/sandbox-agent#145 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 45/100
rivet-dev/sandbox-agent#144 ·
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
rivet-dev/sandbox-agent#143 ·
All issues in rivet-dev/sandbox-agent
Similar issues
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 76/100
-
code-quality refactoring
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
github/gh-aw-firewall#8816 ·
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
vercel/react-tweet#225 ·