Issue 00 · Autumn 2026日本語 · RSS
AgentKoji

Claude Code Plan Mode: Plan Before It Edits

In plan mode, Claude doesn't edit your source until you approve the plan. How to enter and leave it, the three approval options, and when to skip it.

TL;DR

  • Plan mode lets Claude read files, research and propose a plan without editing source until you approve it.
  • Enter with Shift+Tab (default → acceptEdits → plan), a /plan prefix, or claude --permission-mode plan; set defaultMode to plan to start there every time.
  • The VS Code extension doesn't read defaultMode; set claudeCode.initialPermissionMode to plan instead.

Plan mode lets Claude read files, research, and propose a plan without editing your source. If Claude has ever rewritten code before you were ready, start larger changes here. This guide covers how to enter and leave plan mode, what it can and can’t do, the path from plan to implementation, when to use it and when not to, and model choice. In our test environment (macOS, Claude Code 2.1.304 on 2026-10-20, and 2.1.305 on 2026-10-21) we only checked the values in claude --help. We did not try it in an interactive session.

Entering and leaving plan mode

There are three ways in:

If the session started in auto, the first Shift+Tab goes back to default, then the cycle above continues. To leave without approving a plan, press Shift+Tab again.

Source: https://code.claude.com/docs/en/permission-modes (checked 2026-10-21)

In claude --help, the --permission-mode choices are acceptEdits, auto, bypassPermissions, manual, dontAsk, and plan.

To start a project’s sessions in plan mode every time, set defaultMode to plan in .claude/settings.json. The VS Code extension doesn’t read that value, so set claudeCode.initialPermissionMode to plan in your VS Code user settings instead (same source). For how to write defaultMode, see Claude Code settings.json Permissions: A Cheat Sheet.

What it can and can’t do

CanCan’t
Read filesEdit source (until you approve the plan)
Run shell commands to exploreRun commands beyond the read-only set without asking
Answer questions and write the planLet a PreToolUse hook’s allow push an edit through

How exploration commands are handled depends on the setup. When auto mode is available and useAutoModeDuringPlan is on (the default), a classifier checks the commands and you don’t get prompts. When auto mode isn’t available, anything outside the built-in read-only commands prompts.

In plan mode, a PreToolUse hook that returns allow has no effect on a file edit or any other call that isn’t read-only. You get the same prompt, block, or approval you’d get with no hook. See Claude Code Hooks in Practice for how hooks decide.

Sources: https://code.claude.com/docs/en/permission-modes and https://code.claude.com/docs/en/permissions (checked 2026-10-21)

Explore, plan, approve, implement

Anthropic’s best practices recommend splitting work into four phases:

For a dummy todo app, the plan-mode prompt might look like this:

read src/todos and src/api, and understand how a todo is created and saved.
I want to add due dates to todos. What files need to change? Create a plan.

Source: https://code.claude.com/docs/en/best-practices (checked 2026-10-21)

When the plan is ready, Claude asks how to proceed. There are three options:

Approving leaves plan mode, and edits start in the mode you picked. To plan again, cycle back with Shift+Tab or prefix your next prompt with /plan.

Before you approve, press Ctrl+G to open the plan in your own editor and edit it directly. With showClearContextOnPlanAccept enabled, a first option appears that approves the plan and clears the planning context.

Source: https://code.claude.com/docs/en/permission-modes (checked 2026-10-21)

When to use it and when to skip it

The docs also note that plan mode adds overhead.

Use itSkip it
You’re unsure of the approachSmall fixes with a clear scope
The change spans several filesFixing a typo, adding a log line, renaming a variable
You’re changing code you don’t know wellChanges you can describe in one sentence

If you could describe the diff in one sentence, skip the plan. That’s the docs’ wording too.

Source: https://code.claude.com/docs/en/best-practices (checked 2026-10-21)

Don’t mistake the plan for the work

A plan describes what will happen. It isn’t a record of what did. After implementation, check the test results and the git diff to see how much of the plan is really done. For a setup that doesn’t take completion reports at face value, see Don’t Trust an Agent’s “Done”.

Choosing a model

Pick opusplan in /model and Claude plans with opus while in plan mode, then switches to sonnet for implementation. That puts the stronger model on reasoning and the lighter one on code generation. If your organization’s availableModels excludes the newest Opus, planning uses the newest permitted Opus.

Source: https://code.claude.com/docs/en/model-config (checked 2026-10-21)

Summary