-
Notifications
You must be signed in to change notification settings - Fork 983
Open
Description
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
AskUserQuestionwith 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,
handlePermissionResponsereturns the original input unchanged — no selection is captured
Expected Behavior
- Mobile UI detects
AskUserQuestiontool 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.
answerorselectedOptions) - CLI handler:
handlePermissionResponseto 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.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels