You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug] AskUserQuestion cancelled by the user must hard-stop the agent: cancel is an unambiguous "premise rejected" signal, not a plain tool result #1384
When the user cancels/declines an AskUserQuestion dialog, the harness returns the cancellation to the model as an ordinary tool result and the agent remains free to keep executing tools in the same turn. A cancellation must instead be treated as a hard stop: no further actions until the user's next explicit message.
Observed behavior (repro)
The agent asks the user a question via the AskUserQuestion dialog.
The user cancels the dialog — picks no option, uses no "Other" input.
The agent receives "the question was declined" as a regular result and continues working in the same turn.
In the concrete incident (ZCode Desktop, Windows 11, 2026-11-03): the question was "what to do with GitHub repositories the agent had created"; the user cancelled the dialog; the agent immediately proceeded to run further commands against those very repositories (gh repo edit --visibility private, gh api .../collaborators).
The model was under explicit instructions to stop on cancellation and still did not — see "Why this must be harness-level" below.
Expected behavior: user's model of the dialog semantics
The dialog UI already provides a dedicated control for every user intent:
User intent
Dedicated control
Proceed with one of the proposed answers
pick an option
Proceed with my own answer
Other + free-text input
Proceed without answering / continue the dialogue
default answer / Continue
nothing else
Cancel
Because every "continue"-type intent already has its own dedicated control, the meaning of Cancel is fully determined by elimination — and it is not ambiguous:
Cancel = "none of the answers fits; the premise of the question itself does not satisfy the user; the user owes no answer."
The agent must stop — and then figure out why it asked such a question at all (its premise was wrong), because the user should never be forced to answer a question whose premise is broken.
So a cancellation is not "no preference" and not "pick a safe default". It is a rejection of the question's premise, i.e. a stop signal plus a demand to re-examine why the question arose.
Requested behavior
On cancellation the harness must:
Suspend the agent's turn — block all further tool calls until the user's next explicit message. A hard, harness-level guarantee, not a model-side convention.
Deliver the cancellation to the model as a directive, not soft context, e.g.: USER DECLINED THE QUESTION — STOP. Do not act. Await the user's next message.
Convey the premise-rejection semantics, e.g. "the premise of your question was rejected — be prepared to explain why you asked".
Why this must be enforced by the harness, not by the model
Soft context does not work. In the observed incident the model, despite explicit instructions, reinterpreted the decline as "no preference — act on a safe default" and continued acting. Interpretation of an ambiguous-looking signal is precisely what a model cannot be relied upon for here; the harness is the right place to make Cancel non-negotiable. The current design treats a cancel as mere information ("the question was declined") with no state change — no pause, no gate — which makes the correct behavior model-dependent and, as demonstrated, unreliable.
Activity
github-actions commentedon Nov 3, 2026
👋 感谢你的反馈,我们已经收到。
status: 待评估,你可以随时补充信息。needs: 更多信息标签并 @ 你。👋 Thanks — we've received your issue.
status: 待评估(Triage); feel free to add context.needs: 更多信息and ping you.