Skip to content

Investigate native always-allow support in Claude permission protocol #137

@NathanFlurry

Description

@NathanFlurry

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions