Skip to main content
9p asks before it changes anything. The permission mode decides how often.

Modes

Change mid-session:

default

The starting mode. Reading, searching, and globbing happen freely; every write and every command prompts:

accept-edits

File edits stop prompting; commands still ask. This is the mode to switch to once you’ve seen a plan you agree with and just want it executed.

plan

Read-only. 9p investigates and proposes but cannot touch the working tree. Use it for “what would you change and why”, and note that plan mode also tells the router to treat the turn as complex, so you get a stronger model.

bypass

No prompts at all. Appropriate for a scratch repo or a container, not for anything you care about.

Guardrails that always apply

These hold in every mode, including bypass:
  • Read before write. write and edit refuse to touch a file the agent hasn’t read in this session, so it can’t clobber content it never saw.
  • Sub-agent spawning is gated. Starting a sub-agent is treated as an exec-class action, because it’s an agent that runs unattended.
  • Sub-agent depth is capped at 2. Sub-agents cannot recurse indefinitely.
  • Explore sub-agents get read-only tools. They physically cannot edit.

Practical advice

/mode plan, ask for the approach, read it, then switch to accept-edits and let it run. Catching a wrong plan costs one turn; catching it after 30 file edits costs a lot more.
accept-edits is a good default for real work precisely because edits are reviewable in git while commands are not.
Commit before a big task. The permission prompts reduce surprises; a clean working tree is what actually lets you undo one.