How a command is judged
When enabled, every command the agent runs passes through a layered check, in order:- Read-only fast-path — commands that only read (
kubectl get,ls,cat, a plaincurlGET) run immediately. This is a deterministic check, not a model call, and a command only takes this path when it is unambiguously a read; anything the analyzer can’t be sure about falls through. - Grants you already gave — a standing rule naming this exact command, or a command you approved earlier in this conversation, runs without asking again.
- The judge — an LLM checks the command against your standing rules (see
below). It matches on effect, not on the mechanism: a
curl PUTthat updates a Grafana dashboard counts as modifying a Grafana dashboard. It reads rules narrowly and will not widen “restart staging deployments” to cover a delete or production. When it is genuinely unsure whether something mutates state, it asks you. - Ask you — anything else pauses for a human decision.
Approving a command
When a command needs your yes, the turn pauses at that step — the agent stops and the command card shows four choices:Approve once
Run this one command, this once.
Approve for session
Auto-allow this exact command for the rest of this conversation.
Always allow
Create a standing rule so this class of command auto-runs from now on, in
every conversation.
Deny
Don’t run it — the agent stands down and suggests another approach.
Bypass Permissions
There is an escape hatch. Bypass Permissions is a per-conversation switch that turns the gate off entirely: every governed command runs, with no fast-path, no rule matching and no judge. It exists because the alternative is worse — someone who needs to move now will otherwise leave the product and do the work by hand, where nothing is recorded at all. So the switch is built to leave a trail:- It is scoped to one conversation and never carries into another.
- Turning it on and off is itself journaled, so the unguarded window has a start and an end you can point at afterwards.
- Every command run under it is journaled with the
bypasslayer, not silently as an ordinary auto-allow. - The record expires 7 days after its last use, so a switch left on doesn’t stay on indefinitely.
Standing rules
Rules are how you move the line permanently. A rule is a plain-language description of a class of operations you trust the agent to run without asking — for example “restart deployments in the staging namespace”. They are per-user and apply across all your conversations. You can create rules two ways:- In Settings → Auto-authorization — add, review, and delete your rules in one list.
- From chat — tell the agent “from now on you don’t need to ask before restarting staging deployments” and it will propose a matching rule. A proposed rule does nothing until you activate it in Settings — the agent can never weaken its own authorization.