AskUserQuestion auto-submits with empty response when called from custom commands/skills

Status Fixed / completed
Reported on v2.1.63
Maintainer reply ✓ Yes — blois
Activity 4 comments · opened Feb 28, 2026 · closed Mar 5, 2026
💡 Likely answer: A maintainer (blois, collaborator) responded on this thread — see the highlighted reply below.

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 (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 from 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 machine, same files.

Minimal Reproduction

  1. Create .claude/commands/test-ask.md:
---
description: Minimal AskUserQuestion test
allowed-tools: AskUserQuestion
---

Ask the user this question using AskUserQuestion:

Question: "Pick a color"
Header: "Color"
Options:
- "Red" — A warm color
- "Blue" — A cool color
- "Green" — A nature color

After the user answers, output: "You picked: [their answer]"
  1. Start a fresh Claude Code session
  2. Run /test-ask
  3. Expected: Color picker UI renders, Claude waits for user to select an option
  4. Actual: "User answered Claude's questions:" appears with an empty response, Claude immediately continues without waiting

Output

❯ /test-ask

⏺ User answered Claude's questions:
  ⎿  

⏺ It looks like the answer wasn't captured in the response. Could you tell me which
   color you picked — Red, Blue, or Green?

The user never sees the question or gets a chance to answer.

Working case (normal conversation)

In the same session, typing "Ask me to pick a color using AskUserQuestion" works correctly — the interactive UI renders and Claude waits for input.

What I've ruled out

| Hypothesis | Test | Result |
|---|---|---|
| Custom command content causing issue | Created brand-new minimal test-ask.md (above) with no dependencies | Bug reproduces with minimal command |
| Plugin interference | Disabled all custom plugins, retested | Bug persists |
| Project-specific issue | Reproduced across 4 different projects | Bug is global |
| Settings/permissions | Reviewed settings.json | No AskUserQuestion-related entries |

Impact

This breaks any command or skill that relies on AskUserQuestion for interactive user input. Commands that use multi-step discovery workflows (asking questions, collecting preferences, etc.) speed through all questions without collecting any user input.

View original on GitHub ↗

4 Comments

xXMrNidaXx · 6 months ago

Analysis

This regression points to a change in how tool invocation context is handled when called from custom commands vs direct conversation.

Likely Root Cause

AskUserQuestion depends on an interactive stdin stream to render UI components and block for user input. When invoked from a custom command:

  1. The command execution context may be running in a different async boundary
  2. The stdin stream binding may not be properly inherited from the parent REPL
  3. The tool receives an immediate EOF or empty buffer instead of a live input stream
  4. Without blocking input, it returns with empty response

Why Normal Conversation Works

In normal conversation, the tool call happens directly within the REPL's event loop — stdin is already bound and blocking. Custom commands may be spawning a separate execution context that loses this binding.

Regression Timing

The 2/27 → 2/28 regression window coincides with version 2.1.63 changes. This may be related to:

  • Changes in how custom command payloads are executed
  • Modifications to the tool dispatch pipeline
  • Async boundary changes for skill/command isolation

Diagnostic Suggestion

Add a debug log in the command:

Before asking: log "About to call AskUserQuestion"
Then call AskUserQuestion
After response: log "Received: [response]"

If the "About to call" and "After response" logs appear back-to-back with no visible UI, the stdin binding is definitely broken in command context.

Workaround

As a temporary fix, commands that need user input could instruct the model to ask the question as a plain text response and wait for the user to reply in the next turn (old-school conversation flow) rather than relying on AskUserQuestion tool UI.

Lego1997 · 6 months ago

Confirming this bug.

  • Claude Code: v2.1.63
  • OS: macOS (Darwin 25.3.0)
  • Model: Opus 4.6
  • GSD version: 1.22.0 (custom skill using AskUserQuestion)
  • Workflow: /gsd:discuss-phase (via skill/command context)

Behavior

During the GSD discuss-phase workflow, AskUserQuestion calls are auto-resolved without presenting the options UI to the user. The tool returns empty responses and Claude either makes up answers or loops.

Key observation

A basic AskUserQuestion (single question, outside any skill/command context) works fine in the same session. The bug only manifests when AskUserQuestion is called inside a skill/command context — consistent with the issue title.

Cross-reference

This is widely reported in the GSD community:

The GSD maintainers confirmed this is a CC runtime regression, not a GSD-side bug — the workflow files structure AskUserQuestion calls correctly.

Workaround

Downgrading to CC v2.1.62 or stable (v2.1.50) resolves the issue. One user also reported that setting Enable Remote Control for all sessions to false in /config fixes it.

blois collaborator · 5 months ago

This should be fixed on 2.1.69.

github-actions[bot] · 5 months ago

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.