AskUserQuestion timeout causes unapproved autonomous actions + wasted billed tokens — make it configurable, default "never"

Open 💬 2 comments Opened Jul 2, 2026 by Spiritvoin

Type: safety / consent bug with direct cost impact — not a convenience request.

AskUserQuestion auto-returns after ~60s with "No response after 60s", and the model is then instructed to "proceed on best judgment." So if the user steps away for a minute, the agent starts doing work it explicitly asked to approve first. A question for the human silently expiring into autonomous action is a consent violation.

Why this matters beyond UX

  • Wasted billed tokens. The agent proceeds down a path the user never approved, then the user returns, says "no, not that," and the work is discarded. Those are tokens the customer paid for, spent on output that gets thrown away. This directly drives "Claude burns tokens / wastes my money" complaints.
  • Trust & reputation. An agent that takes unrequested actions the moment you look away reads as unsafe and unpredictable. That erodes trust in the product and fuels negative reports — a reputational cost disproportionate to how small the fix is.
  • The fix is tiny; the downside of leaving it is not. A one-line default change removes an entire class of "it did something I didn't ask for" incidents.

Repro

  1. Assistant calls AskUserQuestion to confirm scope before implementing.
  2. User steps away for ~1 minute.
  3. Tool returns "No response after 60s — proceed on best judgment."
  4. Assistant starts writing/editing code for a scope the user never approved. When the user returns and picks a different option, that work is wasted.

Ask

Make the no-response timeout configurable, "never" (wait indefinitely) up to a numeric value, with "never" as the default.

{ "askUserQuestion": { "timeout": "never" } }   // or a number of seconds: 120, 300

Users who want an auto-timeout opt in with a number; the safe default is to keep waiting. Optional env parity with existing timeout knobs (BASH_DEFAULT_TIMEOUT_MS, MCP_TIMEOUT): ASKUSER_TIMEOUT=never|<seconds>.

Please prioritize for the next release — low implementation cost, high downside (wasted paid tokens + trust erosion) if left as-is.

View original on GitHub ↗

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