Binnen tmux bereiken de desktopnotificaties van Claude Code je buitenste terminal pas als je set -g allow-passthrough on toevoegt aan ~/.tmux.conf. Dat lost het op zolang je attached bent. Zodra je detacht, toont geen enkele terminal de sessie meer, dus niets op je scherm kan je waarschuwen, maar Claude Code blijft draaien en zijn hooks blijven afgaan. Wil je iets horen van een detached sessie, gebruik dan een hook die een push over het netwerk stuurt, naar je telefoon of een chatapp, in plaats van een die op een terminal leunt.
01Attached: laat notificaties door tmux
tmux zit tussen Claude Code en je terminal en slikt standaard de escape sequences in die Claude Code voor desktopnotificaties gebruikt. De terminalgids van Anthropic geeft dit blok voor ~/.tmux.conf:
set -g allow-passthrough on
set -g focus-events on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
Pas het toe op de draaiende server:
tmux source-file ~/.tmux.conf
allow-passthrough laat notificaties en voortgangsupdates door naar de buitenste terminal. De andere regels repareren Shift+Enter voor nieuwe regels. Hiermee tonen terminals die de notificaties van Claude Code buiten tmux tonen (Ghostty, Kitty en iTerm2 met alerts aan) ze ook binnen tmux.
Hetzelfde geldt voor hooks die een terminalSequence teruggeven. Volgens de hooks-referentie van Anthropic schrijft Claude Code deze sequences zelf, wat werkt binnen tmux en GNU screen. De gidsen voor macOS, Linux en SSH hebben voorbeelden.
02Attached, maar in een ander venster: gebruik de bell
Draait Claude Code in het ene tmux-venster en werk je in een ander, dan is de bell een simpel signaal. Laat Claude Code er altijd een sturen:
{
"preferredNotifChannel": "terminal_bell"
}
Laat tmux er dan op reageren, in ~/.tmux.conf:
setw -g monitor-bell on
set -g bell-action other
set -g visual-bell off
monitor-bell (standaard aan) markeert een venster dat de bell liet afgaan, en tmux zet er een ! bij in de statusregel. bell-action other stuurt bells uit andere vensters dan het venster dat je bekijkt door naar je terminal, zodat die kan piepen of stuiteren. Gebruik any om ook het huidige venster mee te nemen. Zet je visual-bell op on, dan toont tmux een bericht in plaats van de bell door te sturen.
03Laat zien welke sessie je nodig heeft
Met meerdere sessies tegelijk heb je weinig aan een notificatie die alleen zegt "Claude heeft je nodig". Een hook draait in de omgeving van de pane, dus kan hij tmux om de sessie- en vensternaam vragen. Dit Linux-voorbeeld toont ze in een desktopnotificatie:
#!/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"
Sla het op als ~/.claude/hooks/notify-tmux.sh, draai er chmod +x op en gebruik het als command voor een Notification- of Stop-hook. #S is de sessienaam en #W de vensternaam; geef je sessies een naam met tmux new -s api-refactor en de notificatie vertelt je waar je heen moet. Vervang notify-send door het commando van je platform, of door een push. De gids over meerdere sessies heeft meer manieren om sessies uit elkaar te houden.
04Detached: je hebt een push nodig
Detachen is het hele punt van tmux: je start een lange taak, detacht en gaat weg. Claude Code werkt door in de detached sessie. Maar er is nu geen terminal meer om een escape sequence of bell te tonen, en als de tmux-server via SSH is gestart, kan een desktopnotificatiecommando ook nergens heen.
Een hook die een netwerkrequest doet, maakt het niet uit of er iemand attached is. Elke pushdienst werkt. De ntfy-gids en de gids voor Telegram, Slack en Discord hebben hooks die je zo kunt plakken. Die vertellen je dat er iets gebeurd is; ze kunnen Claude niet antwoorden, dus een permissieprompt blijft wachten tot je opnieuw attacht met tmux attach -t api-refactor.
05Waar Claude Code Notifier in past
Claude Code Notifier is een onafhankelijke tool (gemaakt door TouchTap, niet door Anthropic) gebouwd op de hooks van Claude Code. De gratis command line tool, ccn, draait op Mac, Windows en Linux. Omdat hij inhaakt op Claude Code en niet op een terminal, werkt hij hetzelfde in tmux, screen of een gewone shell, attached of detached:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
Op een desktop toont hij een desktopnotificatie wanneer Claude klaar is, een permissie nodig heeft of een vraag stelt. Koppel een telefoon en dezelfde events komen binnen als pushnotificaties via de versleutelde relay van TouchTap, vanaf elke machine waar ccn op draait, ook een server waar je via SSH op zit.
De telefoon dicht het gat dat een detached sessie achterlaat. Bij een permissieverzoek kun je vanaf je telefoon eenmalig toestaan, voor de sessie toestaan of weigeren, en Claude gaat door zonder dat je opnieuw attacht. Je kunt een antwoord kiezen als Claude een vraag stelt, en de volgende instructie sturen zodra Claude klaar is. Heb je in de laatste 30 seconden getypt, dan wacht er niets op de telefoon en vraagt de terminal het zoals gewoonlijk. Ben je weg, dan wacht de terminal op het antwoord van je telefoon tot een maximum dat je zelf kiest (hold_ceiling_seconds), en stopt met wachten zodra je het toetsenbord aanraakt.
Zie een telefoon koppelen, weglopen bij lange taken en de ccn-pagina. Voor de telefoonapps heb je een abonnement of lifetime-aankoop nodig; zie prijzen.
06GNU screen
screen werkt hiervoor grotendeels als tmux. Volgens de hooks-referentie van Anthropic werkt terminalSequence-output van hooks binnen screen, en screen toont een bericht als een venster dat je niet bekijkt de bell laat afgaan. Detached screen-sessies hebben hetzelfde probleem als detached tmux: er staat niets op je scherm, dus gebruik een push.
07FAQ
Waarom verschijnen Claude Code-notificaties niet in tmux?
tmux blokkeert de escape sequences die Claude Code gebruikt, tenzij passthrough aanstaat. Voeg set -g allow-passthrough on toe aan ~/.tmux.conf en draai tmux source-file ~/.tmux.conf.
Blijft Claude Code draaien als ik loskoppel van tmux?
Ja. Het proces blijft draaien in de tmux-server en de hooks blijven gewoon afgaan. Alleen meldingen die een gekoppelde terminal nodig hebben, bereiken je niet meer.
Hoe krijg ik meldingen vanuit een losgekoppelde tmux-sessie?
Gebruik een hook die een push via het netwerk verstuurt, zoals ntfy, een chatwebhook of de telefoonapp van Claude Code Notifier. Terminal-escapesequenties en bells hebben een gekoppelde client nodig.
Kan ik een permissie goedkeuren zonder opnieuw te koppelen?
Niet met een gewone pushdienst. Met Claude Code Notifier en een gekoppelde telefoon kun je het verzoek vanaf je telefoon toestaan of weigeren, en gaat de losgekoppelde sessie gewoon verder.
Hoe zie ik welke tmux-sessie mij nodig heeft?
Geef je sessies een naam en zet die naam in de melding. Een hook kan hem uitlezen met tmux display-message -p -t "$TMUX_PANE" '#S:#W'.