Pour recevoir une notification quand Claude Code a terminé, ajoute un hook Stop dans ~/.claude/settings.json qui lance la commande de notification de ton système. Stop se déclenche dès que Claude a fini de répondre. Pour « Claude attend ma réponse », ajoute aussi un hook Notification : il se déclenche quand une demande de permission attend depuis environ six secondes, ou quand Claude est inactif depuis environ une minute. Les deux fonctionnent sur Mac, Windows et Linux, et un outil comme Claude Code Notifier peut envoyer ces mêmes alertes sur ton téléphone.
01Ce que Claude Code fait tout seul
Claude Code essaie déjà de te prévenir quand tu sembles loin du terminal. Par défaut, il envoie une notification système dans iTerm2, Ghostty et Kitty, peut émettre un bip dans Apple Terminal, et ne fait rien dans les autres terminaux. Dans iTerm2, il faut aussi activer les réglages d'alerte pour que quelque chose s'affiche.
Donc si tu utilises le terminal de VS Code, Warp, Windows Terminal ou la plupart des terminaux Linux, tu n'auras en général rien du tout. Tu peux forcer un bip du terminal avec le réglage preferredNotifChannel, expliqué dans le guide sur le bip du terminal. Pour une vraie notification système dans n'importe quel terminal, il te faut un hook.
02Les deux hooks dont tu as besoin
Les hooks sont des commandes que Claude Code exécute à des moments précis d'une session. Deux d'entre eux nous intéressent ici :
StopQuand Claude a fini de répondre (pas quand tu l'interromps)« Claude a terminé »Notification avec le matcher permission_promptUne demande de permission attend depuis environ six secondes sans que tu aies tapé quoi que ce soit« Claude attend une approbation »Notification avec le matcher idle_promptEnviron 60 secondes après que Claude a terminé, si tu n'as rien tapé depuisUn rappel que c'est à toi de jouerStop est le plus rapide : il s'exécute immédiatement à la fin de chaque tour. Les types Notification, eux, ne se déclenchent que si tu as détourné les yeux : chaque frappe les repousse, pour ne pas te notifier pendant que tu regardes. Si tu veux un signal dès que Claude demande une permission, utilise plutôt le hook PermissionRequest, décrit dans le guide PermissionRequest.
Pour le fonctionnement général des hooks (événements, matchers, fichiers de configuration, codes de sortie), consulte les hooks de Claude Code expliqués.
03Une config fonctionnelle sur macOS
Ouvre ~/.claude/settings.json (crée-le s'il n'existe pas) et ajoute ceci. Si le fichier contient déjà un objet hooks, ajoute Stop et Notification comme clés à l'intérieur au lieu de le remplacer.
{
"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\"'"
}
]
}
]
}
}
Stop n'a pas de matcher, il se déclenche donc à chaque tour. Le matcher de Notification le limite aux deux types qui veulent dire « reviens ».
Si rien ne s'affiche, macOS bloque peut-être Script Editor, qu'osascript utilise pour afficher les notifications. Lance une fois osascript -e 'display notification "test"' dans Terminal, puis ouvre Réglages Système > Notifications, trouve Script Editor et active Autoriser les notifications.
04La même config sous Linux et Windows
Garde la structure JSON ci-dessus et remplace simplement les chaînes command.
Linux (nécessite un daemon de notifications de bureau, donc pas sur un serveur headless) :
"command": "notify-send 'Claude Code' 'Claude has finished'"
Si notify-send est absent, installe libnotify-bin sous Debian et Ubuntu, ou l'équivalent pour ta distribution. Pour les configs SSH et serveur, consulte les notifications via SSH.
Windows (PowerShell). L'exemple d'Anthropic ouvre une boîte de dialogue plutôt qu'un toast dans le coin de l'écran :
"command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude has finished', 'Claude Code')\""
La boîte peut s'ouvrir derrière la fenêtre de ton terminal, alors teste d'abord la commande dans PowerShell. Sous WSL, powershell.exe doit être accessible via l'interop Windows. Le guide Windows présente d'autres options.
05Vérifier que ça marche
- Tape
/hooksdans Claude Code. Tes hooks doivent apparaître sousStopetNotification. - Pose une question courte à Claude. Quand il répond, la notification
Stopdevrait s'afficher. - Demande quelque chose qui nécessite une autorisation, passe sur une autre fenêtre et attends. La notification
permission_promptarrive au bout d'environ six secondes.
Les modifications de settings.json sont normalement prises en compte immédiatement. Si un hook n'apparaît pas dans /hooks, vérifie que le fichier est un JSON valide (pas de virgules finales, pas de commentaires). Lance Claude Code avec claude --debug pour voir ce qu'a fait chaque hook. D'autres solutions sont dans la checklist de dépannage.
06Recevoir l'alerte sur ton téléphone
Une notification de bureau ne sert que si tu es devant ton poste. Dès que tu t'éloignes, il te faut l'alerte ailleurs. Il y a trois approches courantes :
- Un service de push que tu héberges toi-même, comme ntfy, appelé avec
curldepuis les mêmes hooks. Économique et flexible. Consulte le guide ntfy. - Un webhook de chat pour Telegram, Slack ou Discord. Idéal si tu passes déjà ta journée sur une messagerie. Consulte le guide des webhooks de chat.
- Claude Code Notifier, qui configure les hooks pour toi et te permet de répondre depuis ton téléphone.
Les solutions maison font très bien l'affaire si tu veux juste un ping. Leur limite : elles sont à sens unique. Tu apprends que Claude attend, mais tu dois quand même revenir au clavier pour approuver quoi que ce soit.
Claude Code Notifier est un outil indépendant (non développé par Anthropic) en deux parties : ccn, un outil en ligne de commande gratuit pour Mac, Windows et Linux, et des apps pour iPhone et Android. Une seule ligne suffit pour l'installer :
curl -fsSL https://claudecodenotifier.com/install.sh | sh
Sous Windows, lance irm https://claudecodenotifier.com/install.ps1 | iex dans PowerShell (le support Windows est en bêta). Les autres options, dont Homebrew, npx @touchtap/ccn et le plugin Claude Code, sont sur la page ccn.
L'installation ajoute sept entrées de hook qui lancent chacune ccn hook, laisse le reste de ton settings.json intact et enregistre une sauvegarde unique à côté. Même sans téléphone, ccn affiche une notification de bureau sur ton ordinateur quand Claude a terminé, a besoin d'une autorisation ou pose une question. Cette partie est gratuite et fonctionne sans réseau.
Associe un téléphone avec ccn pair et tu obtiens en plus :
- un push « Claude a terminé » dès qu'un tour se termine ;
- des demandes d'autorisation que tu peux accepter une fois, accepter pour la session ou refuser ;
- les questions à choix multiples de Claude, auxquelles tu réponds depuis ton téléphone ;
- un champ de suivi pour envoyer à Claude sa prochaine instruction dès qu'il a terminé.
Si tu as tapé quelque chose dans les 30 dernières secondes, rien n'attend le téléphone et le terminal pose la question comme d'habitude. Les apps nécessitent un abonnement ou un achat à vie ; voir les tarifs. Associer un téléphone détaille la configuration.
07FAQ
Pourquoi mon Notification hook met-il autant de temps à se déclencher ?
Le type permission_prompt attend que le prompt soit affiché depuis environ six secondes sans que tu tapes quoi que ce soit, et idle_prompt attend environ 60 secondes après que Claude a terminé. Ce délai est voulu, pour ne pas te notifier pendant que tu regardes. Utilise un hook Stop pour une alerte « terminé » instantanée, et un hook PermissionRequest pour une alerte « approbation requise » instantanée.
Le Stop hook se déclenche-t-il si j'appuie sur Échap pour interrompre Claude ?
Non. Stop ne s'exécute pas quand le tour se termine parce que tu l'as interrompu. Il ne s'exécute pas non plus quand le tour se termine sur une erreur d'API, comme une limite de débit. Claude Code déclenche alors un événement distinct, StopFailure, que tu peux intercepter de la même façon.
Un Stop hook se déclenche-t-il après chaque message, ou seulement quand toute la tâche est terminée ?
Après chaque tour. Claude Code ne sait pas quand ta tâche globale est finie, seulement quand il a arrêté de répondre. Si tu as de longs échanges, tu reçois une alerte par réponse. Si c'est trop, utilise plutôt la notification idle_prompt, qui ne se déclenche qu'après environ une minute d'absence.
Est-ce que ça marche dans le terminal de VS Code ou de JetBrains ?
Oui. Les hooks sont exécutés par Claude Code lui-même, pas par le terminal, donc ils fonctionnent dans n'importe quel terminal, y compris ceux des IDE. Ce sont les notifications intégrées qui dépendent du terminal. Consulte le guide des terminaux d'IDE.
Puis-je recevoir des notifications sur mon téléphone sans rien y installer ?
En partie. Un hook qui poste vers ntfy ou un webhook de chat peut atteindre une app que tu as déjà. Mais il peut seulement te signaler qu'il s'est passé quelque chose. Pour approuver ou répondre depuis ton téléphone, il te faut un outil qui renvoie ta réponse au hook, et c'est exactement ce que font les apps de Claude Code Notifier.