openclaw - 💡(How to fix) Fix [Bug]: claude-cli backend: AskUserQuestion tool call renders input but no picker UI / never returns a result

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

In a claude-cli-backed session inside the openclaw Control UI, the assistant's AskUserQuestion tool call is accepted and the tool input JSON is rendered, but no interactive picker is shown and no tool result is ever returned to the assistant — the turn stalls.

Root Cause

In a claude-cli-backed session inside the openclaw Control UI, the assistant's AskUserQuestion tool call is accepted and the tool input JSON is rendered, but no interactive picker is shown and no tool result is ever returned to the assistant — the turn stalls.

Fix Action

Fix / Workaround

  • Affected: any claude-cli-backed session using the openclaw Control UI (TUI / web). Any assistant turn that chooses to call AskUserQuestion stalls.

  • Severity: Blocks the interactive-decision workflow. Forces the agent into a verbose plaintext fallback for every disambiguation, which loses the structured answer + headers/labels.

  • Frequency: Always — deterministic on every AskUserQuestion call.

  • Consequence: Agents cannot use AskUserQuestion to gather user preferences mid-task. Workaround is for the agent to detect the surface and switch to plaintext, but agents don't know they're inside openclaw Control UI.

  • AskUserQuestion is a Claude Code (claude-cli) built-in tool, so the gap is on the Control UI / harness side that needs to render the picker affordance and post the selection back as the tool result.

  • Related (but not a duplicate): #65681 (closed) requested skill-driven interactive prompts; this issue is about the existing claude-cli built-in tool not being rendered.

  • Workaround currently in use: assistant re-states the question and options in plaintext markdown and the user replies in freeform.

Code Example

{
     "questions": [
       {
         "question": "How do you want to watch these issues?",
         "header": "Watch style",
         "multiSelect": false,
         "options": [
           { "label": "Scheduled daily digest", "description": "Cron job runs once a day, summarizes only on activity." },
           { "label": "GitHub subscribe + notify", "description": "Subscribe my GitHub account to each issue via API." },
           { "label": "Hourly polling with push", "description": "Poll every hour and push a notification on movement." },
           { "label": "Just save the list, no watch", "description": "Write the issue numbers and stop." }
         ]
       }
     ]
   }

---

Tool call (rendered in Control UI):
  name: AskUserQuestion
  input: { "questions": [ { "question": "...", "header": "Watch style", "multiSelect": false, "options": [...] } ] }
  output: <none>
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

In a claude-cli-backed session inside the openclaw Control UI, the assistant's AskUserQuestion tool call is accepted and the tool input JSON is rendered, but no interactive picker is shown and no tool result is ever returned to the assistant — the turn stalls.

Steps to reproduce

  1. Start a claude-cli-backed session in the openclaw Control UI on 2026.5.7.
  2. Have the assistant call the AskUserQuestion tool with a valid payload. Live-captured example from this session:
    {
      "questions": [
        {
          "question": "How do you want to watch these issues?",
          "header": "Watch style",
          "multiSelect": false,
          "options": [
            { "label": "Scheduled daily digest", "description": "Cron job runs once a day, summarizes only on activity." },
            { "label": "GitHub subscribe + notify", "description": "Subscribe my GitHub account to each issue via API." },
            { "label": "Hourly polling with push", "description": "Poll every hour and push a notification on movement." },
            { "label": "Just save the list, no watch", "description": "Write the issue numbers and stop." }
          ]
        }
      ]
    }
  3. Observe the Control UI shows the tool call header with this input payload, no picker affordance, and no output block. The assistant cannot proceed.

Expected behavior

The Control UI renders an inline option picker (single- or multi-select per multiSelect) for each questions[i], captures the user's selection(s), and returns the structured selections as the AskUserQuestion tool result so the assistant turn completes. This matches how the tool behaves in Claude Code's first-party surfaces (terminal CLI, Desktop, IDE extensions).

Actual behavior

Tool call appears in the conversation as a tool call. The input JSON is displayed verbatim. No output is rendered, no UI control appears, the user has no way to answer the question. The assistant hangs until the user replies in freeform text — which is not the structured selection the tool expects.

OpenClaw version

2026.5.7 (eeef486)

Operating system

macOS 26.3.1 (25D2128)

Install method

npm global (/opt/homebrew/bin/openclaw)

Model

anthropic/claude-opus-4-7

Provider / routing chain

openclaw control-ui -> claude-cli (@anthropic-ai/claude-code 1.0.107) -> anthropic (oauth profile anthropic:claude-cli)

Additional provider/model setup details

  • claude-cli runtime as configured under acp.allowedAgents / Claude CLI plugin path.
  • Auth: auth.profiles.anthropic:claude-cli (oauth), routed via auth.order.anthropic.
  • No custom gateway in front of the model.

Logs, screenshots, and evidence

Tool call (rendered in Control UI):
  name: AskUserQuestion
  input: { "questions": [ { "question": "...", "header": "Watch style", "multiSelect": false, "options": [...] } ] }
  output: <none>

User reproduced live in-session and confirmed: "it shows up in UI as a Tool call with the tool input being: { ... } (and no output)".

Impact and severity

  • Affected: any claude-cli-backed session using the openclaw Control UI (TUI / web). Any assistant turn that chooses to call AskUserQuestion stalls.
  • Severity: Blocks the interactive-decision workflow. Forces the agent into a verbose plaintext fallback for every disambiguation, which loses the structured answer + headers/labels.
  • Frequency: Always — deterministic on every AskUserQuestion call.
  • Consequence: Agents cannot use AskUserQuestion to gather user preferences mid-task. Workaround is for the agent to detect the surface and switch to plaintext, but agents don't know they're inside openclaw Control UI.

Additional information

  • AskUserQuestion is a Claude Code (claude-cli) built-in tool, so the gap is on the Control UI / harness side that needs to render the picker affordance and post the selection back as the tool result.
  • Related (but not a duplicate): #65681 (closed) requested skill-driven interactive prompts; this issue is about the existing claude-cli built-in tool not being rendered.
  • Workaround currently in use: assistant re-states the question and options in plaintext markdown and the user replies in freeform.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

The Control UI renders an inline option picker (single- or multi-select per multiSelect) for each questions[i], captures the user's selection(s), and returns the structured selections as the AskUserQuestion tool result so the assistant turn completes. This matches how the tool behaves in Claude Code's first-party surfaces (terminal CLI, Desktop, IDE extensions).

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [Bug]: claude-cli backend: AskUserQuestion tool call renders input but no picker UI / never returns a result