Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Permission Responses

This page is grounded in:

  • crates/tui/src/app/update/keys.rs
  • crates/protocol/src/protocol.rs
  • crates/tui/src/render/overlays.rs
  • crates/cli/src/cmd/oneshot.rs

Interactive responses (TUI)

When a permission prompt is active, these keys map to PermissionReplyDecision:

KeyDecision enumBehavior
yAllowAllow this specific tool call
nDenyDeny this specific tool call
aAlwaysAllowAlways allow matching tool calls for the session
!BypassAllBypass all permission checks for the rest of the session
Ctrl+CDenyFast deny shortcut

The inline overlay shows y / n / a / ! options and queued-count context.

Queue behavior

After a response:

  1. Current pending permission is cleared.
  2. Next queued permission becomes active (if any).
  3. Op::PermissionReply { request_id, decision } is sent to core.

Unknown keys are ignored while a permission prompt is open.

Non-interactive (swarmie prompt)

In oneshot/headless mode:

  • default: permission requests are auto-denied, with a warning to stderr
  • with --dangerously-bypass-approvals: requests are answered as BypassAll

This behavior is implemented in crates/cli/src/cmd/oneshot.rs.