In tmux kommen die Desktop-Benachrichtigungen von Claude Code nie bei deinem äußeren Terminal an, bis du set -g allow-passthrough on in ~/.tmux.conf einträgst. Das löst das Problem, solange du attached bist. Sobald du detachst, zeigt kein Terminal mehr die Session an, also kann dich auch nichts auf dem Bildschirm alarmieren – Claude Code läuft aber weiter und seine Hooks feuern weiter. Damit du von einer detachten Session etwas mitbekommst, nimm einen Hook, der einen Push übers Netzwerk schickt, aufs Handy oder in eine Chat-App, statt einen, der auf ein Terminal angewiesen ist.
01Attached: Benachrichtigungen durch tmux durchlassen
tmux sitzt zwischen Claude Code und deinem Terminal und verschluckt standardmäßig die Escape-Sequenzen, die Claude Code für Desktop-Benachrichtigungen nutzt. Der Terminal-Guide von Anthropic empfiehlt diesen Block für ~/.tmux.conf:
set -g allow-passthrough on
set -g focus-events on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
Auf den laufenden Server anwenden:
tmux source-file ~/.tmux.conf
allow-passthrough lässt Benachrichtigungen und Fortschrittsanzeigen zum äußeren Terminal durch. Die anderen Zeilen reparieren Shift+Enter für Zeilenumbrüche. Damit zeigen Terminals, die die Benachrichtigungen von Claude Code außerhalb von tmux anzeigen (Ghostty, Kitty und iTerm2 mit aktivierten Alerts), sie auch innerhalb von tmux an.
Dasselbe gilt für Hooks, die eine terminalSequence zurückgeben. Laut der Hooks-Referenz von Anthropic schreibt Claude Code diese Sequenzen selbst, was in tmux und GNU screen funktioniert. Beispiele findest du in den Guides für macOS, Linux und SSH.
02Attached, aber in einem anderen Fenster: die Bell nutzen
Läuft Claude Code in einem tmux-Fenster und du arbeitest in einem anderen, ist die Bell ein einfaches Signal. Sag Claude Code, dass es immer eine senden soll:
{
"preferredNotifChannel": "terminal_bell"
}
Dann bring tmux dazu, darauf zu reagieren, in ~/.tmux.conf:
setw -g monitor-bell on
set -g bell-action other
set -g visual-bell off
monitor-bell (standardmäßig an) markiert ein Fenster, das geklingelt hat, und tmux kennzeichnet es mit ! in der Statuszeile. bell-action other reicht Bells aus anderen Fenstern als dem, das du gerade ansiehst, an dein Terminal weiter, damit es piepen oder hüpfen kann. Mit any gilt das auch fürs aktuelle Fenster. Setzt du visual-bell auf on, zeigt tmux stattdessen eine Meldung an, statt die Bell weiterzugeben.
03Anzeigen, welche Session dich braucht
Laufen mehrere Sessions, hilft eine Benachrichtigung wie „Claude braucht dich“ nicht viel. Ein Hook läuft in der Umgebung des Panes, kann also tmux nach Session- und Fensternamen fragen. Dieses Linux-Beispiel zeigt sie in einer Desktop-Benachrichtigung an:
#!/bin/bash
msg=$(jq -r '.message // "Claude Code needs your attention"')
where=""
if [ -n "$TMUX_PANE" ]; then
where=$(tmux display-message -p -t "$TMUX_PANE" '#S:#W')
fi
notify-send "Claude Code ${where}" "$msg"
Speicher es als ~/.claude/hooks/notify-tmux.sh, führ chmod +x darauf aus und nutz es als Notification- oder Stop-Hook-Befehl. #S ist der Session-Name und #W der Fenstername; benenn deine Sessions mit tmux new -s api-refactor, dann sagt dir die Benachrichtigung, wo du hinmusst. Ersetz notify-send durch den Befehl deiner Plattform oder durch einen Push. Der Guide zu mehreren Sessions zeigt weitere Wege, Sessions auseinanderzuhalten.
04Detached: Du brauchst einen Push
Detachen ist ja der Sinn von tmux: langen Task starten, detachen, weg. Claude Code arbeitet in der detachten Session weiter. Nur gibt es jetzt kein Terminal mehr, das eine Escape-Sequenz oder eine Bell anzeigt, und wurde der tmux-Server über SSH gestartet, landet auch ein Desktop-Benachrichtigungsbefehl womöglich im Nichts.
Einem Hook, der einen Netzwerk-Request macht, ist egal, ob jemand attached ist. Jeder Push-Dienst funktioniert. Der ntfy-Guide und der Guide zu Telegram, Slack und Discord haben Hooks zum Reinkopieren. Die sagen dir, dass etwas passiert ist, können Claude aber nicht antworten – ein Berechtigungs-Prompt wartet also weiter, bis du dich mit tmux attach -t api-refactor wieder dranhängst.
05Wo Claude Code Notifier ins Spiel kommt
Claude Code Notifier ist ein unabhängiges Tool (von TouchTap, nicht von Anthropic), das auf den Hooks von Claude Code aufbaut. Sein kostenloses Kommandozeilentool ccn läuft auf Mac, Windows und Linux. Da es sich in Claude Code einklinkt statt ins Terminal, funktioniert es in tmux, screen oder einer normalen Shell gleich, ob attached oder detached:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
Auf einem Desktop-Rechner zeigt es eine Desktop-Benachrichtigung, wenn Claude fertig ist, eine Berechtigung braucht oder eine Frage stellt. Koppelst du ein Handy, kommen dieselben Events als Push-Benachrichtigungen über das verschlüsselte Relay von TouchTap an, von jedem Rechner, auf dem ccn läuft, auch von einem Server, auf dem du per SSH bist.
Das Handy schließt die Lücke, die eine detachte Session hinterlässt. Kommt eine Berechtigungsanfrage, kannst du sie vom Handy aus einmalig erlauben, für die Session erlauben oder ablehnen, und Claude macht weiter, ohne dass du dich wieder dranhängst. Du kannst eine Antwort auswählen, wenn Claude eine Frage stellt, und direkt die nächste Anweisung schicken, sobald Claude fertig ist. Hast du in den letzten 30 Sekunden getippt, wartet nichts aufs Handy und das Terminal fragt wie gewohnt. Bist du weg, wartet das Terminal auf die Antwort vom Handy, bis zu einem Limit, das du festlegst (hold_ceiling_seconds), und hört sofort auf zu warten, sobald du die Tastatur anfasst.
Siehe Handy koppeln, Lange Tasks laufen lassen und die ccn-Seite. Die Handy-Apps brauchen ein Abo oder einen Lifetime-Kauf; siehe Preise.
06GNU screen
screen verhält sich hier ähnlich wie tmux. Laut der Hooks-Referenz von Anthropic funktioniert terminalSequence-Output von Hooks in screen, und screen zeigt eine Meldung, wenn ein Fenster, das du gerade nicht ansiehst, klingelt. Detachte screen-Sessions haben dasselbe Problem wie detachtes tmux: Nichts ist auf dem Bildschirm, also nimm einen Push.
07FAQ
Warum werden Claude Code-Benachrichtigungen in tmux nicht angezeigt?
tmux blockiert die Escape-Sequenzen von Claude Code, solange Passthrough nicht aktiv ist. Trag set -g allow-passthrough on in ~/.tmux.conf ein und führ tmux source-file ~/.tmux.conf aus.
Läuft Claude Code weiter, wenn ich mich von tmux trenne?
Ja. Der Prozess läuft im tmux-Server weiter, und seine Hooks werden weiterhin ausgelöst. Nur Benachrichtigungen, die ein verbundenes Terminal brauchen, erreichen dich dann nicht mehr.
Wie bekomme ich Benachrichtigungen aus einer getrennten tmux-Session?
Nutze einen Hook, der einen Push übers Netzwerk schickt, etwa über ntfy, einen Chat-Webhook oder die Handy-App von Claude Code Notifier. Terminal-Escape-Sequenzen und Bells brauchen einen verbundenen Client.
Kann ich eine Berechtigung freigeben, ohne mich wieder zu verbinden?
Mit einem einfachen Push-Dienst nicht. Mit Claude Code Notifier und einem gekoppelten Handy kannst du die Anfrage direkt auf dem Handy erlauben oder ablehnen, und die getrennte Session läuft weiter.
Wie erkenne ich, welche tmux-Session mich braucht?
Gib deinen Sessions Namen und nimm den Namen in die Benachrichtigung auf. Ein Hook kann ihn mit tmux display-message -p -t "$TMUX_PANE" '#S:#W' auslesen.