Claude Code plan mode: how to use it and when

Claude Code plan mode makes Claude research your code and write a plan before it changes anything. You enter it with Shift+Tab, a /plan prefix or claude --permission-mode plan, and edits stay blocked until you approve the plan. Here is the exact behaviour in Claude Code 2.1.309, including the parts most tutorials get wrong.

Plan mode is one of Claude Code's six permission modes. In it, Claude reads files, runs commands to explore, and writes a plan, but does not edit your source. When the plan is ready, Claude asks how to proceed, and approving it switches the session into a mode that can edit. Everything below was checked against claude --help for version 2.1.309 and Anthropic's permission modes documentation on 23 October 2026.

How to enter plan mode

There are four ways in.

Shift+Tab during a session. It cycles the permission mode, and the status bar shows plan mode on when you get there. The order is Manual, accept edits, plan. The advice you will read everywhere is "press Shift+Tab twice", and that is right only when you start in Manual. Since version 2.1.283, interactive sessions start in auto mode, and from auto the first press goes to Manual, so you need three presses. Watch the status bar rather than counting.

A /plan prefix. Start a single prompt with /plan to plan just that request:

text
/plan add rate limiting to the upload endpoint

/plan on its own turns plan mode on, and /plan open shows the current session's plan.

At launch. Start the session in plan mode with the flag. It works with -p too:

bash
claude --permission-mode plan

As the default. To make every terminal session in a project start in plan mode, set defaultMode in that project's .claude/settings.json:

json
{
  "permissions": {
    "defaultMode": "plan"
  }
}

The VS Code extension does not read project settings for its starting mode. There, set claudeCode.initialPermissionMode to plan in your VS Code user settings instead.

What Claude can and cannot do in plan mode

ActionIn plan mode
Read files, Grep, GlobRuns
Read-only shell commands (ls, cat, git log, git diff)Runs
Other shell commandsReviewed by the auto mode classifier if auto mode is available, otherwise asks you
Edit or write your source filesBlocked until you approve the plan
Write its own plan fileRuns, under ~/.claude/plans/ by default

The shell command row is the one that surprises people. With auto mode available and the useAutoModeDuringPlan setting on, which is the default, the classifier approves or blocks each exploring command instead of asking you. Set "useAutoModeDuringPlan": false in your user or local settings if you would rather be asked about every command outside the read-only set.

Plan files go to ~/.claude/plans/ unless you set plansDirectory, for example "plansDirectory": "./plans" to keep them in the repository.

Approving the plan, and what mode comes next

When Claude finishes, it shows the plan and three choices:

  • Yes, and use auto mode. Approves the plan and switches the session to auto mode, where a classifier reviews risky actions. If auto mode is not available to you, this option reads Yes, auto-accept edits and switches to accept edits instead. If you started with bypass permissions enabled, it offers to switch to bypass mode.
  • Yes, manually approve edits. Approves the plan and switches to Manual, so each edit asks you.
  • No, keep planning. Stays in plan mode. Tell Claude what to change and it revises the plan.

Approving exits plan mode. To plan the next task, cycle back with Shift+Tab or prefix the next prompt with /plan. To leave plan mode without approving anything, press Shift+Tab again.

Edit the plan yourself

Press Ctrl+G at the approval prompt to open the plan in your default text editor. Change steps, delete the ones you do not want, save, and Claude works from your version.

Start implementation with a clean context

Planning can use a lot of context. Set "showClearContextOnPlanAccept": true in your settings and the approval menu gains a first option that approves the plan, clears the conversation, and starts implementing from the plan alone. The option shows how much context the planning used, which helps you decide.

Plan with one model, build with another: opusplan

opusplan is a model alias that still exists in 2.1.309. It uses Opus while plan mode is on and switches to Sonnet once you approve and execution starts:

bash
claude --model opusplan

You can also pick it with /model opusplan. It pairs the stronger model for design decisions with a cheaper one for the many small edits that follow. If your organisation's availableModels list excludes the newest Opus, opusplan uses the newest Opus it permits for planning.

When plan mode is worth it

Use it when a wrong first step is expensive:

  • A change that touches many files, or code you do not know yet.
  • A refactor or migration where the order of steps matters.
  • A vague request, where you want to see Claude's reading of it before it acts.
  • Long unattended runs. Approve a plan, then let auto mode carry it out, and you have agreed the scope up front.

Skip it for a one-line fix, a typo, a failing test with an obvious cause, or anything where reading the diff afterwards is faster than reading a plan first. Plan mode costs a full round of exploration and a review step; on small tasks that is overhead, not safety.

Common problems

"I can't find plan mode in the Shift+Tab cycle"

You are probably counting presses from the wrong place. From auto the cycle goes Manual, accept edits, plan, so it takes three presses. Watch the status bar for plan mode on, or skip the cycle with a /plan prefix or claude --permission-mode plan.

Stuck in plan mode

Claude keeps proposing plans and never edits. Plan mode only ends when you approve a plan or switch modes. Pick one of the two Yes options at the approval prompt, or press Shift+Tab to move to another mode. If you set defaultMode to plan, every new session starts there, which can look like being stuck; remove the setting or launch with --permission-mode auto or --permission-mode manual.

It still asks for permission in plan mode

That is expected for shell commands outside the read-only set when auto mode is not available to your session, or when useAutoModeDuringPlan is off. An explicit ask rule in your settings also prompts in every mode.

It edited files during plan mode

In an interactive terminal session started with bypass permissions available (--dangerously-skip-permissions or --allow-dangerously-skip-permissions), Claude Code does not enforce plan mode's blocks. Claude is still told not to edit, but an edit it attempts runs without asking. Start without the bypass flags when you want plan mode to hold.

defaultMode plan is ignored

In VS Code, project settings do not set the starting mode; use claudeCode.initialPermissionMode. In the terminal, check that the value is in .claude/settings.json under permissions, not at the top level.

Approving a plan from your browser or phone

A plan that waits in a terminal waits until you come back to that terminal. Termdeck runs Claude Code on your own machine and shows a finished plan as a card in a browser tab or on your phone, with a push notification if you enable them for questions and plans. The choices mirror Claude Code's: Approve and use auto mode, Approve and review edits, Start with full access, and Keep planning. Request changes sends written feedback so Claude revises the plan. Plans have no countdown; they wait as long as you need.

You can also start a chat in Plan only from the mode picker in the composer. The cards and options are described in the permissions docs, and notifications in mobile and notifications. For the rest of Claude Code's modes, rules and the skip flag, see Claude Code permissions.

Get started

One tab for every agent.

Run Claude Code, Codex, and Grok from the browser, approve tools from your phone, and review every diff.