Claude Code plan mode: turn it on, exit it, and approve a plan
How to turn plan mode on
Press Shift+Tab during a session until the status bar reads ⏸ plan mode on. The cycle runs
manual, accept edits, plan, and back to manual — two presses from manual mode, three if the session
started in auto mode, which recent Claude Code versions use as their starting mode. For a single request, prefix the prompt with /plan
instead. To start a whole session in plan mode, launch it that way:
claude --permission-mode plan
In plan mode Claude reads files, runs commands to explore and writes a plan, but does not edit your source until you approve it.
How to leave plan mode
There are two ways out. Press Shift+Tab again to leave without approving anything. Or approve the
plan Claude presents, which exits plan mode and starts the edits. When the plan is ready, Claude
offers three choices: approve and continue in auto mode (shown as auto-accept edits if auto mode
isn't available to you), approve but review each edit yourself, or keep planning and say what should
change. Press Ctrl+G at that prompt to open the plan in your text editor and change it directly
before Claude proceeds.
Making it the default
To have a project's terminal sessions start in plan mode, set permissions.defaultMode to "plan"
in the project's .claude/settings.json. The VS Code extension doesn't read that project setting for its
starting mode; set claudeCode.initialPermissionMode to plan in your VS Code user settings
instead. In the JetBrains plugin, which runs Claude Code in the IDE terminal, the same Shift+Tab
cycle applies.
Plan mode outside the terminal
In the desktop app's Code tab, plan mode is in the mode selector next to the send button. In the VS
Code extension, click the mode indicator at the bottom of the prompt box and choose Plan. On
claude.ai/code and in the mobile app it sits in the mode dropdown beside the prompt box, for cloud
sessions and for Remote Control sessions on your own machine. One behaviour differs from the other
modes: in the VS Code extension and the desktop app, a mode you pick is normally remembered, but
picking Plan applies to the current conversation only. And the same --permission-mode plan flag
works with -p for non-interactive runs.
A cost lever hiding in plan mode
Claude Code's opusplan model alias uses Opus while you are in plan mode and switches to Sonnet
once you approve and execution begins. The reasoning-heavy part of the task — working out the
approach — gets the stronger model, and the typing-heavy part runs on the cheaper one. For long
implementation sessions that is often a better trade than running everything on either model; the
model picker and effort estimator
show what the two halves cost.
When plan mode is worth the extra step
Plan mode earns its keep on tasks where the approach could reasonably go more than one way, or where a wrong approach is expensive to undo: a refactor across many files, a schema change, anything whose correctness is easier to judge before the edits than after. Reviewing a stated plan is cheaper than reconstructing intent from a large diff, and rejecting a plan costs nothing while reverting interdependent edits can cost a lot. For a one-line fix with an obvious answer, the step is pure overhead — and forcing every task through it trains the reflexive approve-without-reading habit that defeats the point.
Reading a plan critically
Read a plan for what it will touch and in what order, not for whether it sounds reasonable in summary. A plan that names the right files but the wrong order of operations, or skips an edge case, reads fine at a skim. When most of it is right, choose to keep planning and push back on the one part you disagree with — that is faster than rejecting the whole plan and starting the investigation again.
Related
See configuring Claude Code permissions for the second checkpoint that pairs with a plan review, and Claude Code effort levels for the other setting worth deciding before a large task.
Verified 2026-09-30 against ClaudeHow facts module (src/data/facts/) — see /about/#accuracy.