Quando o Claude Code precisa que você escolha entre opções, ele chama uma ferramenta chamada AskUserQuestion e espera sua escolha. Um hook PreToolUse que corresponda a AskUserQuestion pode responder no seu lugar, devolvendo a pergunta com o campo answers preenchido. É assim que você responde às perguntas do Claude Code pelo celular: um hook envia a pergunta e as opções para o celular, espera sua escolha e a devolve. O Claude Code Notifier faz isso no Mac, no Windows e no Linux com a ferramenta ccn e o app do celular.
01O que é o AskUserQuestion
Às vezes o Claude chega a uma bifurcação que não deveria decidir sozinho. Qual framework? Manter a API antiga ou removê-la? Corrigir o teste ou o código? Em vez de chutar, ele faz uma pergunta curta de múltipla escolha. No terminal, você vê a pergunta e algumas opções com rótulo e descrição, e escolhe uma pelo teclado.
Como qualquer chamada de ferramenta, o AskUserQuestion passa primeiro pelos hooks do Claude Code. É essa a brecha de que uma resposta remota precisa.
Perguntas são diferentes de prompts de permissão. Um prompt de permissão pede sim ou não sobre uma ação, e quem responde é o hook PermissionRequest (veja Aprove solicitações de permissão do Claude Code pelo celular). Uma pergunta pede que você escolha, e a resposta é um rótulo, não um sim.
02Como um hook fornece a resposta
Um hook PreToolUse recebe a entrada da ferramenta como JSON na entrada padrão. No caso do AskUserQuestion, a entrada contém um array questions. Cada pergunta tem question (o texto), header (um rótulo curto), options (cada uma com label e description) e multiSelect.
Retornar só "allow" não basta para essa ferramenta, porque a resposta precisa vir de algum lugar. A referência de hooks da Anthropic diz que o hook deve devolver as questions em updatedInput e adicionar um objeto answers que mapeia o texto de cada pergunta para o rótulo escolhido:
{
"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" }
}
}
}
Em perguntas de seleção múltipla, junte os rótulos escolhidos com vírgulas. Se o hook não imprimir nada, a pergunta aparece no terminal normalmente.
Como registrar
{
"hooks": {
"PreToolUse": [
{
"matcher": "AskUserQuestion",
"hooks": [
{ "type": "command", "command": "/path/to/your-answer-script" }
]
}
]
}
}
Coloque isto em ~/.claude/settings.json para valer em todos os projetos. Para ver todos os eventos de hook e onde cada um se encaixa, confira Hooks do Claude Code explicados.
Uma observação sobre execuções não interativas
Em execuções com claude -p, a documentação da Anthropic diz que o AskUserQuestion só é oferecido quando a execução tem um host de permissões para receber o prompt, como um callback canUseTool do Agent SDK. Numa execução simples via script, o Claude pode simplesmente não perguntar. Este guia trata de sessões interativas.
03O que faz uma boa resposta pelo celular
O JSON é a parte fácil. As questões de design são as mesmas que aparecem com prompts de permissão:
- Mostre a pergunta inteira. O header, a pergunta e a descrição de cada opção importam. Só um rótulo ("Opção B") não ajuda nada na tela de bloqueio.
- Mantenha o terminal utilizável. Se você está no computador, deve poder responder ali, sem esperar por um hook que está esperando o seu celular.
- Desista de forma limpa. Se nenhuma resposta chegar, o hook deve retornar nada antes do timeout para que o prompt apareça no terminal.
- Use o texto exato. As chaves de
answersdevem ser o texto da pergunta exatamente como o Claude escreveu, e os valores devem ser os rótulos das opções.
04Usando o Claude Code Notifier
O Claude Code Notifier é uma ferramenta independente da TouchTap Ltd, não feita pela Anthropic. A ferramenta de linha de comando, ccn, instala um hook PreToolUse no AskUserQuestion junto com os outros hooks. Quando o Claude faz uma pergunta e você está longe, o celular mostra a pergunta e as opções. Toque em uma, o hook fornece a resposta e o Claude segue em frente.
Instale no Mac ou no Linux:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
ou no Windows, pelo PowerShell (beta):
irm https://claudecodenotifier.com/install.ps1 | iex
Depois, pareie o celular escaneando o QR code ou digitando o código de 6 dígitos do app. Conecte seu celular ao Claude Code mostra o passo a passo em cada sistema operacional.
Sua presença decide onde você responde
O ccn usa para perguntas a mesma regra de presença das permissões. Se você digitou nos últimos 30 segundos, o terminal pergunta normalmente e o celular recebe no máximo um aviso. Se você está ausente, o terminal espera pelo celular até um limite que você define (hold_ceiling_seconds, de 30 a 3600, padrão 600) e para de esperar assim que você toca no teclado.
Escolhendo o que chega ao seu celular
As perguntas têm uma configuração própria, notify_on_question, separada de notify_on_permission e notify_on_done, então você pode manter um tipo e desligar outro. O ccn config show mostra o que está valendo, e a maioria das configurações também pode ser alterada por computador pelo app no celular.
O horário silencioso também vale, por exemplo ccn config set quiet_hours 22:00-08:00. Veja Horário silencioso e Não Perturbe.
Sem um celular pareado, o ccn ainda mostra uma notificação gratuita no desktop quando o Claude faz uma pergunta, para você saber que precisa voltar. Para responder pelo celular é preciso o app, que é grátis para baixar e exige uma assinatura ou compra vitalícia para usar. Veja os preços.
05Perguntas, próximas instruções e finalização
As perguntas são um dos três momentos em que o Claude fica esperando por você. Os outros dois são os prompts de permissão e o fim de um turno. Logo depois que o Claude termina, o Claude Code Notifier também permite enviar a próxima instrução pelo celular, que o hook Stop devolve ao Claude como sua próxima instrução. Juntos, eles cobrem quase tudo que deixa uma tarefa longa parada. Deixe o Claude Code rodando e vá fazer outra coisa junta tudo isso numa rotina só.
06Perguntas frequentes
Posso digitar uma resposta livre em vez de escolher uma opção?
O caminho documentado pelo hook responde com os rótulos das opções através do campo answers. No Claude Code Notifier, você escolhe entre as opções no celular. Se nenhuma servir, deixe a pergunta para o terminal ou oriente o Claude com uma nova instrução quando ele terminar.
Por que o "allow" do meu hook PreToolUse não responde a pergunta?
Porque o AskUserQuestion precisa de uma resposta, não só de permissão. Retorne updatedInput com as questions originais e um objeto answers, como mostrado acima.
E se o Claude fizer várias perguntas de uma vez?
O array questions pode ter mais de uma. O objeto answers precisa de uma entrada para cada pergunta, usando o texto exato dela como chave.
Funciona no VS Code, Cursor ou JetBrains?
O hook pertence ao Claude Code, não ao terminal, então ele dispara também no terminal integrado de uma IDE. Veja Notificações do Claude Code nos terminais do VS Code, Cursor e JetBrains.