Claude Code plan mode: when to plan first and when not to

Claude Code plan mode reads your code and writes a plan, but blocks edits until you approve it. Shift+Tab gets you there; skip it for a typo fix.

Contents

Claude Code plan mode lets Claude read your code and run commands to look around, then write a plan, while every edit stays blocked until you approve it. Turn it on when the work is unfamiliar, risky or spans many files. Leave it off for small, obvious edits, where reviewing a plan costs more than the change.

For us it is a review gate, not a habit. Shift+Tab until the status bar under the prompt reads ⏸ plan mode on; press it again to leave without approving anything.

Diagram. Claude reads and explores, then writes a plan without editing anything. You decide: approve, which lets Claude edit (automatically or edit by edit), or keep planning, which sends it back to rewrite the plan. Ctrl+G opens the plan in your editor first. Read and explore files, read-only commands Write the plan nothing edited yet You decide Ctrl+G to edit it Claude edits auto, or each edit No, keep planning Approve PLAN MODE

What plan mode does, exactly#

Anthropic's permission modes page says plan mode "tells Claude to research and propose changes without making them". In its words, Claude "reads files, runs shell commands to explore, and writes a plan, but does not edit your source."

Shell commands still run while Claude plans. Which ones run without asking depends on the session:

  • With auto mode available and useAutoModeDuringPlan on (the default), a classifier reviews each command instead of prompting you.
  • Without auto mode, commands from the built-in read-only set run, and anything else asks first.

When the plan is ready, Claude shows it with three answers:

  1. Yes, and use auto mode approves and lets it run. Where auto mode isn't available, the same option reads Yes, auto-accept edits.
  2. Yes, manually approve edits approves, and you review each edit as it comes.
  3. No, keep planning keeps Claude in plan mode while you say what should change.

Ctrl+G at that prompt opens the plan in your editor, so you can change a step before Claude starts.

One exception: if you started an interactive terminal session with bypass permissions available (--dangerously-skip-permissions, for example), plan mode's blocks aren't enforced. Claude is still told to plan without editing, but an edit or command it tries runs without a prompt, apart from what your deny and ask rules catch. In claude -p runs, Agent SDK sessions and the VS Code chat panel the blocks always hold.

How to switch to plan mode#

  1. During a session, press Shift+Tab. From auto the first press goes to the default (Manual) mode, and the cycle then runs default → acceptEdits → plan.
  2. For one prompt, start it with /plan.
  3. From the start, run claude --permission-mode plan.
  4. As a project default, set defaultMode in .claude/settings.json:
json
{
  "permissions": {
    "defaultMode": "plan"
  }
}

VS Code sessions don't read the project file for their starting mode. There, set claudeCode.initialPermissionMode to plan in your user settings.

When to plan first, and when to skip it#

The work Plan first? Why
Code you don't know: a new repo, a module you've never opened, someone else's service Yes The plan lists what Claude found before it acts on it
A rename across packages, a new data model, a migration Yes A wrong assumption shows up once, in the plan, instead of in twenty diffs
Auth, payments, deletion, anything near production data Yes Rejecting a plan costs one message
A vague ask such as "make the dashboard faster" Yes It has ten readings, and the plan says which one Claude picked
A run you'll leave alone for an hour Yes You agree on the route before you walk away
A typo, a renamed variable, a test case you've already described No Planning adds a round trip, and reading the plan takes longer than the change
A prompt that already lists the steps No Plan mode reads them back to you
A question such as "where is the retry logic?" No Claude edits nothing to answer it

Planning isn't free, either. Every file Claude reads to plan goes into its context, so a plan on a big codebase can use a good share of a session before any code changes. Where those tokens go is broken down in why Claude Code uses so many tokens.

How we keep the plan and let the agent run#

A plan for a big change shouldn't live only in a chat. Once it reads right, we have Claude write it to a Markdown file next to the code: the goal, the steps in order, what "done" means for each step, and the checks to run. Then we approve, and Claude works through the file.

  • The file survives the session. Compaction, /clear or a closed chat leave it alone, and a fresh session can pick it up with "work through plan.md from step 4".
  • You can read it in your editor, change a step, and commit it with the work.
  • Independent steps can go to separate chats working in parallel, each in its own branch. Keeping those chats from colliding is the subject of running Claude Code agents in parallel.

Claude Code keeps its own plan files too, in ~/.claude/plans/ unless the plansDirectory setting points somewhere else. A file in the repo is still easier to share and review.

How Shuriken fits in#

Shuriken runs Claude Code (and 66 other agents) on your own computers, so plan mode works the way it does in the terminal. Each Claude Code chat has a mode picker, and each mode carries a one-line hint:

Mode Hint in the picker
Plan Reads and plans; changes nothing
Always ask Asks before each new tool
Accept edits Edits files without asking
Auto-approve A model approves the safe requests

The message box also has a chat mode, Default or Planning. Planning ("Plans first and asks before it changes anything") starts the chat in the agent's own plan mode, for Claude Code and the other agents that have one, and after the plan the chat carries on in the mode you were in.

When Claude calls its ExitPlanMode tool to ask to run the plan, the chat shows the plan with Approve, Keep planning and Reject, and you get a notification on your computer that a chat needs you. Keep planning asks "What should change?", and Claude reads your answer and goes on planning in the same turn.

The part we use most: you don't have to wait for the plan to finish to say what comes next. Type the follow-ups ("then add tests for the edge cases", "then update the changelog") while it plans. They wait in the chat's queue and run in order once the plan is approved and done. Every chat also gets its own branch and git worktree, so two plans can run side by side without touching each other's files; the parallel agents page shows how.

If you want plan, approve and queue across every project in one window, download Shuriken.

Sources

  1. Permission modes (Claude Code docs) (accessed 22 October 2026)
  2. Configure permissions (Claude Code docs) (accessed 22 October 2026)
  3. Settings reference (Claude Code docs) (accessed 22 October 2026)

Frequently asked questions

How do I turn on plan mode in Claude Code?

Press Shift+Tab until the status bar reads plan mode on, start a single prompt with /plan, or launch it with claude --permission-mode plan.

Can Claude edit files in plan mode?

No. It can read files and run commands to explore, but every edit waits until you pick one of the Yes answers under the plan. The exception is a terminal session started with bypass permissions available: there plan mode only asks Claude not to edit.

How do I make plan mode the default for a project?

Put defaultMode: plan under permissions in the project's .claude/settings.json. The VS Code extension ignores that file for its starting mode and reads claudeCode.initialPermissionMode from your user settings instead.

Can I edit the plan before Claude starts?

Yes. Press Ctrl+G when the plan is shown to open it in your editor, change it, and Claude works from your version.

Free tools