Feature Request
When Claude Code calls the AskUserQuestion tool, the mobile interface shows raw JSON and only yes/no buttons. The actual question text and multiple-choice options aren't rendered, and there's no way to select a specific option.
Current Behavior
- Claude calls
AskUserQuestion with structured input:
{
"questions": [{
"question": "Which approach should we use?",
"options": [
{ "label": "Option A", "description": "..." },
{ "label": "Option B", "description": "..." }
]
}]
}
- Happy routes it through the generic permission system (
--permission-prompt-tool stdio)
- Mobile shows "Claude wants to Ask User Question" with raw JSON arguments
- User can only tap Approve/Deny
- On approve,
handlePermissionResponse returns the original input unchanged — no selection is captured
Expected Behavior
- Mobile UI detects
AskUserQuestion tool calls and renders the question text and option buttons
- User taps an option (or types a custom response)
- The selection is sent back and injected into the response to Claude
Technical Context
The limitation is in the permission response format — it only carries approved, reason, mode, and allowTools. There's no field to carry the user's selection back. The handlePermissionResponse method resolves with { behavior: "allow", updatedInput: pending.input } (original input, unchanged).
This would require changes in:
- Mobile app: Detect AskUserQuestion in agent state requests, render question/options UI
- Permission response schema: Add a field for user selection (e.g.
answer or selectedOptions)
- CLI handler:
handlePermissionResponse to construct a proper response for Claude with the user's answers
Workaround
For now, Claude can use the <options> XML block in its text output (which Happy already renders as tappable buttons) instead of the AskUserQuestion tool when running through Happy.
Feature Request
When Claude Code calls the
AskUserQuestiontool, the mobile interface shows raw JSON and only yes/no buttons. The actual question text and multiple-choice options aren't rendered, and there's no way to select a specific option.Current Behavior
AskUserQuestionwith structured input:{ "questions": [{ "question": "Which approach should we use?", "options": [ { "label": "Option A", "description": "..." }, { "label": "Option B", "description": "..." } ] }] }--permission-prompt-tool stdio)handlePermissionResponsereturns the original input unchanged — no selection is capturedExpected Behavior
AskUserQuestiontool calls and renders the question text and option buttonsTechnical Context
The limitation is in the permission response format — it only carries
approved,reason,mode, andallowTools. There's no field to carry the user's selection back. ThehandlePermissionResponsemethod resolves with{ behavior: "allow", updatedInput: pending.input }(original input, unchanged).This would require changes in:
answerorselectedOptions)handlePermissionResponseto construct a proper response for Claude with the user's answersWorkaround
For now, Claude can use the
<options>XML block in its text output (which Happy already renders as tappable buttons) instead of theAskUserQuestiontool when running through Happy.