Plan Mode is one of Claude Code's most underused features. It exists specifically for the situations where you don't want Claude to start editing immediately — you want it to investigate, propose, and let you approve a plan before any change happens. This post is the practical guide.
What Plan Mode is
Plan Mode is one of Claude Code's permission modes. When active, Claude is restricted to read-only tools โ it can read files, search, grep, run analysis commands โ but cannot write files, make commits, or execute commands that change state.
The output is a plan: a structured proposal for what Claude would do, broken into steps, with reasoning, file references, and assumptions called out explicitly. You read the plan, refine it via conversation, and only switch to edit mode when you're satisfied with the approach.
Official documentation: code.claude.com/docs/en/permission-modes.
Permission modes context
Claude Code has multiple permission modes that control what the agent can do without asking:
- Default โ Claude asks before destructive actions but freely reads, edits, and runs commands.
- Auto-accept โ Claude proceeds without prompting (use carefully; convenient for trusted long sessions).
- Plan Mode โ read-only; produces a plan instead of changes.
Switch modes with keyboard shortcuts or slash commands inside Claude Code (current shortcuts and exact command shown in the official docs and in /help).
Plan mode vs default agent mode
| Dimension | Default Agent | Plan Mode |
|---|---|---|
| Can write files | Yes (asks first) | No |
| Can run commands | Yes | Read-only commands only |
| Output | Changes made | A plan for review |
| Speed | Fast โ does the work | Slower โ investigates carefully |
| Best for | Routine, well-scoped tasks | Complex, uncertain, risky changes |
When to use Plan Mode
- Multi-file refactors where you want to see the scope before any change.
- Architectural decisions โ adding a new module, restructuring directories.
- Migrations โ moving from one framework to another, database schema changes.
- Production-adjacent work โ changes that will hit live users or paying customers.
- Unfamiliar codebases โ when Claude needs to understand the project before suggesting changes.
- Hot-button changes โ auth, payments, security, anything with serious blast radius.
- Documentation of intent โ when you want a written record of what was planned and why.
- Working with a less-trusted model โ using a cheaper / faster model for the plan, then a stronger one for execution.
The workflow
- Activate Plan Mode. Use the shortcut or slash command (per current docs).
- State the goal clearly. Plan mode rewards a well-formed prompt. "Migrate all NavigationView usage to NavigationStack across the iOS project, identifying any cases where the migration isn't straightforward."
- Let Claude investigate. It reads files, searches the codebase, looks at tests, builds a mental model.
- Read the plan. Steps, file references, edge cases, open questions. Look specifically at the assumptions Claude makes โ those are where mistakes happen.
- Refine. "Step 4 should also update the unit tests in Tests/." "Skip the legacy iOS 14 fallback file." Claude updates the plan.
- Approve and switch modes. Once the plan reflects what you want, switch back to default agent mode and tell Claude to execute it.
- Execute step-by-step or all at once based on how comfortable you are with the plan.
Worked examples
1. iOS deprecation migration
Goal: "Plan a migration from NavigationView to NavigationStack across the project."
Claude in Plan Mode greps the codebase, finds every usage, identifies which ones are inside conditionals (iOS-version checks), notes test coverage, calls out which files might need manual review. The output is a 12-step plan. You spot one step that's wrong, fix it. Execute. Saves an hour vs Claude starting blindly and discovering issues mid-stream.
2. Backend schema change
Goal: "Plan adding a 'subscription_tier' field to the users table without breaking existing API consumers."
Plan Mode reads the schema, finds all queries that select from users, identifies migration safety (nullable column? default? backfill strategy?), notes which API endpoints will need to update, calls out the iOS client compatibility concern. Plan is reviewed, refined, executed safely.
3. Production deployment
Goal: "Plan deploying v1.3 of RDR2 Companion to production: backend update, App Store binary, release notes."
Plan Mode enumerates each pre-flight check, the exact deployment commands, the validation steps, the rollback procedure. You read it before any of it runs. A bad deploy plan caught at this stage costs nothing; a bad deploy in production costs hours.
Tips for getting the most from Plan Mode
- Start the conversation in Plan Mode for risky work โ don't switch into it after Claude has started.
- Ask for assumptions explicitly. "What assumptions does this plan make? Where could it be wrong?"
- Ask for the rollback plan as part of the plan itself.
- Use Opus for planning, Sonnet for execution โ Opus produces stronger plans; Sonnet executes them faster and cheaper.
- Save the plan to a file before execution โ useful documentation and a paper trail.
- Iterate the plan with diff thinking โ "Compare two approaches and recommend one with reasoning."
When NOT to use Plan Mode
- Quick exploratory work. "Add a print statement to debug this." Overkill.
- Trivial single-file edits. Just do it.
- Tight feedback loops where speed of iteration matters more than precision.
- Generative work like brainstorming or writing โ Plan Mode is for technical change management.
Use Plan Mode strategically โ for the 10-20% of tasks where a wrong move costs more than the time to make a plan. The other 80-90%, run the default agent.
See: Claude at Maximum Efficiency, Agentic AI in Claude, Anthropic GitHub Repos.
- code.claude.com/docs/en/permission-modes โ official docs
- code.claude.com/docs/en/overview โ Claude Code overview