Claude Code Plan Mode: The Complete Guide (2026)
Plan mode makes Claude Code show you its plan before it changes any code. You review, approve, or edit the plan, and Claude only touches files after you say yes. It's the single most important habit for beginners using Claude Code, and the fastest way to stop shipping broken refactors on autopilot.
What is plan mode in Claude Code?
Plan mode is a persistent state inside Claude Code. When it's on, every prompt you send goes through a planning step first. Claude reads the relevant files, thinks about the work, and writes a numbered plan back to you in the terminal. It will not edit files, run shell commands that change state, or commit anything until you approve the plan. The cursor waits in the prompt while you read, push back, or accept.
The plan is a plain-English document. It names the files Claude expects to change, the logic it plans to add or remove, the side effects (migrations, env vars, new dependencies), and any risks it sees. You read it, push back on anything that looks wrong, and either approve or throw it out. When you approve, Claude executes the plan step by step, still respecting the normal file and command permission prompts as it goes. If Claude hits something the plan didn't cover, it stops and asks, rather than inventing a new branch of work.
This is different from the default Claude Code behavior, which plans implicitly inside the model but starts acting right away. Default mode is faster for tiny tasks. Plan mode is safer for anything you care about. The cost of plan mode is 30 extra seconds of reading per task; the benefit is that you catch the "why is it touching that file?" moment before the file gets touched. For anyone new to Claude Code, that trade is a no-brainer.
How to enter plan mode
- Open a terminal in your project and start Claude Code by running
claude. - Press Shift + Tab once. This toggles auto-accept.
- Press Shift + Tab again. This cycles into plan mode.
- Confirm the footer now reads
plan mode on. You're in. - To exit, press Shift+Tab again to cycle back to the default state.
You can also use the /plan slash command. Typing /plan and hitting enter tells Claude to plan the next prompt only. That's useful when you want a one-off plan without flipping into full plan mode for the whole session. After the one plan runs, Claude drops back to whatever mode you were in before.
One detail that trips new users: plan mode persists until you press Shift+Tab again. If you close Claude Code and reopen it, plan mode is off by default. If you're going to spend a session on higher-risk work, toggle it on at the start and leave it on. The bottom of the terminal always shows your current mode, so you can glance at the footer any time to confirm.
When to use plan mode
Plan mode shines the moment a task has any of three properties: multi-file scope, real risk, or uncertainty about what Claude will do. If a task has one of those, turn plan mode on. If it has two or three, the answer isn't "should I?" but "obviously." Here are the five scenarios where I never skip it.
- Any change touching 3+ files. Multi-file work has the most room for quiet mistakes. A plan forces Claude to show you every file it expects to change before it writes.
- Schema or data-model changes. A bad migration can wipe data. Plan mode surfaces the migration, the rollback story, and any code paths that break.
- Authentication, payments, or security-sensitive code. If a bug here costs money or leaks data, read the plan. Every time. No exceptions.
- Refactors across directories. Renames, restructures, and architectural moves are where Claude tends to go wide. A plan keeps the blast radius contained.
- Any time you feel unsure what Claude is about to do. That feeling is the signal. Turn plan mode on, read the plan, and you'll either feel better or catch the problem before it ships.
When NOT to use plan mode
- Tiny one-file tweaks. Renaming a variable, fixing a typo, changing a single string. The planning overhead isn't worth it; just let Claude edit.
- Read-only questions about the codebase. If you're asking "what does this function do" or "where is this config loaded," Claude isn't writing anything. Plan mode adds a ceremony step with no payoff.
- Repetitive, low-risk formatting changes. Once you've seen Claude do the same formatting pass ten times, you can trust it to run without a plan for the eleventh.
A complete example walkthrough
Say you're adding an email signup to a landing page and saving the email to Supabase. Here's how a plan mode session goes end to end.
Step 1: Your prompt.
Add an email signup form to the landing page hero. Validate the email on the client, post to a new /api/waitlist endpoint, and insert the row into a Supabase waitlist table. Show a success state after submit.
Step 2: The plan Claude returns.
- Add a
WaitlistFormcomponent tosrc/components/hero/WaitlistForm.tsxwith an email input, submit button, and success state. - Mount the form inside
Hero.tsxunder the existing CTA. - Create
api/waitlist.tsas a serverless function that validates email format, initializes a Supabase client, and inserts a row into thewaitlisttable. - Add a Supabase migration that creates the
waitlisttable with columnsid,email,created_at. - Verify the
.env.examplefile listsSUPABASE_URLandSUPABASE_SERVICE_ROLE_KEY.
Step 3: What you'd approve or edit.
I'd approve steps 1, 2, and 5 as written. I'd edit step 3 to include basic rate limiting so the endpoint isn't trivially spammable. I'd edit step 4 to add a unique index on email so duplicate signups fail cleanly instead of inserting twice. Type the edits back to Claude, tell it to redraft the plan, and review the new version.
Step 4: What happens after approval.
Claude writes the component, mounts it in the hero, creates the API route, writes the migration, and updates .env.example. Every file write triggers a permission prompt the first time, so you still see what's being written as it happens. When it finishes, Claude tells you what it did and suggests the next step (usually: run the migration and test the form on localhost).
Now compare that to the no-plan-mode version. Without plan mode, I type the same prompt and Claude immediately starts writing files. Three minutes later there's a new form component, a new API route, and a migration in my repo, but the migration created a waitlisttable with no unique index and the API route has no rate limiting. Both problems are easy to fix, but only if I notice them. With plan mode, I see them in the plan and fix them before any code lands. Same prompt, same model, better outcome, because I reviewed a plan instead of reviewing a pile of diffs.
5 tips to get better plans
Once you're in plan mode consistently, the next lever is plan quality. A good plan isn't just correct; it's specific, scoped, and risk-aware. These five tips reliably turn mediocre plans into ones you can approve with confidence. For the broader habits that pair with plan mode, see Claude Code best practices.
- Write the spec before entering plan mode. A clear, written spec (even 100 words in a note) produces dramatically better plans than a vague prompt.
- Name the files you expect to change. Telling Claude "modify
Hero.tsxand createWaitlistForm.tsx" focuses the plan on the right files. - Ask Claude to call out risks in the plan. Add "list any risks or edge cases" to your prompt and Claude will surface migration issues, security concerns, and breaking changes as part of the plan.
- Reject plans that propose too many changes at once. If the plan has 12 steps, split the work. Three plans of four steps each ship more reliably than one plan of twelve.
- Verify the first file change before letting it run. After you approve, watch the first file write land and open the file yourself. If it looks wrong, stop and rethink before Claude charges through the rest of the plan.
Plan mode vs other Claude Code modes
Claude Code has three modes you cycle through with Shift+Tab. Default mode plans internally and acts right away, asking for permission on the first file write and first shell command. Auto-accept mode skips those prompts: Claude edits and runs without asking, which is fast for trusted repetitive tasks and dangerous for anything else. Plan mode makes Claude show the full plan up front and wait for approval. Default is the right middle ground; plan mode is the safe extreme; auto-accept is the aggressive extreme. Beginners should live in plan mode for a month, then graduate to default for familiar work. Auto-accept is reserved for tasks you've run a hundred times and trust completely, like running tests or formatting files on demand. If you're weighing Claude Code against other tools, see Claude Code vs Cursor.
A quick troubleshooting guide
If plan mode feels slow, the usual fix is a shorter spec and a smaller scope. Plans balloon when your prompt is vague, because Claude has to guess at the edges of the work. Name the files, define the outcome, and the plan shrinks to match. If Claude keeps proposing sprawling plans, split the task in half and prompt for the first half alone. If the plan is obviously wrong, don't tweak it: reject it, rewrite your spec, and try again. Patching bad plans usually produces worse code than rewriting the prompt.
Frequently asked questions
What is plan mode in Claude Code?
Plan mode is a Claude Code state where Claude drafts a written step-by-step plan before it changes any files. You read the plan, edit it, approve it, or reject it. Claude won't touch your code until you say yes. It's a preflight check built into the tool.
How do I turn on plan mode?
Press Shift+Tab twice inside Claude Code. The first press toggles auto-accept; the second press enters plan mode. The footer confirms with plan mode on. You can also use the /plan slash command to switch into plan mode for the next prompt.
Does plan mode cost extra?
No extra fee. You still pay for the tokens Claude uses to read files and draft the plan, and plans usually cost a little more than a one-shot prompt because the model thinks more. On net, plan mode saves money by preventing bad edits that need to be reverted and redone.
Can I edit Claude's plan before it runs?
Yes. After Claude returns a plan, you can type feedback telling it to remove a step, add a step, change the order, or scope a step down. Claude revises the plan and shows it again. You can iterate as many times as you want before approving, and nothing runs until you approve.
What's the difference between plan mode and /plan?
/plan is a slash command that asks Claude to plan the next prompt. Plan mode is a persistent state where every prompt gets planned until you toggle it off. The slash command is a one-off; plan mode is a mode. Use the slash command for single tasks and the mode for long sessions.
Should beginners always use plan mode?
For the first month, yes. Leave plan mode on while you learn how Claude Code thinks and what it tends to get wrong. Once you've watched it work a few hundred times, you'll know which tasks are safe to run without plans and which still need the review step.
From plan mode to shipping
Plan mode is the habit that keeps beginners from breaking their own projects. But a tool habit isn't a process. If you want the full workflow I use to ship real apps with Claude Code, from idea to deployed site, read learn vibe coding from scratch. It walks through the Ship Stack end to end, and plan mode is step five. Write a spec first, plan second, build third, verify fourth, ship fifth. That sequence, run reliably for three weeks, is what turned me from someone who spent months on side projects to someone who ships a new app most weekends. Plan mode is the piece that makes the sequence repeatable.