Plan mode: ExitPlanMode has no way to request a narrow, scoped exception without triggering full-plan approval
CLAUDE GENERATED
Summary
While using EnterPlanMode for a multi-step implementation plan, a need arose mid-planning for a small, narrowly-scoped write outside the single plan file that plan mode permits editing (a temporary scratch/research file, ~~unrelated~~ fundamental to the plan's actual feature work, needed so the user could test something live before the real plan could be finalized).
ExitPlanMode's only contract is "present the current plan for full approval, then lift the read-only restriction." There is no way to ask for a narrow, scoped exception (e.g. "let me write this one unrelated file") without it being interpreted as "approve the whole plan and begin full implementation." This is a real gap: plan mode's read-only restriction is otherwise correct and useful, but it has no escape hatch for a legitimate, small, out-of-scope write that doesn't represent the plan being approved.
What happened as a result
Because the tool's contract didn't match the actual need, calling ExitPlanMode for this narrow purpose was (correctly) rejected by the user, since it ~~looked like~~ was a request to approve an unfinished plan. The assistant then repeated the same ExitPlanMode call multiple times with only superficial rewording in the surrounding chat text, rather than recognizing that the tool itself didn't fit the goal and switching approaches (e.g. just asking in plain chat, with no tool call, whether the user would allow an out-of-band file write). This is a separate model-behavior failure (repeating a denied action without adjusting), but it was made more likely by there being no well-fitting tool for the actual intent - the model kept reaching for the only "leave read-only mode" tool available, even though its semantics didn't match.
Suggestion
Either:
- Give
ExitPlanMode(or a sibling tool) a way to request a scoped, out-of-plan write while remaining in plan mode for everything else, or - Make it clearer in the tool's own description/contract that it cannot be used for narrow exceptions, so the model is less likely to reach for it in this situation at all, and instead defaults to asking in plain conversation (which requires no tool/permission ceremony) when a need falls outside what plan mode's single editable file allows.
Separately, (2) above also points at a general gap: a denied tool call should prompt the model to reconsider whether the tool is the right fit at all, not just reword the same call - but that's a model-behavior issue more than a plan-mode-specific one, noted here for context since it compounded this particular gap.
USER GENERATED
<img width="696" height="311" alt="Image" src="https://github.com/user-attachments/assets/19fdbe78-e4d3-4d80-87ff-e61b1ff1d447" />
There are three options presented, none of which indicate a way to leave Plan Mode by denying a plan that is not appropriate for execution. Using the free form entry does not appear have any capability to exit Plan Mode despite explicit instruction to do so.