Di default Claude Code non mostra notifiche desktop in Windows Terminal, PowerShell o nel terminal di VS Code, quindi su Windows devi aggiungerle tu. Metti in %USERPROFILE%\.claude\settings.json un hook Notification (e un hook Stop per "finito") che esegua PowerShell: una finestra di messaggio funziona senza installare nulla, mentre il modulo BurntToast ti dà un vero toast. Se Claude Code gira dentro WSL, l'hook viene eseguito in Linux, quindi deve chiamare powershell.exe tramite l'interop di Windows per arrivare al desktop di Windows.
01Windows nativo o WSL: dove girano i tuoi hook
Claude Code gira o in nativo su Windows o dentro WSL, e questo determina come funziona un hook di notifica.
- Windows nativo. Le impostazioni stanno in
%USERPROFILE%\.claude\settings.json. Secondo il riferimento sugli hook di Anthropic, gli hook di tipo command girano di default in Git Bash, oppure in PowerShell se Git Bash non è installato. Puoi forzare PowerShell per un singolo hook con"shell": "powershell"; in quel caso Claude Code usapwsh.exe(PowerShell 7) se lo trova, altrimentipowershell.exe(Windows PowerShell 5.1). - WSL. Installi ed esegui
claudedentro il terminal di WSL, quindi il file di impostazioni è quello Linux,~/.claude/settings.jsonnella tua distribuzione, e gli hook girano in una shell Linux. Lìnotify-senddi solito non arriva al desktop di Windows. Chiama invece programmi Windows.
02La prova veloce: il bell del terminal
Il segnale più semplice è il bell. Aggiungi questo al tuo file di impostazioni:
{
"preferredNotifChannel": "terminal_bell"
}
A quel punto Claude Code invia un carattere bell quando finisce o ti aspetta. In Windows Terminal, cosa fa il bell si imposta per profilo con bellStyle nel suo settings.json. "bellStyle": ["window", "taskbar"] fa lampeggiare la finestra e il pulsante nella barra delle applicazioni invece di riprodurre un suono. La guida al bell del terminal approfondisce questa strada. Funziona solo finché il terminal è in vista.
03Un Notification hook con PowerShell
Questo è l'esempio per Windows della guida agli hook di Anthropic. Funziona senza installare nulla:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""
}
]
}
]
}
}
Apre una finestra di dialogo, non un toast nell'angolo dello schermo, e la finestra può aprirsi dietro il terminal. Prova prima il comando in PowerShell. Digita /hooks in Claude Code per verificare che l'hook sia caricato.
Il matcher vuoto scatta per ogni tipo di notifica, inclusi permission_prompt (un'approvazione è in attesa da circa sei secondi) e idle_prompt (Claude ha finito circa 60 secondi fa). La guida al Notification hook spiega le tempistiche.
04Un vero toast con BurntToast
BurntToast è un modulo PowerShell molto diffuso, mantenuto dalla community, per le notifiche toast di Windows. Installalo una volta per il tuo utente:
Install-Module -Name BurntToast -Scope CurrentUser
Poi verifica che funzioni:
New-BurntToastNotification -Text 'Claude Code', 'Claude needs your attention'
Usalo in un hook. Questa versione avvia PowerShell senza profilo e aggira la execution policy solo per questa chiamata, così si comporta allo stesso modo da Git Bash o da PowerShell:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude needs your attention'\""
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude has finished'\"",
"async": true
}
]
}
]
}
}
L'hook Stop gira alla fine di ogni turno, quindi vieni avvisato subito di un task finito invece che un minuto dopo; vedi la guida allo Stop hook. "async": true esegue l'hook in background, così un avvio lento di PowerShell non blocca Claude Code.
Se i toast non compaiono mai, controlla Impostazioni > Sistema > Notifiche: le notifiche devono essere attive e Non disturbare disattivato. Di solito i toast di BurntToast compaiono lì sotto Windows PowerShell, che deve avere anch'esso le notifiche abilitate.
05Da WSL: chiama Windows tramite interop
Dentro WSL l'hook gira in Linux, ma WSL può avviare programmi Windows col loro nome .exe. La guida di Anthropic precisa che powershell.exe deve essere nel tuo PATH tramite l'interop di Windows. È il comportamento di default, controllato da appendWindowsPath nella sezione [interop] di /etc/wsl.conf. Verifica dalla tua shell WSL:
command -v powershell.exe
Con BurntToast installato lato Windows, l'hook nel tuo ~/.claude/settings.json di WSL è lo stesso comando:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude has finished'\"",
"async": true
}
]
}
]
}
}
Avviare Windows PowerShell da WSL può richiedere un secondo o più, un motivo in più per usare "async": true.
06Dove si inserisce Claude Code Notifier
Gli hook qui sopra vanno bene se sei alla scrivania. Non servono a nulla quando ti allontani, e un toast non può approvare un comando per Claude.
Claude Code Notifier è uno strumento indipendente (realizzato da TouchTap, non da Anthropic) basato sugli hook di Claude Code. Il suo tool da riga di comando gratuito, ccn, gira su Mac, Windows e Linux; il supporto a Windows è in beta. Su Windows nativo, installalo da PowerShell:
irm https://claudecodenotifier.com/install.ps1 | iex
Aggiunge le sue voci di hook alle impostazioni di Claude Code, lascia intatto il resto del file e ne conserva un backup. Da subito mostra un toast Windows quando Claude finisce, ha bisogno di un permesso o fa una domanda, senza telefono né rete. Dato che si aggancia a Claude Code e non a un terminal, funziona allo stesso modo in Windows Terminal, PowerShell e nei terminal degli IDE.
Se Claude Code gira in WSL, installa ccn dentro WSL con il comando per Linux, perché è lì che si trovano Claude Code e le sue impostazioni:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
Poi esegui ccn test. Se una notifica desktop da dentro WSL arrivi o meno al desktop di Windows dipende dalla tua configurazione di WSL, quindi con WSL la strada affidabile è il telefono. Con un telefono associato, gli eventi arrivano come notifiche push e dal telefono puoi consentire una volta, consentire per la sessione o negare un permesso, rispondere alle domande di Claude e inviare l'istruzione successiva. Vedi associare un telefono, la pagina di ccn e i prezzi delle app per telefono.
Se installi ccn, rimuovi i tuoi hook per i toast così eviti notifiche doppie.
07FAQ
Perché il mio hook PowerShell non fa niente su Windows?
Prima prova il comando esatto in PowerShell. Se lì funziona, controlla che /hooks elenchi l'hook e che l'escaping del JSON sia corretto (ogni " interno vuole un backslash). Per BurntToast, assicurati che il modulo sia installato per lo stesso utente che esegue Claude Code e che Non disturbare sia disattivato.
Claude Code su Windows ha bisogno di Git Bash per gli hook?
No. Gli hook girano in Git Bash se è installato Git for Windows, altrimenti in PowerShell. Puoi anche impostare "shell": "powershell" su un singolo hook.
notify-send funziona in WSL?
Di solito non verso il desktop di Windows. Il metodo affidabile è chiamare powershell.exe dall'hook tramite l'interop di WSL, come mostrato sopra.
Windows Terminal può mostrare da solo le notifiche di Claude Code?
Non di default. Imposta preferredNotifChannel su terminal_bell e scegli un bellStyle che faccia lampeggiare la finestra o la barra delle applicazioni, oppure usa un hook per avere un toast.
C'è un modo gratuito per ricevere una notifica su Windows?
Sì. Sia gli hook PowerShell qui sopra sia le notifiche desktop di ccn sono gratuiti. Solo le app per telefono richiedono un abbonamento o un acquisto a vita.