[FEATURE] Per-call timeout override for AskUserQuestion (not just the global askUserQuestionTimeout setting)

Status Open
Reported on v2.1.200
Maintainer reply None cached
Activity 0 comments · opened Jul 24, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet (closest matches are #62657, which asks for configurable timeouts in general, and #61337, the closed bug this indirectly caused; neither proposes a per-call parameter)
  • [x] This is a single feature request

Problem Statement

askUserQuestionTimeout only works as a global, user-level setting in ~/.claude/settings.json. A single AskUserQuestion call can't ask for its own timeout: whatever you set applies to every question in the session, and to every session after it, until you change the setting back.

That's a problem for anything that needs exactly one bounded prompt. Say a skill wants to ask "proceed or stop?" once, at the start of an unattended /goal run, and auto-continue after 5 minutes if nobody answers. Turning on askUserQuestionTimeout globally just to get that one prompt to time out means every other question in the session, and every question in every future project, times out the same way, including ones where a snap 5-minute default is the wrong call, like an architecture decision that deserves a real answer.

This is the same root issue as #61337 (closed): AskUserQuestion can block a /goal session indefinitely unless the user already turned on the global timeout before the blocking question showed up. There's no way for the call itself to request or guarantee that.

Proposed Solution

Add an optional per-call field to the AskUserQuestion tool schema, something like timeoutSeconds, that:

  • Overrides askUserQuestionTimeout for that one call.
  • Falls back to the user's global setting (or "never") when left out.
  • Lets a skill make one disclosed, scoped request, like "this question auto-continues with the first option after 5 minutes," instead of quietly changing a setting that outlives the session.

Alternative Solutions

Setting askUserQuestionTimeout globally before the call and resetting it after works, but it's a race: the harness could read the setting for an unrelated question mid-session, and it leaves the user's persistent config touched by something they didn't ask to change.

Priority

Medium - Would be very helpful

Feature Category

Configuration and settings

Use Case Example

  1. A skill runs an unattended, multi-hour session under /goal.
  2. At the start, it needs to ask the owner "proceed with the default retry ceiling, or stop and restart with a longer one?"
  3. With a per-call timeout, the skill asks once, waits 5 minutes, and proceeds with the recommended option if the owner already stepped away, without changing the timeout behavior for any other question in the session.

Additional Context

Related: #62657 (wants different timeouts for different question types), #73621 and #73986 (confusion from the opt-in default introduced in 2.1.200), #30740 (the original ask, closed before the global setting existed).

Version: 2.1.219, macOS.

View original on GitHub ↗