AskUserQuestion auto-submits without waiting for user input in skill/command context
Bug: AskUserQuestion auto-submits without waiting for user input in skill/command context
Environment
- Claude Code version: 2.1.63
- OS: macOS (Darwin 25.2.0)
- Model: Opus 4.6 (Claude Max)
- Shell: zsh
Summary
AskUserQuestion tool calls auto-submit immediately with empty responses when invoked from within a custom command/skill (via /command-name). The tool works correctly in normal conversation — it renders the interactive UI and blocks for user input. But when the same tool is called inside a command, it returns instantly without displaying the question to the user.
Regression
This was working correctly on 2/27/2026. Broke on 2/28/2026. Same version (2.1.63), same files, same projects.
Reproduction Steps
Working case (normal conversation):
- Open Claude Code
- Type: "Ask me 3 questions about my favorite food using AskUserQuestion"
- Result: Questions render with interactive multi-select UI, Claude waits for input
Broken case (command context):
- Create a minimal command file at
.claude/commands/test-ask.md:
---
description: Test AskUserQuestion in command context
allowed-tools: AskUserQuestion
---
Ask the user what their favorite color is using AskUserQuestion with options: Red, Blue, Green.
Then output their answer.
- Run
/test-ask - Expected: Question renders, Claude waits for user to select an option
- Actual: "User answered Claude's questions:" appears with empty response, Claude immediately continues without waiting
Evidence from real commands
Multiple custom commands affected — all exhibit the same behavior:
# /plan-feature output (truncated):
⏺ User answered Claude's questions:
⎿
⏺ Got it — Medium size, P1 priority, Beta rollout...
⏺ User answered Claude's questions:
⎿
⏺ Round 2: Visual Identity & Professionalism
⏺ User answered Claude's questions:
⎿
Every AskUserQuestion call returns empty and Claude proceeds as if the user answered. This happens for:
- Commands with explicit
Ask using AskUserQuestion:formatting with structured options - Commands with bullet-point questions and a header instruction to use AskUserQuestion
- Both custom commands and commands from the official plugin system
What I've ruled out
| Hypothesis | Test | Result |
|---|---|---|
| Custom command file regression | Diffed all command files against last-known-working state | No relevant changes to question-asking logic |
| Plugin interference (custom matt-toolkit plugin with Stop/SessionStart hooks) | Disabled plugin, retested | Bug persists with plugin disabled |
| Settings/permissions issue | Reviewed global and project settings.json | No AskUserQuestion-related entries |
| PreToolUse hook interference | Hook only matches Bash tool, only active during autonomous loops | Not relevant |
| Project-specific issue | Reproduced across 3 different projects (claude-toolkit, joyride-website, cyoa) | Bug is global |
Impact
This breaks any command/skill that relies on interactive discovery or user input. For our toolkit, this makes /plan-feature and /research-feature completely unusable — they speed through 8-10 rounds of questions without collecting any user input, then generate specs based on empty answers.
13 Comments
Found 2 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
Additional Forensic Evidence: TimescaleDB-Captured Timing Data
Environment: Claude Code v2.1.63, macOS Darwin 24.6.0, 2026-02-28
Context
We captured this session via an observability pipeline (Claude Code hooks → RabbitMQ → TimescaleDB) which gives us exact Pre/Post timing pairs for every tool call in the session.
Session ID:
db5de0bb-bf2d-4cfa-a90e-7b2e87a42d7d(714 events total)Evidence: All interactive tools auto-resolve in ~100ms
Every
AskUserQuestion,EnterPlanMode, andExitPlanModecall resolved without user presentation:| Tool | PreToolUse → PostToolUse Delta | Human Possible? |
|------|-------------------------------|-----------------|
| AskUserQuestion #1 | ~99ms | No |
| AskUserQuestion #2 | ~108ms | No |
| AskUserQuestion #3 | ~125ms | No |
| AskUserQuestion #4 | ~102ms | No |
| AskUserQuestion #5 | ~111ms | No |
| EnterPlanMode | ~104ms | No |
| ExitPlanMode | ~104ms | No |
For comparison, normal tool calls (Read, Grep, Agent) in the same session took 200ms-30s depending on complexity. The ~100ms resolution time for interactive tools is consistent with synchronous auto-completion without UI rendering.
Root Cause Confirmation
This matches the root cause identified in #29547: the permission evaluator (
Xv9) early-returns{behavior: "allow"}when a skill'sallowed-toolsincludesAskUserQuestion, bypassing therequiresUserInteraction()guard.Our plugin's command files (
explore.md,plan.md) includeAskUserQuestionin theirallowed-toolslist because the workflows use it for gateway navigation. This triggers the early-return path.Reproduction
AskUserQuestioninallowed-toolsAskUserQuestionImpact
This breaks any plugin workflow that uses interactive gates — approval gateways, user preference questions, confirmation dialogs. The tool silently returns empty answers, making the workflow appear to "skip" user interaction entirely.
Additional confirmation — v2.1.63, macOS, Opus 4.6
Same behavior observed today (2026-03-02). AskUserQuestion intermittently auto-resolves with empty answers when called after
Skill()invocations in custom command/skill workflows.Intermittent pattern in single session:
UserPromptSubmitorPreToolUse(AskUserQuestion)— confirmed via settings inspectionEnvironment: Claude Code 2.1.63, macOS Darwin 25.2.0, zsh, Opus 4.6
Additional data point: Linux + Agent-spawned context
Environment
Scenario
Custom skill (
/gsd:plan-phase) spawns a subagent (via Agent tool withsubagent_type="gsd-planner"), which callsAskUserQuestionto gather implementation decisions before writing a plan.Flow: Skill invocation → Agent tool spawn → AskUserQuestion inside agent → empty answer returned
What I tested
| Permission mode | Result |
|---|---|
| Default (normal prompts) | Empty answers, no UI |
|
--allowedTools Edit,Write,...| Empty answers, no UI ||
--dangerously-skip-permissions| Empty answers, no UI |All three modes produce the same result:
"User answered Claude's questions:"with blank content. Claude proceeds as if the user answered and generates output based on nothing.Screenshot
The terminal shows the agent working through research, then hitting AskUserQuestion calls that all auto-complete with empty responses:
Impact
This completely breaks any skill/command workflow that uses interactive discovery via AskUserQuestion. In our case, the
/gsd:plan-phaseskill becomes unusable — it's supposed to ask 4-5 clarifying questions about the implementation approach before generating a plan, but instead skips all user input and produces plans based on empty context.Notes
Additional data point: WSL2 + skill workflows
Environment
Scenario
Custom skill loaded via Skill tool, then called AskUserQuestion 11 times in sequence for an interactive discussion workflow. All 11 calls auto-resolved with empty answers.
Evidence
Every single AskUserQuestion returned:
"User has answered your questions: . You can now continue with the user's answers in mind."
The model then fabricated plausible answers for all 11 questions (picking "Recommended" options or first choices) and produced an entire document of decisions the user never made. The user only discovered the problem after the workflow completed and committed artifacts.
Impact
This is particularly dangerous for interactive discovery/discussion workflows where the model is instructed to ask multiple sequential questions. Unlike a single skipped question (which might be noticed), a long chain of auto-resolved questions produces a complete-looking output that appears legitimate — the user has no signal that their input was never collected until they review the final artifact.
Workaround implemented
Added defensive instructions to skill workflow prompts: after each AskUserQuestion call, verify the result contains actual option labels. If empty, fall back to presenting options as a numbered plain-text list and asking the user to type their choice. This
ensures the discussion works even when the tool misbehaves.
Confirms
The same issue in Claude Code 2.1.66.
The same issue in Claude Code 2.1.68.
When is this being fixed?
no, still in place, but has been addressed here
What does that have to do with claude code that's not even part of it?
just found this reference across all duplicates for this issue, that's all. thought it might be helpful for them
This should be fixed on
2.1.69.This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.