ExitPlanMode proceeds without waiting for user to select execution mode

Resolved 💬 3 comments Opened Apr 16, 2026 by de3z1e Closed Apr 20, 2026

Bug Description

After ExitPlanMode completes, the model presents a "How would you like to proceed?" prompt with options (auto-accept edits / manually approve edits / type feedback), but the turn has already finished — the user's next input goes to a new turn rather than being interpreted as a selection from that menu. The selection prompt is purely cosmetic since the model already exited plan mode and proceeded in the same turn.

Expected Behavior

The user should be able to choose between auto-accept edits, manual approval, or providing feedback before execution begins.

Steps to Reproduce

  1. Enter plan mode (model calls EnterPlanMode)
  2. Model explores codebase and writes a plan file
  3. Model calls ExitPlanMode
  4. ExitPlanMode returns "User has approved exiting plan mode. You can now proceed."
  5. Model outputs the selection prompt in the same turn — but the turn is already complete
  6. User's next input is treated as a new message, not a selection from the prompt

Screenshot

The screenshot below shows the selection prompt rendered at the end of the turn, followed by "Crunched for 7m 22s" — indicating the model had already finished its turn. The user never got a chance to select an option.

<img width="625" height="232" alt="Image" src="https://github.com/user-attachments/assets/b2d12a42-2c12-48b5-9b1b-2278898379c4" />

Environment

  • Claude Code CLI (v2.1.109)
  • Model: claude-opus-4-6 (1M context)
  • macOS Darwin 25.4.0

Additional Context

The ExitPlanMode tool itself works correctly — it exits plan mode. The issue is that there's no mechanism for the model to pause mid-turn and wait for user input after presenting execution mode options. The CLAUDE.md instruction to present the selection prompt creates a dead-end UX where the prompt renders but can't actually be interacted with.

View original on GitHub ↗

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