§03 · Tools & Environment

Plan mode

Also called Planning mode · Read-only mode · Ask mode

A read-only agent mode: the agent may search and read, but must propose a plan for your approval before it edits anything.

Plan mode is an agent mode in which the agent can read files, search the codebase and run harmless commands, but cannot edit or execute anything that changes state. Its job is to come back with a plan: which files it will touch, in what order, what it is unsure about, and how it will verify the result. You read the plan, correct it, and only then switch to an editing mode. The permission mode underneath is 'ask for everything that mutates', with a system-prompt nudge to investigate first.

A wrong plan is cheap. A wrong implementation is not: by the time you notice, the agent has changed fifteen files, the tests are green for the wrong reasons, and unpicking it costs more than starting over. Plan mode moves the correction to the point where it is a sentence instead of a revert. It also surfaces the assumptions the agent would otherwise silently make about your codebase, which is where most AFK runs go wrong.

Use it for anything bigger than a one-file change, and pair it with a written spec so the plan has something to be checked against. A plan that survives a round of grilling becomes a good handoff artifact: save it to a file, start a fresh session, and let that session execute with the sharp end of its context window free for the work. Skip plan mode for trivial edits; the overhead isn't worth it there.

In the tools
  • Claude CodeShift+Tab into plan mode, or the agent can enter it itself when a task looks large; leaving the mode asks you to approve the plan.
  • CursorThe Plan option in the agent panel drafts a step list you can edit before running.
  • CodexThere is no single plan toggle; ask for a plan explicitly, or use a read-only sandbox for the same effect.
In conversation

Before you let it loose on the auth refactor, what did the plan say?

Plan mode found that sessions are also written by the cron job, which I'd forgotten. It wants to change both. Good catch, approved.

That's the sort of thing you'd only have found after the tests broke.

Related terms
Learn it in the school
Words are the easy part

Course 01 puts every one of these terms to work: you install Claude Code, run the loop, and ship a real project — permission modes, compaction, hooks and all.

Start Course 01 →