Als Claude Code wil dat je tussen opties kiest, roept het een tool aan met de naam AskUserQuestion en wacht het op je keuze. Een PreToolUse-hook die op AskUserQuestion matcht, kan in jouw plaats antwoorden door de vraag terug te geven met een ingevuld answers-veld. Zo beantwoord je de vragen van Claude Code vanaf je telefoon: een hook stuurt de vraag en de opties naar je telefoon, wacht op je keuze en geeft die terug. Claude Code Notifier doet dit op Mac, Windows en Linux met de tool ccn en de telefoonapp.
01Wat AskUserQuestion is
Soms komt Claude bij een splitsing waar het niet alleen over moet beslissen. Welk framework? De oude API houden of weghalen? De test fixen of de code? In plaats van te gokken stelt het een korte meerkeuzevraag. In de terminal zie je de vraag en een paar opties met een label en beschrijving, en je kiest er een met het toetsenbord.
Net als elke andere tool-aanroep gaat AskUserQuestion eerst langs de hooks van Claude Code. Daar zit de opening voor een antwoord op afstand.
Vragen zijn iets anders dan permission prompts. Een permission prompt vraagt ja of nee over één actie, en de PermissionRequest-hook beantwoordt die (zie Keur permission requests van Claude Code goed vanaf je telefoon). Bij een vraag moet je kiezen, en het antwoord is een label, geen ja.
02Hoe een hook het antwoord levert
Een PreToolUse-hook krijgt de input van de tool als JSON via standard input. Bij AskUserQuestion bevat die input een questions-array. Elke vraag heeft question (de tekst), header (een kort label), options (elk met een label en description) en multiSelect.
Alleen "allow" teruggeven is voor deze tool niet genoeg, want het antwoord moet ergens vandaan komen. Volgens de hooks reference van Anthropic moet de hook de questions terugsturen in updatedInput en een answers-object toevoegen dat de tekst van elke vraag koppelt aan het gekozen label:
{
"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" }
}
}
}
Bij een vraag met meerdere keuzes zet je de gekozen labels achter elkaar, gescheiden door komma's. Print de hook niets, dan verschijnt de vraag gewoon in de terminal.
Registreren
{
"hooks": {
"PreToolUse": [
{
"matcher": "AskUserQuestion",
"hooks": [
{ "type": "command", "command": "/path/to/your-answer-script" }
]
}
]
}
}
Zet dit in ~/.claude/settings.json om het voor al je projecten te laten gelden. Voor alle hook-events en waar ze passen, zie Hooks in Claude Code uitgelegd.
Een opmerking over niet-interactieve runs
Volgens de docs van Anthropic wordt AskUserQuestion in claude -p-runs alleen aangeboden als de run een permission host heeft die de prompt kan ontvangen, zoals een canUseTool-callback van de Agent SDK. In een gewone scripted run vraagt Claude misschien gewoon niets. Deze gids gaat over interactieve sessies.
03Wat een goed antwoord via de telefoon nodig heeft
De JSON is het makkelijke deel. De ontwerpvragen zijn dezelfde als bij permission prompts:
- Toon de hele vraag. De header, de vraag en de beschrijving van elke optie doen er allemaal toe. Alleen een label ("Optie B") heb je niets aan op een lockscreen.
- Houd de terminal bruikbaar. Zit je achter je computer, dan moet je daar kunnen antwoorden en niet hoeven wachten op een hook die op je telefoon wacht.
- Stop netjes. Komt er geen antwoord, dan moet de hook vóór zijn timeout niets teruggeven, zodat de prompt in de terminal verschijnt.
- Neem de tekst exact over. De keys in
answersmoeten precies de vraagtekst zijn zoals Claude die schreef, en de waarden moeten de labels van de opties zijn.
04Claude Code Notifier gebruiken
Claude Code Notifier is een onafhankelijke tool van TouchTap Ltd en is niet gemaakt door Anthropic. De command line tool, ccn, installeert naast de andere hooks een PreToolUse-hook op AskUserQuestion. Stelt Claude een vraag terwijl je weg bent, dan toont je telefoon de vraag en de opties. Tik er een aan, de hook levert het antwoord en Claude gaat verder.
Installeer het op Mac of Linux:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
of op Windows in PowerShell (bèta):
irm https://claudecodenotifier.com/install.ps1 | iex
Koppel daarna je telefoon door de QR-code te scannen of de 6-cijferige code uit de app in te typen. Verbind je telefoon met Claude Code loopt dit per besturingssysteem met je door.
Aanwezigheid bepaalt waar je antwoordt
ccn gebruikt voor vragen dezelfde aanwezigheidsregel als voor permissions. Heb je in de afgelopen 30 seconden getypt, dan vraagt de terminal het zoals altijd en krijgt je telefoon hooguit een melding. Ben je weg, dan wacht de terminal op je telefoon, tot een maximum dat je zelf kiest (hold_ceiling_seconds, 30 tot 3600, standaard 600), en stopt het wachten zodra je het toetsenbord aanraakt.
Kiezen wat er op je telefoon binnenkomt
Vragen hebben een eigen instelling, notify_on_question, los van notify_on_permission en notify_on_done, zodat je het ene type kunt aanhouden en het andere uitzetten. ccn config show laat zien wat er actief is, en de meeste instellingen kun je ook per computer aanpassen vanuit de app op je telefoon.
Stille uren gelden ook, bijvoorbeeld ccn config set quiet_hours 22:00-08:00. Zie Stille uren en Niet storen.
Zonder gekoppelde telefoon toont ccn nog steeds een gratis desktopmelding op de computer als Claude een vraag stelt, zodat je weet dat je terug moet komen. Antwoorden vanaf je telefoon kan alleen met de app: die is gratis te downloaden, maar voor gebruik heb je een abonnement of een lifetime-aankoop nodig. Zie prijzen.
05Vragen, vervolginstructies en afronden
Vragen zijn een van de drie momenten waarop Claude op je wacht. De andere twee zijn permission prompts en het einde van een beurt. Direct nadat Claude klaar is, kun je met Claude Code Notifier ook vanaf je telefoon de volgende instructie sturen, die de Stop-hook als volgende instructie aan Claude teruggeeft. Samen dekken ze het meeste af waardoor een lange taak blijft hangen. Laat Claude Code draaien en loop weg combineert ze in één werkwijze.
06FAQ
Kan ik een vrij antwoord typen in plaats van een optie te kiezen?
De gedocumenteerde hook-route antwoordt met optielabels via het veld answers. In Claude Code Notifier kies je uit de opties op je telefoon. Past er geen, laat de vraag dan over aan de terminal, of stuur Claude bij met een vervolginstructie zodra het klaar is.
Waarom beantwoordt de "allow" van mijn PreToolUse-hook de vraag niet?
Omdat AskUserQuestion een antwoord nodig heeft, niet alleen toestemming. Geef updatedInput terug met de oorspronkelijke questions en een answers-object, zoals hierboven.
Wat als Claude meerdere vragen tegelijk stelt?
De questions-array kan er meer dan één bevatten. Het answers-object heeft voor elke vraag een entry nodig, met de exacte vraagtekst als key.
Werkt het in VS Code, Cursor of JetBrains?
De hook hoort bij Claude Code, niet bij de terminal, dus hij werkt ook in de ingebouwde terminal van een IDE. Zie Claude Code-meldingen in terminals van VS Code, Cursor en JetBrains.