---
name: plan-mode-reference
description: CC plan mode — read-only planning phase before implementation, with explicit user approval gate.
layer: reference
cc_feature: plan-mode
source: https://docs.claude.com/en/docs/claude-code/plan-mode
concept: planning-before-execution
last_verified: 2026-04-18
ngram_overlap_score: null
review_status: approved
---

# Plan Mode — Reference

Plan mode is a built-in state where Claude operates read-only and
produces an implementation plan instead of executing it. The user
reviews the plan, then either approves it to transition to
implementation or iterates.

## State machine

1. **Plan mode entered** — user triggers it (Shift+Tab twice, `/plan`,
   or harness-initiated) or Claude calls `EnterPlanMode`.
2. **Read-only operation** — Claude can read files, search, run
   analysis. Writes, edits, and commits are blocked by the harness.
3. **Plan produced** — Claude presents a plan via `ExitPlanMode` or
   equivalent.
4. **User reviews** — accepts, rejects, or iterates.
5. **Exit** — on acceptance, mode returns to normal (edits allowed).

## What plan mode guarantees

- No writes during the plan phase. Even if Claude tries, the harness
  denies write tools.
- A structured handoff: the plan is a message the user sees before
  anything happens.

## What plan mode does not guarantee

- Plan quality. Plan mode is a *gate*, not a *reviewer*. A bad plan
  still passes if the user approves it.
- Scope locking. After exit, Claude can do whatever the new prompts
  ask — plan mode is a phase, not a contract.

## When to opt into plan mode

- Tasks touching multiple files or modules where the order and file
  list matter.
- Refactors where the first wrong edit is expensive to undo.
- Unfamiliar codebases where planning surfaces missing context.

## When to skip plan mode

- Single-file trivial changes.
- Tasks already specified by a detailed plan from another tool
  (e.g., an `ultraplan-local` plan.md) — planning twice is waste.

## Relationship to /ultra* planning

- `/ultraplan-local` produces a *plan artifact* that outlives the
  session. Plan mode produces an *in-conversation plan* that does not
  survive `/clear`.
- They compose: use plan mode to sketch at session start, then run
  `/ultraplan-local` to get the durable, reviewable, machine-readable
  plan with manifests.
