Para receber uma notificação quando o Claude Code terminar, adicione um hook Stop ao ~/.claude/settings.json que execute o comando de notificação do seu sistema. O Stop dispara assim que o Claude termina de responder. Para "o Claude precisa de mim", adicione também um hook Notification: ele dispara quando um prompt de permissão fica esperando por cerca de seis segundos ou quando o Claude fica ocioso por cerca de um minuto. Os dois funcionam no Mac, Windows e Linux, e uma ferramenta como o Claude Code Notifier pode enviar os mesmos alertas para o seu celular.
01O que o Claude Code faz por conta própria
O Claude Code já tenta avisar você quando parece que você saiu do terminal. Por padrão, ele envia uma notificação de desktop no iTerm2, Ghostty e Kitty, pode emitir um caractere de bell no Apple Terminal e não faz nada nos outros terminais. No iTerm2, você também precisa ativar as configurações de alerta antes que algo apareça.
Então, se você usa o terminal do VS Code, o Warp, o Windows Terminal ou a maioria dos terminais do Linux, normalmente não vai receber nada. Dá para forçar o bell do terminal com a configuração preferredNotifChannel, explicada no guia do bell do terminal. Para ter uma notificação de desktop de verdade em qualquer terminal, você precisa de um hook.
02Os dois hooks de que você precisa
Hooks são comandos que o Claude Code executa em pontos fixos de uma sessão. Dois deles importam aqui:
StopQuando o Claude termina de responder (não quando você o interrompe)"O Claude terminou"Notification com matcher permission_promptUm prompt de permissão ficou esperando por cerca de seis segundos sem você digitar nada"O Claude precisa de aprovação"Notification com matcher idle_promptCerca de 60 segundos depois que o Claude terminou, se você não digitou nada desde entãoUm lembrete de que é a sua vezO Stop é o rápido. Ele roda no fim de cada turno, na hora. Os tipos de Notification dependem de você estar longe: cada tecla digitada os adia, então você não recebe alertas enquanto está olhando. Se quiser um sinal no instante em que o Claude pedir permissão, use o hook PermissionRequest, descrito no guia do PermissionRequest.
Para entender como os hooks funcionam em geral (eventos, matchers, arquivos de configuração, exit codes), veja Hooks do Claude Code explicados.
03Uma configuração funcional no macOS
Abra o ~/.claude/settings.json (crie o arquivo se ele não existir) e adicione isto. Se o arquivo já tiver um objeto hooks, adicione Stop e Notification como chaves dentro dele em vez de substituí-lo.
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude has finished\" with title \"Claude Code\"'"
}
]
}
],
"Notification": [
{
"matcher": "permission_prompt|idle_prompt",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"
}
]
}
]
}
}
O Stop não tem matcher, então dispara em todo turno. O matcher do Notification o limita aos dois tipos que significam "volte aqui".
Se nada aparecer, o macOS pode estar bloqueando o Script Editor, que o osascript usa para exibir notificações. Rode osascript -e 'display notification "test"' uma vez no Terminal, depois abra Ajustes do Sistema > Notificações, encontre o Editor de Scripts e ative Permitir Notificações.
04A mesma configuração no Linux e no Windows
Mantenha a estrutura JSON acima e troque as strings de command.
Linux (precisa de um daemon de notificações do desktop, então não funciona em servidor headless):
"command": "notify-send 'Claude Code' 'Claude has finished'"
Se o notify-send não estiver disponível, instale o libnotify-bin no Debian e no Ubuntu, ou o equivalente da sua distribuição. Para SSH e servidores, veja notificações via SSH.
Windows (PowerShell). O próprio exemplo da Anthropic abre uma caixa de mensagem em vez de um toast no canto da tela:
"command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude has finished', 'Claude Code')\""
A caixa pode abrir atrás da janela do terminal, então teste o comando no PowerShell antes. No WSL, o powershell.exe precisa estar acessível via interop do Windows. O guia do Windows mostra outras opções.
05Confira se funciona
- Digite
/hooksno Claude Code. Seus hooks devem aparecer emStopeNotification. - Peça algo rápido ao Claude. Quando ele responder, a notificação de
Stopdeve aparecer. - Peça algo que exija permissão, mude para outra janela e espere. A notificação de
permission_promptchega depois de uns seis segundos.
Alterações no settings.json normalmente são aplicadas na hora. Se um hook não aparecer em /hooks, verifique se o arquivo é um JSON válido (sem vírgulas sobrando, sem comentários). Inicie o Claude Code com claude --debug para ver o que cada hook fez. Há mais soluções no checklist de troubleshooting.
06Recebendo o alerta no celular
Uma notificação no desktop só ajuda se você estiver no computador. Quando você se afasta, precisa do alerta em outro lugar. Há três caminhos comuns:
- Um serviço de push que você mesmo roda, como o ntfy, chamado com
curla partir dos mesmos hooks. Barato e flexível. Veja o guia do ntfy. - Um webhook de chat para Telegram, Slack ou Discord. Ótimo se você já vive no chat. Veja o guia de webhooks de chat.
- Claude Code Notifier, que configura os hooks para você e permite responder pelo celular.
As opções DIY resolvem bem se você só quer um aviso. O limite é que elas são unidirecionais: você fica sabendo que o Claude está esperando, mas ainda precisa voltar ao teclado para aprovar qualquer coisa.
O Claude Code Notifier é uma ferramenta independente (não é feita pela Anthropic) com duas partes: o ccn, uma ferramenta de linha de comando gratuita para Mac, Windows e Linux, e apps para iPhone e Android. Instale com uma linha:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
No Windows, use irm https://claudecodenotifier.com/install.ps1 | iex no PowerShell (o suporte ao Windows está em beta). Outras opções, incluindo Homebrew, npx @touchtap/ccn e o plugin do Claude Code, estão na página do ccn.
A instalação adiciona sete entradas de hook, cada uma rodando ccn hook, mantém o resto do seu settings.json como estava e salva um backup único ao lado dele. Mesmo sem celular, o ccn mostra uma notificação no desktop quando o Claude termina, precisa de permissão ou faz uma pergunta. Essa parte é gratuita e funciona sem rede.
Pareie um celular com ccn pair e você também ganha:
- um push de "o Claude terminou" assim que um turno acaba;
- pedidos de permissão que você pode permitir uma vez, permitir para a sessão ou negar;
- as perguntas de múltipla escolha do Claude, respondidas pelo celular;
- um campo de follow-up para mandar a próxima instrução ao Claude logo que ele terminar.
Se você digitou nos últimos 30 segundos, nada espera pelo celular e o terminal pergunta normalmente. Os apps exigem assinatura ou compra vitalícia; veja os preços. Pareando um celular explica a configuração passo a passo.
07Perguntas frequentes
Por que meu Notification hook demora tanto para disparar?
O tipo permission_prompt espera o prompt ficar uns seis segundos na tela sem você digitar, e o idle_prompt espera cerca de 60 segundos depois que o Claude termina. Esse atraso é proposital, para você não ser avisado enquanto está olhando. Use um hook Stop para um alerta instantâneo de "terminou" e um hook PermissionRequest para um alerta instantâneo de "precisa de aprovação".
O Stop hook dispara se eu apertar Esc para interromper o Claude?
Não. O Stop não roda quando o turno termina porque você interrompeu. Também não roda quando o turno termina com um erro de API, como rate limit. Para isso, o Claude Code dispara um evento separado, StopFailure, que você pode usar num hook do mesmo jeito.
O Stop hook dispara a cada mensagem ou só quando a tarefa inteira termina?
A cada turno. O Claude Code não sabe quando sua tarefa como um todo acabou, só quando ele parou de responder. Numa conversa longa de ida e volta, você recebe um alerta por resposta. Se for demais, use a notificação idle_prompt, que só dispara depois que você fica cerca de um minuto ausente.
Funciona no terminal do VS Code ou do JetBrains?
Sim. Os hooks são executados pelo próprio Claude Code, não pelo terminal, então funcionam em qualquer terminal, inclusive os de IDE. As notificações nativas é que dependem do terminal. Veja o guia de terminais de IDE.
Dá para receber notificações no celular sem instalar nada nele?
Em parte. Um hook que posta no ntfy ou num webhook de chat pode chegar a um app que você já tem. Mas ele só avisa que algo aconteceu. Para aprovar ou responder pelo celular, você precisa de algo que envie sua resposta de volta ao hook, que é o que os apps do Claude Code Notifier fazem.