Quando Claude Code ha bisogno che tu scelga tra più opzioni, chiama un tool chiamato AskUserQuestion e aspetta la tua scelta. Un hook PreToolUse che fa match su AskUserQuestion può rispondere al posto tuo, restituendo la domanda con il campo answers compilato. Ecco come si risponde alle domande di Claude Code dal telefono: un hook invia la domanda e le opzioni al telefono, aspetta la tua scelta e la restituisce. Claude Code Notifier lo fa su Mac, Windows e Linux con il tool ccn e l'app per telefono.
01Cos'è AskUserQuestion
A volte Claude arriva a un bivio che non dovrebbe decidere da solo. Quale framework? Tenere la vecchia API o rimuoverla? Sistemare il test o il codice? Invece di tirare a indovinare, fa una breve domanda a scelta multipla. Nel terminal vedi la domanda e alcune opzioni con etichetta e descrizione, e ne scegli una con la tastiera.
Come ogni chiamata a un tool, AskUserQuestion passa prima dagli hook di Claude Code. È proprio lo spiraglio che serve per rispondere da remoto.
Le domande sono diverse dai prompt dei permessi. Un prompt dei permessi chiede sì o no su una singola azione, e risponde l'hook PermissionRequest (vedi Approva le richieste di permesso di Claude Code dal telefono). Una domanda ti chiede di scegliere, e la risposta è un'etichetta, non un sì.
02Come un hook fornisce la risposta
Un hook PreToolUse riceve l'input del tool come JSON sullo standard input. Per AskUserQuestion, l'input contiene un array questions. Ogni domanda ha question (il testo), header (un'etichetta breve), options (ognuna con label e description) e multiSelect.
Per questo tool non basta restituire "allow", perché la risposta deve arrivare da qualche parte. Il riferimento sugli hook di Anthropic dice che l'hook deve rimandare le questions in updatedInput e aggiungere un oggetto answers che associa il testo di ogni domanda all'etichetta scelta:
{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"updatedInput": {
"questions": [
{
"question": "Which framework?",
"header": "Framework",
"options": [
{ "label": "React", "description": "Component library" },
{ "label": "Vue", "description": "Progressive framework" }
],
"multiSelect": false
}
],
"answers": { "Which framework?": "React" }
}
}
}
Per una domanda a selezione multipla, unisci le etichette scelte con delle virgole. Se l'hook non stampa nulla, la domanda compare nel terminal come al solito.
Registrarlo
{
"hooks": {
"PreToolUse": [
{
"matcher": "AskUserQuestion",
"hooks": [
{ "type": "command", "command": "/path/to/your-answer-script" }
]
}
]
}
}
Mettilo in ~/.claude/settings.json per coprire tutti i progetti. Per tutti gli eventi hook e dove si collocano, vedi Gli hook di Claude Code spiegati.
Una nota sulle esecuzioni non interattive
Nelle esecuzioni claude -p, la documentazione di Anthropic dice che AskUserQuestion è disponibile solo se l'esecuzione ha un permission host che riceve il prompt, come una callback canUseTool dell'Agent SDK. In un semplice script, Claude potrebbe proprio non chiedere. Questa guida riguarda le sessioni interattive.
03Cosa rende buona una risposta dal telefono
Il JSON è la parte facile. Le questioni di design sono le stesse dei prompt dei permessi:
- Mostra tutta la domanda. Header, domanda e descrizione di ogni opzione contano tutti. Una sola etichetta ("Opzione B") non serve a nulla sulla schermata di blocco.
- Mantieni il terminal utilizzabile. Se sei al computer, devi poter rispondere lì, non aspettare un hook che a sua volta aspetta il telefono.
- Arrenditi in modo pulito. Se non arriva una risposta, l'hook non deve restituire nulla prima del suo timeout, così compare il prompt nel terminal.
- Usa il testo esatto. Le chiavi di
answersdevono essere il testo della domanda così come l'ha scritto Claude, e i valori devono essere le etichette delle opzioni.
04Usare Claude Code Notifier
Claude Code Notifier è uno strumento indipendente di TouchTap Ltd, non realizzato da Anthropic. Il suo tool a riga di comando, ccn, installa un hook PreToolUse su AskUserQuestion insieme agli altri hook. Quando Claude fa una domanda e non sei al computer, il telefono ti mostra la domanda e le opzioni. Ne tocchi una, l'hook fornisce la risposta e Claude va avanti.
Installalo su Mac o Linux:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
oppure su Windows in PowerShell (beta):
irm https://claudecodenotifier.com/install.ps1 | iex
Poi associa il telefono scansionando il codice QR o digitando il codice a 6 cifre dell'app. Collega il telefono a Claude Code ti guida passo passo su ogni sistema operativo.
La tua presenza decide dove rispondi
ccn usa per le domande la stessa regola di presenza dei permessi. Se hai digitato negli ultimi 30 secondi, il terminal chiede come al solito e al telefono arriva al massimo una notifica. Se non ci sei, il terminal aspetta il telefono fino a un limite che scegli tu (hold_ceiling_seconds, da 30 a 3600, predefinito 600), e smette di aspettare non appena tocchi la tastiera.
Scegliere cosa arriva al telefono
Le domande hanno un'impostazione tutta loro, notify_on_question, separata da notify_on_permission e notify_on_done, così puoi tenere attivo un tipo di notifica e disattivarne un altro. ccn config show mostra le impostazioni attive, e quasi tutte si possono cambiare anche per singolo computer dall'app sul telefono.
Valgono anche le ore di silenzio, per esempio ccn config set quiet_hours 22:00-08:00. Vedi Ore di silenzio e Non disturbare.
Anche senza un telefono associato, ccn mostra comunque una notifica desktop gratuita sul computer quando Claude fa una domanda, così sai che devi tornare. Per rispondere dal telefono serve l'app, che si scarica gratis ma per usarla richiede un abbonamento o un acquisto a vita. Vedi i prezzi.
05Domande, follow-up e fine del turno
Le domande sono uno dei tre momenti in cui Claude resta in attesa di te. Gli altri due sono le richieste di permesso e la fine di un turno. Appena Claude finisce, Claude Code Notifier ti permette anche di inviare dal telefono l'istruzione successiva, che l'hook Stop restituisce a Claude come prossima istruzione. Insieme coprono quasi tutto ciò che tiene in attesa un task lungo. Lascia Claude Code al lavoro e allontanati li mette insieme in un'unica routine.
06FAQ
Posso scrivere una risposta libera invece di scegliere un'opzione?
La via documentata tramite hook risponde con le etichette delle opzioni attraverso il campo answers. In Claude Code Notifier scegli tra le opzioni sul telefono. Se nessuna va bene, lascia la domanda al terminale, oppure indirizza Claude con un follow-up quando ha finito.
Perché l'"allow" del mio hook PreToolUse non risponde alla domanda?
Perché AskUserQuestion ha bisogno di una risposta, non solo di un permesso. Restituisci updatedInput con le questions originali e un oggetto answers, come mostrato sopra.
E se Claude fa più domande insieme?
L'array questions può contenerne più di una. L'oggetto answers deve avere una voce per ogni domanda, con il testo esatto della domanda come chiave.
Funziona in VS Code, Cursor o JetBrains?
L'hook fa parte di Claude Code, non del terminale, quindi scatta anche nel terminale integrato di un IDE. Vedi Notifiche di Claude Code nei terminali di VS Code, Cursor e JetBrains.