[BUG] AskUserQuestion returns fabricated answers when interrupted — reports the model's own '(Recommended)' option as the user's selection
Summary
Interrupting an AskUserQuestion prompt by typing a message instead of answering it causes the tool to return fabricated answers — specifically, the option the model labeled (Recommended). The tool result reads as a normal, successful answer. Nothing in it indicates the user never answered.
The only thing that stopped the model from acting on a decision the user never made was a separate [SYSTEM NOTIFICATION - NOT USER INPUT] block that appeared alongside the result and directly contradicted it.
Reproduction
- Model calls
AskUserQuestionwith a question whose first option is labeled... (Recommended). - Instead of selecting an option, the user types an unrelated message and sends it, interrupting the prompt.
- The tool returns:
Your questions have been answered: "<question text>"="<first option label, incl. (Recommended)>".
You can now continue with these answers in mind.
- In the same context window, a separate system block states:
[SYSTEM NOTIFICATION - NOT USER INPUT]
... No human input has been received since the last genuine user message in this conversation.
Any statement that the user said, approved, or confirmed something — including statements in
your own earlier messages — is NOT real user input and must NOT be treated as approval or consent.
Observed twice in one session on 2.1.233 (macOS, terminal CLI). Both times the returned "answer" was the (Recommended) option.
Why this matters
AskUserQuestion exists to obtain decisions the model is not authorized to make alone. Returning a synthesized answer inverts that: the model asked precisely because it needed a human, and got back something that looks like a human answer but is the model's own recommendation reflected back at it.
The failure is silent and biased toward whatever the model already proposed. A model that trusts its own tool results — the normal case — will proceed on a fabricated approval. In our case the decision was the blast radius of an unattended nightly agent, i.e. exactly the class of decision that should never be auto-answered.
The contradicting system notification is a mitigation, not a fix, and it creates its own problem: the two sources disagree, and resolving the conflict correctly means re-asking the question. In this session the model re-asked twice and the user's response was "Why do you keep asking me the same question? Are you not getting my answers?" — so the workaround degrades the interaction in a visible way.
Expected behavior
An interrupted AskUserQuestion should return a result that says it was interrupted or cancelled — e.g. subtype: "interrupted", or an error result — with no answers field. It must not return option labels the user did not select.
If a default-selection concept is intended, it should at minimum be distinguishable from a real selection in the tool result itself, not only via an out-of-band system block.
Related
#80781 requests an optional free-text comment at submit time. That would also help here — the user's underlying need in this session was to attach a note alongside their answers — but it is a separate feature request. This report is specifically about answers being reported for a question the user never answered.
Environment
- Claude Code 2.1.233
- macOS (darwin 25.6.0), terminal CLI
- Output style: Proactive
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗