Notifiche di Claude Code: sapere quando è in attesa e quando ha finito

“Una sessione bloccata sembra identica a una sessione finita, così apro prima quella sbagliata.” Questa frase tratta da una richiesta di funzionalità per Claude Code riassume tutto. Ecco come ottenere un segnale diverso per ciascun caso.

Di Aslan, team di Pet Island · Aggiornato il 26 ott 2026 · 4 min di lettura

RISPOSTA BREVE

Claude Code genera già una notifica quando finisce o attende un'autorizzazione mentre sei via, ma per impostazione predefinita solo Ghostty, Kitty e iTerm2 la mostrano come notifica desktop. Altrove, imposta "preferredNotifChannel": "terminal_bell". Per due suoni diversi, usa un hook Notification con il matcher permission_prompt per “ha bisogno di te” e un hook Stop per “ha finito”.

Cosa fa Claude Code da solo

Quando Claude finisce un'attività o si ferma su una richiesta di autorizzazione, e sembri lontano dal terminale, genera un evento di notifica. Per impostazione predefinita lo trasforma in una notifica desktop solo in Ghostty, Kitty e iTerm2. In Windows Terminal, nel terminale di VS Code, in Warp e negli altri non succede nulla di visibile finché non lo configuri.

La soluzione più semplice è il segnale acustico del terminale:

~/.claude/settings.jsonCopia
{
"preferredNotifChannel": "terminal_bell"
}

Cosa fa il segnale acustico dipende dal terminale. In Windows Terminal, l'impostazione bellStyle può essere audible (il valore predefinito), window, taskbar, all o none. Con all, Windows Terminal riproduce un suono e fa lampeggiare l'icona sulla barra delle applicazioni.

  • iTerm2: Settings → Profiles → Terminal → seleziona “Notification Center Alerts”, poi Filter Alerts → attiva “Send escape sequence-generated alerts”.
  • tmux: aggiungi set -g allow-passthrough on a ~/.tmux.conf, altrimenti le notifiche non raggiungono mai il terminale esterno.
  • Tramite SSH: la notifica desktop torna alla tua macchina locale, quindi anche le sessioni remote possono avvisarti.

La richiesta di funzionalità per le notifiche di sistema (#26581, 34 voti) è stata chiusa come già disponibile, rimandando proprio a questa notifica integrata. La richiesta di un segnale diverso per “in attesa” e “finito” (#94373) è ancora aperta. È qui che entrano in gioco gli hook.

Due eventi: Notification e Stop

  • Notification si attiva quando Claude Code invia una notifica. Il suo matcher è il tipo di notifica. I due che ti interessano sono permission_prompt (Claude ha bisogno che tu approvi l'uso di uno strumento e la richiesta attende da circa sei secondi) e idle_prompt (Claude ha finito di rispondere circa 60 secondi fa e da allora non hai digitato nulla).
  • Stop si attiva ogni volta che Claude finisce di rispondere. Non si attiva quando lo interrompi; gli errori dell'API attivano invece StopFailure.

Gli hook vengono eseguiti insieme alla notifica integrata invece di sostituirla, quindi puoi tenerli entrambi.

Windows: due suoni diversi

Su Windows gli hook vengono eseguiti in Git Bash, oppure in PowerShell se Git Bash non è installato. Impostare "shell": "powershell" elimina ogni incertezza. Questa configurazione emette un doppio bip acuto quando Claude ha bisogno di un'autorizzazione e un bip grave quando ha finito:

%USERPROFILE%\.claude\settings.jsonCopia
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [
{ "type": "command", "shell": "powershell",
"command": "[Console]::Beep(1320, 150); [Console]::Beep(1320, 150)" }
]
}
],
"Stop": [
{
"hooks": [
{ "type": "command", "shell": "powershell",
"command": "[Console]::Beep(660, 300)" }
]
}
]
}
}

Console.Beep accetta una frequenza in hertz e una durata in millisecondi, e attende la fine del bip. La guida agli hook di Anthropic mostra anche un esempio per Windows che apre una finestra di messaggio con System.Windows.Forms; come nota la stessa Anthropic, si tratta di una finestra di dialogo e non di una notifica, e può aprirsi dietro il terminale.

macOS e Linux

La documentazione di Anthropic usa afplay su macOS:

~/.claude/settings.jsonCopia
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
}
],
"Stop": [
{
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Pop.aiff" }]
}
]
}
}

Per un avviso visibile, usa osascript -e 'display notification "Claude needs you" with title "Claude Code"' su macOS, oppure notify-send "Claude Code" "Claude needs you" su Linux.

Dettagli che ti risparmiano una serata

  • Stop si attiva spesso. Si attiva ogni volta che Claude finisce di rispondere, non solo quando un'intera attività è completata. Se è troppo invadente, usa invece la notifica idle_prompt. Attende circa un minuto e si attiva solo se non hai digitato nulla.
  • Leggi l'evento se ti serve. L'input di Notification include message, title e notification_type, così uno script può mostrare la richiesta effettiva.
  • Vista degli agenti. Se esegui sessioni in background con claude agents, ricevi una notifica tramite lo stesso preferredNotifChannel quando una sessione inizia ad aver bisogno di input, finisce o fallisce, e l'hook Notification si attiva con il tipo agent_needs_input o agent_completed.
  • Stato nel terminale. I terminali che implementano il protocollo di stato OSC 7501 possono mostrare se ogni sessione di Claude Code sta lavorando, è in attesa o ha finito. Claude Code v2.1.295 o successive lo segnalano automaticamente.
  • L'hook non si attiva su Windows? Vedi Gli hook di Claude Code non funzionano su Windows. È quasi sempre colpa della shell.

Capire quale sessione è e rispondere

Un suono ti dice che è successo qualcosa. Non ti dice da quale dei tuoi tre terminali arriva, né cosa vuole eseguire Claude. Pet Island dà a ogni sessione di Claude Code un posto su una piccola isola nella parte alta dello schermo: al lavoro, in attesa di te o finita. Una richiesta di autorizzazione arriva con il comando o il diff, e la consenti o la neghi direttamente lì; domande e piani funzionano allo stesso modo. Un clic ti porta al terminale esatto quando vuoi guardare più da vicino.

FAQ

Claude Code ha le notifiche?

Sì. Quando finisce o attende un'autorizzazione mentre sei via, genera una notifica. Ghostty, Kitty e iTerm2 la mostrano per impostazione predefinita come notifica desktop; negli altri terminali imposta preferredNotifChannel su "terminal_bell" o aggiungi un hook Notification.

Come faccio a ricevere un suono quando Claude Code ha finito?

Aggiungi un hook Stop che riproduca un suono, ad esempio afplay su macOS o [Console]::Beep in PowerShell su Windows.

Come distinguo “ha bisogno di un'autorizzazione” da “ha finito”?

Usa un hook Notification con il matcher permission_prompt per un suono e un hook Stop per un altro.

Perché non ricevo notifiche in Windows Terminal o VS Code?

Per impostazione predefinita Claude Code invia notifiche desktop solo in Ghostty, Kitty e iTerm2. Imposta preferredNotifChannel su "terminal_bell" o usa un hook.

Le notifiche funzionano dentro tmux?

Sì, dopo aver aggiunto set -g allow-passthrough on a ~/.tmux.conf.

Fonti

Ogni impostazione e comportamento descritti in questa pagina sono stati verificati su queste pagine il 26 ottobre 2026. Gli agenti cambiano in fretta: se qualcosa non corrisponde più, fa fede la pagina ufficiale.

CONTINUA A LEGGERE

Rispondi a tutti i tuoi agenti dalla parte alta dello schermo.

Windows e Mac · 7 giorni gratis, poi 8,99 $ una tantum · 1 $ di ogni vendita sfama gli animali randagi

Prova Pet Island gratis