Dentro tmux, le notifiche desktop di Claude Code non arrivano mai al terminale esterno finché non aggiungi set -g allow-passthrough on a ~/.tmux.conf. Questo risolve il problema finché sei attached. Quando fai detach, nessun terminale mostra la sessione, quindi niente sullo schermo può avvisarti, ma Claude Code continua a girare e i suoi hook continuano a scattare. Per ricevere notizie da una sessione detached, usa un hook che invia una push via rete, al telefono o a un'app di chat, invece di uno che dipende da un terminale.
01Attached: fai passare le notifiche attraverso tmux
tmux sta tra Claude Code e il tuo terminale e, di default, blocca le escape sequence che Claude Code usa per le notifiche desktop. La guida al terminale di Anthropic fornisce questo blocco per ~/.tmux.conf:
set -g allow-passthrough on
set -g focus-events on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
Applicalo al server in esecuzione:
tmux source-file ~/.tmux.conf
allow-passthrough fa arrivare notifiche e aggiornamenti di avanzamento al terminale esterno. Le altre righe sistemano Shift+Invio per andare a capo. Con questa configurazione, i terminali che mostrano le notifiche di Claude Code fuori da tmux (Ghostty, Kitty e iTerm2 con gli avvisi attivi) le mostrano anche dentro tmux.
Lo stesso vale per gli hook che restituiscono una terminalSequence. Il riferimento sugli hook di Anthropic dice che Claude Code scrive queste sequenze da solo, e la cosa funziona dentro tmux e GNU screen. Le guide per macOS, Linux e SSH contengono degli esempi.
02Attached, ma in un'altra finestra: usa il bell
Se Claude Code gira in una finestra di tmux e tu lavori in un'altra, il bell è un segnale semplice. Imposta Claude Code perché lo invii sempre:
{
"preferredNotifChannel": "terminal_bell"
}
Poi fai in modo che tmux reagisca, in ~/.tmux.conf:
setw -g monitor-bell on
set -g bell-action other
set -g visual-bell off
monitor-bell (attivo di default) segnala una finestra che ha suonato il bell, e tmux la marca con ! nella barra di stato. bell-action other inoltra al terminale i bell delle finestre diverse da quella che stai guardando, così il terminale può emettere un suono o far rimbalzare l'icona. Usa any per includere anche la finestra corrente. Impostando visual-bell su on, tmux mostra un messaggio invece di inoltrare il bell.
03Indica quale sessione ha bisogno di te
Con più sessioni attive, una notifica che dice solo "Claude ha bisogno di te" serve a poco. Un hook gira nell'ambiente del pane, quindi può chiedere a tmux il nome della sessione e della finestra. Questo esempio per Linux li mostra in una notifica desktop:
#!/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"
Salvalo come ~/.claude/hooks/notify-tmux.sh, esegui chmod +x e usalo come comando di un hook Notification o Stop. #S è il nome della sessione e #W quello della finestra; dai un nome alle sessioni con tmux new -s api-refactor e la notifica ti dirà dove andare. Sostituisci notify-send con il comando della tua piattaforma, o con una push. La guida alle sessioni multiple spiega altri modi per distinguere le sessioni.
04Detached: ti serve una push
Il bello di tmux è proprio il detach: avvii un task lungo, fai detach e te ne vai. Claude Code continua a lavorare nella sessione detached. Però ora non c'è nessun terminale che possa mostrare una escape sequence o un bell, e se il server tmux è stato avviato via SSH, anche un comando di notifica desktop potrebbe non avere dove andare.
A un hook che fa una richiesta di rete non importa se qualcuno è attached. Va bene qualsiasi servizio di push. La guida a ntfy e la guida a Telegram, Slack e Discord contengono hook da copiare e incollare. Questi ti dicono che è successo qualcosa, ma non possono rispondere a Claude: una richiesta di permesso resta in attesa finché non ti ricolleghi con tmux attach -t api-refactor.
05Dove si inserisce Claude Code Notifier
Claude Code Notifier è uno strumento indipendente (realizzato da TouchTap, non da Anthropic) basato sugli hook di Claude Code. Il suo strumento da riga di comando gratuito, ccn, funziona su Mac, Windows e Linux. Siccome si aggancia a Claude Code e non al terminale, funziona allo stesso modo in tmux, screen o una semplice shell, attached o detached:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
Su una macchina desktop mostra una notifica desktop quando Claude finisce, chiede un permesso o fa una domanda. Associa un telefono e gli stessi eventi arrivano come notifiche push tramite il relay cifrato di TouchTap, da qualsiasi macchina su cui gira ccn, compreso un server a cui ti sei collegato via SSH.
Il telefono colma il vuoto lasciato da una sessione detached. Quando arriva una richiesta di permesso, puoi consentire una volta, consentire per la sessione o negare direttamente dal telefono, e Claude va avanti senza che tu debba ricollegarti. Puoi scegliere una risposta quando Claude fa una domanda e inviare l'istruzione successiva appena Claude finisce. Se hai digitato negli ultimi 30 secondi, niente aspetta il telefono e il terminale chiede come al solito. Se non sei al computer, il terminale aspetta la risposta dal telefono fino a un limite che scegli tu (hold_ceiling_seconds), e smette di aspettare appena tocchi la tastiera.
Vedi associare un telefono, allontanarsi durante i task lunghi e la pagina di ccn. Le app per telefono richiedono un abbonamento o un acquisto a vita; consulta i prezzi.
06GNU screen
Per questo screen funziona più o meno come tmux. Il riferimento sugli hook di Anthropic dice che l'output terminalSequence degli hook funziona dentro screen, e screen mostra un messaggio quando una finestra che non stai guardando suona il bell. Le sessioni screen detached hanno lo stesso problema di quelle tmux: non c'è niente sullo schermo, quindi usa una push.
07FAQ
Perché le notifiche di Claude Code non compaiono dentro tmux?
tmux blocca le escape sequence usate da Claude Code se il passthrough non è attivo. Aggiungi set -g allow-passthrough on a ~/.tmux.conf ed esegui tmux source-file ~/.tmux.conf.
Claude Code continua a girare quando faccio detach da tmux?
Sì. Il processo continua a girare nel server tmux e i suoi hook continuano a scattare. Smettono di arrivarti solo le notifiche che richiedono un terminal collegato.
Come ricevo notifiche da una sessione tmux in detach?
Usa un hook che invia una push via rete, come ntfy, un webhook di chat o l'app per telefono di Claude Code Notifier. Le escape sequence del terminal e il bell richiedono un client collegato.
Posso approvare un permesso senza fare reattach?
Non con un semplice servizio di push. Con Claude Code Notifier e un telefono abbinato puoi consentire o negare la richiesta dal telefono, e la sessione in detach va avanti.
Come capisco quale sessione tmux ha bisogno di me?
Dai un nome alle sessioni e includilo nella notifica. Un hook può leggerlo con tmux display-message -p -t "$TMUX_PANE" '#S:#W'.