Quand Claude Code a besoin que tu choisisses entre plusieurs options, il appelle un outil nommé AskUserQuestion et attend ton choix. Un hook PreToolUse qui matche AskUserQuestion peut répondre à ta place, en renvoyant la question avec un champ answers rempli. C'est comme ça que tu réponds aux questions de Claude Code depuis ton téléphone : un hook envoie la question et ses options au téléphone, attend ton choix et le renvoie. Claude Code Notifier fait ça sur Mac, Windows et Linux avec son outil ccn et son app mobile.
01Ce qu'est AskUserQuestion
Parfois, Claude arrive à un embranchement qu'il ne devrait pas trancher seul. Quel framework ? Garder l'ancienne API ou la supprimer ? Corriger le test ou le code ? Plutôt que de deviner, il pose une courte question à choix multiples. Dans le terminal, tu vois la question, quelques options étiquetées avec leur description, et tu en choisis une au clavier.
Comme tout appel d'outil, AskUserQuestion passe d'abord par les hooks de Claude Code. C'est la porte d'entrée dont une réponse à distance a besoin.
Les questions ne sont pas des demandes de permission. Une demande de permission pose une question oui/non sur une action, et c'est le hook PermissionRequest qui y répond (voir Approuver les demandes de permission de Claude Code depuis ton téléphone). Une question te demande de choisir, et la réponse est un label, pas un oui.
02Comment un hook fournit la réponse
Un hook PreToolUse reçoit l'entrée de l'outil en JSON sur l'entrée standard. Pour AskUserQuestion, l'entrée contient un tableau questions. Chaque question a question (le texte), header (un label court), options (chacune avec un label et une description) et multiSelect.
Renvoyer juste "allow" ne suffit pas pour cet outil, car la réponse doit bien venir de quelque part. La référence des hooks d'Anthropic indique que le hook doit renvoyer les questions dans updatedInput et ajouter un objet answers qui associe le texte de chaque question au label choisi :
{
"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" }
}
}
}
Pour une question à choix multiples, sépare les labels choisis par des virgules. Si le hook n'affiche rien, la question apparaît normalement dans le terminal.
L'enregistrer
{
"hooks": {
"PreToolUse": [
{
"matcher": "AskUserQuestion",
"hooks": [
{ "type": "command", "command": "/path/to/your-answer-script" }
]
}
]
}
}
Mets ceci dans ~/.claude/settings.json pour couvrir tous tes projets. Pour tous les événements de hook et le rôle de chacun, vois Les hooks de Claude Code expliqués.
Une remarque sur les exécutions non interactives
Avec claude -p, la doc d'Anthropic précise que AskUserQuestion n'est proposé que si l'exécution dispose d'un hôte de permissions pour recevoir le prompt, comme un callback canUseTool de l'Agent SDK. Dans un simple script, Claude peut tout simplement ne pas poser de question. Ce guide porte sur les sessions interactives.
03Ce qui fait une bonne réponse sur mobile
Le JSON, c'est la partie facile. Les questions de conception sont les mêmes que pour les demandes de permission :
- Affiche la question en entier. Le header, la question et la description de chaque option comptent. Un label seul (« Option B ») ne sert à rien sur un écran verrouillé.
- Garde le terminal utilisable. Si tu es devant l'ordinateur, tu dois pouvoir répondre là, sans attendre un hook qui attend ton téléphone.
- Abandonne proprement. Si aucune réponse n'arrive, le hook doit ne rien renvoyer avant son timeout pour que le prompt apparaisse dans le terminal.
- Respecte le texte à l'identique. Les clés de
answersdoivent être le texte de la question tel que Claude l'a écrit, et les valeurs doivent être les labels des options.
04Utiliser Claude Code Notifier
Claude Code Notifier est un outil indépendant de TouchTap Ltd, qui n'est pas fait par Anthropic. Son outil en ligne de commande, ccn, installe un hook PreToolUse sur AskUserQuestion en plus de ses autres hooks. Quand Claude pose une question et que tu n'es pas là, ton téléphone affiche la question et ses options. Touches-en une, le hook fournit la réponse et Claude continue.
Installe-le sur Mac ou Linux :
curl -fsSL https://claudecodenotifier.com/install.sh | sh
ou sous Windows dans PowerShell (bêta) :
irm https://claudecodenotifier.com/install.ps1 | iex
Ensuite, associe ton téléphone en scannant le QR code ou en tapant le code à 6 chiffres de l'app. Connecter ton téléphone à Claude Code détaille la marche à suivre pour chaque système.
Ta présence décide où tu réponds
ccn applique aux questions la même règle de présence qu'aux permissions. Si tu as tapé quelque chose dans les 30 dernières secondes, le terminal pose la question comme d'habitude et le téléphone reçoit au plus une notif. Si tu n'es pas là, le terminal attend le téléphone, jusqu'à un plafond que tu choisis (hold_ceiling_seconds, de 30 à 3600, 600 par défaut), et arrête d'attendre dès que tu touches le clavier.
Choisir ce qui arrive sur ton téléphone
Les questions ont leur propre réglage, notify_on_question, distinct de notify_on_permission et notify_on_done : tu peux donc garder un type de notification et en désactiver un autre. ccn config show affiche la configuration active, et la plupart des réglages se modifient aussi par ordinateur depuis l'app mobile.
Les heures de silence s'appliquent aussi, par exemple ccn config set quiet_hours 22:00-08:00. Voir Heures de silence et Ne pas déranger.
Sans téléphone associé, ccn affiche quand même une notification de bureau gratuite sur l'ordinateur quand Claude pose une question, pour que tu saches qu'il faut revenir. Pour répondre depuis le téléphone, il te faut l'app, gratuite à télécharger mais qui nécessite un abonnement ou un achat à vie. Voir les tarifs.
05Questions, relances et fin de tâche
Les questions sont l'un des trois moments où Claude t'attend. Les deux autres sont les demandes de permission et la fin d'un tour. Juste après que Claude a terminé, Claude Code Notifier te permet aussi d'envoyer l'instruction suivante depuis le téléphone ; le hook Stop la transmet à Claude comme prochaine instruction. À eux trois, ils couvrent l'essentiel de ce qui bloque une longue tâche. Laisse tourner Claude Code et éloigne-toi les regroupe en une seule routine.
06FAQ
Est-ce que je peux taper une réponse libre au lieu de choisir une option ?
La méthode documentée via le hook répond avec les libellés des options, dans le champ answers. Dans Claude Code Notifier, tu choisis parmi les options sur le téléphone. Si aucune ne convient, laisse la question au terminal, ou réoriente Claude avec une relance une fois qu'il a terminé.
Pourquoi le « allow » de mon hook PreToolUse ne répond pas à la question ?
Parce que AskUserQuestion attend une réponse, pas juste une autorisation. Renvoie updatedInput avec les questions d'origine et un objet answers, comme montré plus haut.
Et si Claude pose plusieurs questions à la fois ?
Le tableau questions peut en contenir plusieurs. L'objet answers doit avoir une entrée par question, avec son texte exact comme clé.
Est-ce que ça marche dans VS Code, Cursor ou JetBrains ?
Le hook fait partie de Claude Code, pas du terminal, donc il se déclenche aussi dans le terminal intégré d'un IDE. Voir Notifications Claude Code dans les terminaux VS Code, Cursor et JetBrains.