1. Session mode (whether it may write)
agent: the full toolsetplan: structurally read-only; writes the plan withplan_write, and implements only afterplan_exitapproval (the model can callplan_enteritself)ask: a read-only subset (no bash); when code changes are needed it proposes a tier switch through theask_needs_workexit toolgoal: full toolset plus cross-turn autonomy — see Goal mode
2. Approval level (whether it must ask)
Interpreter and destructive commands (
node / bash / npx / pnpm dlx / sudo /
rm / cp / find) get no “remember” button: everything after the first word is the
code to execute or an arbitrary path, so one click would mean a permanent free pass. The
card says outright that the approval is for this one time.
The fine print — the three buttons, the prefix rules and their guards, and the
writable-root list — lives in the Agent engine.
Shift+Tab cycles through the four approval levels. The two dimensions are separate:
session mode decides whether it may write, the approval level decides whether it
must ask.3. Work mode (who it is for)
Orthogonal to session mode: that one switches permissions and shape, this one switches
audience. The design tier has a gate — if the ui-design plugin is missing or disabled it
walks you through installing it first.
4. The automation policy tier (for unattended runs)
5. Things that are not modes at all
6. Where each one is stored
Next
How this permission model adjudicates when nobody is watching.
