Plan mode: ExitPlanMode approval prompt appears before user has seen the plan content

Resolved 💬 6 comments Opened Feb 24, 2026 by rolfedh Closed Apr 11, 2026

Description

When Claude Code writes a plan to a file and calls ExitPlanMode, the user is presented with an approval prompt before they have had a chance to read the plan. The plan lives in a file (e.g., .claude/plans/majestic-herding-abelson.md), but the approval prompt appears inline in the chat — creating a disconnect where the user is asked to approve something they haven't seen.

Steps to reproduce

  1. Ask Claude Code to plan a multi-step implementation task
  2. Claude enters plan mode, explores the codebase, and writes the plan to a .claude/plans/ file
  3. Claude calls ExitPlanMode
  4. The user sees an approval prompt with options — one of which says something like "review and approve"
  5. The user selects it, thinking they are choosing to review the plan
  6. Claude interprets this as approval and immediately starts writing code

Expected behavior

The user should be able to read the plan before being asked to approve it. Either:

  • The plan content should be displayed inline in the chat before the approval prompt appears
  • The agent should open the plan file in the IDE before triggering the approval step
  • The approval prompt options should be unambiguous (e.g., "I've read the plan — start coding" vs. "Let me review the plan first")

Actual behavior

  • The plan is written to a file the user hasn't opened
  • The approval prompt appears immediately
  • The option text ("review and approve") is ambiguous — it reads as "I want to review" rather than "I have reviewed and I approve"
  • Selecting it triggers implementation, which the user did not intend

Impact

This likely affects any user who isn't already familiar with the plan mode workflow. A reasonable user interprets "review and approve" as "show me what to review" — not "I confirm I've already reviewed this."

Environment

  • Claude Code VS Code extension
  • Claude Opus 4.6

View original on GitHub ↗

This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗