Für eine Benachrichtigung, sobald Claude Code fertig ist, fügst du in ~/.claude/settings.json einen Stop-Hook hinzu, der den Benachrichtigungsbefehl deines Systems ausführt. Stop feuert genau dann, wenn Claude mit der Antwort fertig ist. Für „Claude braucht meine Eingabe“ kommt zusätzlich ein Notification-Hook dazu: Er feuert, wenn ein Permission-Prompt etwa sechs Sekunden gewartet hat oder Claude rund eine Minute untätig war. Beides funktioniert auf Mac, Windows und Linux, und ein Tool wie Claude Code Notifier schickt dir dieselben Alerts aufs Handy.
01Was Claude Code von sich aus macht
Claude Code versucht schon selbst, dich zu benachrichtigen, wenn du scheinbar nicht am Terminal bist. Standardmäßig schickt es in iTerm2, Ghostty und Kitty eine Desktop-Benachrichtigung, im Apple Terminal eventuell ein Bell-Zeichen und in anderen Terminals gar nichts. Bei iTerm2 musst du außerdem erst die Alert-Einstellungen aktivieren, bevor überhaupt etwas erscheint.
Nutzt du also das Terminal von VS Code, Warp, Windows Terminal oder die meisten Linux-Terminals, bekommst du meist nichts. Mit der Einstellung preferredNotifChannel kannst du eine Terminal-Bell erzwingen, siehe den Guide zur Terminal-Bell. Für eine echte Desktop-Benachrichtigung in jedem Terminal brauchst du einen Hook.
02Die zwei Hooks, die du brauchst
Hooks sind Befehle, die Claude Code an festen Punkten einer Session ausführt. Zwei davon sind hier wichtig:
StopWenn Claude mit der Antwort fertig ist (nicht, wenn du abbrichst)„Claude ist fertig“Notification mit Matcher permission_promptEin Permission-Prompt hat etwa sechs Sekunden gewartet, ohne dass du getippt hast„Claude braucht eine Freigabe“Notification mit Matcher idle_promptEtwa 60 Sekunden, nachdem Claude fertig war, falls du seitdem nichts getippt hastEine Erinnerung, dass du dran bistStop ist der schnelle. Er läuft am Ende jedes Turns, sofort. Die Notification-Typen greifen nur, wenn du nicht hinschaust: Jeder Tastendruck schiebt sie auf, damit du nicht angepingt wirst, während du zusiehst. Willst du ein Signal genau in dem Moment, in dem Claude um Erlaubnis fragt, nimm stattdessen den PermissionRequest-Hook, beschrieben im PermissionRequest-Guide.
Wie Hooks allgemein funktionieren (Events, Matcher, Settings-Dateien, Exit-Codes), erfährst du unter Claude Code-Hooks erklärt.
03Ein funktionierendes Setup unter macOS
Öffne ~/.claude/settings.json (leg die Datei an, falls sie fehlt) und füge Folgendes hinzu. Gibt es in der Datei schon ein hooks-Objekt, ergänze Stop und Notification als Keys darin, statt es zu ersetzen.
{
"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 hat keinen Matcher und feuert daher bei jedem Turn. Der Notification-Matcher beschränkt ihn auf die zwei Typen, die „komm zurück“ bedeuten.
Erscheint nichts, blockiert macOS eventuell den Skripteditor, über den osascript Benachrichtigungen anzeigt. Führ einmal osascript -e 'display notification "test"' im Terminal aus, öffne dann Systemeinstellungen > Mitteilungen, such Skripteditor und aktiviere Mitteilungen erlauben.
04Dasselbe Setup unter Linux und Windows
Behalte die JSON-Struktur von oben bei und tausch nur die command-Strings aus.
Linux (braucht einen Desktop-Notification-Daemon, funktioniert also nicht auf einem Headless-Server):
"command": "notify-send 'Claude Code' 'Claude has finished'"
Falls notify-send fehlt, installier libnotify-bin unter Debian und Ubuntu oder das entsprechende Paket deiner Distribution. Für SSH- und Server-Setups siehe Benachrichtigungen über SSH.
Windows (PowerShell). Das offizielle Beispiel von Anthropic öffnet statt eines Toasts in der Ecke ein Meldungsfenster:
"command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude has finished', 'Claude Code')\""
Das Fenster kann hinter deinem Terminal aufgehen, also teste den Befehl zuerst in PowerShell. Unter WSL muss powershell.exe über das Windows-Interop erreichbar sein. Der Windows-Guide zeigt weitere Optionen.
05Prüfen, ob es funktioniert
- Gib in Claude Code
/hooksein. Deine Hooks sollten unterStopundNotificationaufgelistet sein. - Stell Claude eine kurze Frage. Sobald die Antwort kommt, sollte die
Stop-Benachrichtigung erscheinen. - Bitte um etwas, das eine Berechtigung braucht, wechsle in ein anderes Fenster und warte. Die
permission_prompt-Benachrichtigung kommt nach etwa sechs Sekunden.
Änderungen an settings.json werden normalerweise sofort übernommen. Taucht ein Hook nicht in /hooks auf, prüf, ob die Datei gültiges JSON ist (keine abschließenden Kommas, keine Kommentare). Starte Claude Code mit claude --debug, um zu sehen, was jeder Hook gemacht hat. Weitere Lösungen findest du in der Troubleshooting-Checkliste.
06Benachrichtigungen aufs Handy bekommen
Eine Desktop-Benachrichtigung bringt nur was, wenn du am Schreibtisch sitzt. Sobald du weggehst, brauchst du den Hinweis woanders. Dafür gibt es drei gängige Wege:
- Ein selbst betriebener Push-Dienst wie ntfy, den du aus denselben Hooks per
curlaufrufst. Günstig und flexibel. Siehe den ntfy-Guide. - Ein Chat-Webhook für Telegram, Slack oder Discord. Praktisch, wenn du sowieso im Chat unterwegs bist. Siehe den Guide zu Chat-Webhooks.
- Claude Code Notifier, das die Hooks für dich einrichtet und dich vom Handy aus antworten lässt.
Die DIY-Varianten reichen völlig, wenn du nur einen Ping willst. Ihr Haken: Sie funktionieren nur in eine Richtung. Du erfährst, dass Claude wartet, musst aber trotzdem zurück an die Tastatur, um etwas freizugeben.
Claude Code Notifier ist ein unabhängiges Tool (nicht von Anthropic) und besteht aus zwei Teilen: ccn, einem kostenlosen Kommandozeilen-Tool für Mac, Windows und Linux, sowie Apps für iPhone und Android. Installiert wird es mit einer Zeile:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
Unter Windows nutzt du irm https://claudecodenotifier.com/install.ps1 | iex in PowerShell (der Windows-Support ist in der Beta). Weitere Optionen, darunter Homebrew, npx @touchtap/ccn und das Claude Code-Plugin, findest du auf der ccn-Seite.
Die Installation fügt sieben Hook-Einträge hinzu, die jeweils ccn hook ausführen, lässt den Rest deiner settings.json unverändert und legt einmalig ein Backup daneben ab. Auch ganz ohne Handy zeigt ccn auf deinem Rechner eine Desktop-Benachrichtigung, wenn Claude fertig ist, eine Berechtigung braucht oder eine Frage stellt. Dieser Teil ist kostenlos und funktioniert ohne Netzwerk.
Koppelst du ein Handy mit ccn pair, bekommst du zusätzlich:
- einen „Claude ist fertig“-Push, sobald ein Turn endet;
- Berechtigungsanfragen, die du einmalig erlauben, für die Session erlauben oder ablehnen kannst;
- die Multiple-Choice-Fragen von Claude, direkt vom Handy beantwortet;
- ein Eingabefeld, um Claude gleich nach dem Ende die nächste Anweisung zu schicken.
Wenn du in den letzten 30 Sekunden getippt hast, wartet nichts aufs Handy und das Terminal fragt wie gewohnt. Die Apps brauchen ein Abo oder einen Lifetime-Kauf; siehe Preise. Handy koppeln führt dich durch die Einrichtung.
07FAQ
Warum dauert es so lange, bis mein Notification hook auslöst?
Der Typ permission_prompt wartet, bis der Prompt etwa sechs Sekunden lang ohne Eingabe angezeigt wurde, und idle_prompt wartet etwa 60 Sekunden, nachdem Claude fertig ist. Die Verzögerung ist Absicht, damit du nicht angepingt wirst, während du zuschaust. Nimm einen Stop-Hook für eine sofortige „Fertig“-Meldung und einen PermissionRequest-Hook für eine sofortige „Freigabe nötig“-Meldung.
Löst der Stop hook aus, wenn ich Claude mit Esc unterbreche?
Nein. Stop läuft nicht, wenn der Turn endet, weil du ihn unterbrochen hast. Ebenso wenig, wenn der Turn mit einem API-Fehler wie einem Rate Limit endet. Dafür feuert Claude Code ein eigenes StopFailure-Event, auf das du genauso einen Hook setzen kannst.
Löst ein Stop hook nach jeder Nachricht aus oder erst, wenn die ganze Aufgabe erledigt ist?
Nach jedem Turn. Claude Code weiß nicht, wann deine Gesamtaufgabe fertig ist, nur wann es aufgehört hat zu antworten. Bei langem Hin und Her bekommst du also pro Antwort eine Meldung. Ist dir das zu viel, nimm stattdessen die idle_prompt-Benachrichtigung, die erst auslöst, wenn du etwa eine Minute weg warst.
Funktioniert das im Terminal von VS Code oder JetBrains?
Ja. Hooks werden von Claude Code selbst ausgeführt, nicht vom Terminal, und funktionieren daher in jedem Terminal, auch in IDE-Terminals. Nur die eingebauten Benachrichtigungen hängen vom Terminal ab. Siehe den Guide zu IDE-Terminals.
Kann ich Benachrichtigungen aufs Handy bekommen, ohne dort etwas zu installieren?
Teilweise. Ein Hook, der an ntfy oder einen Chat-Webhook postet, erreicht eine App, die du schon hast. Er kann dir aber nur sagen, dass etwas passiert ist. Um vom Handy aus freizugeben oder zu antworten, brauchst du etwas, das deine Antwort an den Hook zurückschickt – genau das machen die Apps von Claude Code Notifier.