Di default i terminal degli IDE in VS Code, Cursor e JetBrains non ricevono notifiche desktop da Claude Code, perché Claude Code le invia solo a iTerm2, Ghostty e Kitty. Per ricevere avvisi, imposta "preferredNotifChannel": "terminal_bell" e lascia che sia l'IDE a gestire il bell, oppure aggiungi a ~/.claude/settings.json un hook Notification che mostri una notifica desktop o invii una push. Gli hook partono sia nel terminal integrato sia nel pannello chat dell'estensione di VS Code, perché entrambi leggono lo stesso file di impostazioni.
01Perché l'IDE resta muto
L'avviso integrato di Claude Code dipende dal terminal in cui gira. Con l'impostazione di default mostra una notifica desktop solo in iTerm2, Ghostty e Kitty, e la documentazione sui terminal di Anthropic cita esplicitamente il terminal integrato di VS Code tra quelli che non ne ricevono. I terminal di JetBrains sono nella stessa situazione. La guida al terminal bell spiega tutti i valori di preferredNotifChannel.
Ci sono due modi per usare Claude Code in VS Code e Cursor, e la differenza conta:
claude nel terminal integrato~/.claude/settings.json~/.claude/settings.json (lo stesso file)Gli IDE JetBrains (IntelliJ IDEA, PyCharm, WebStorm, GoLand, Android Studio e altri) funzionano come la colonna di destra: il plugin Claude Code esegue claude nel terminal integrato dell'IDE e si collega a esso.
02Opzione 1: la campanella del terminal
Se esegui claude in un terminal integrato, aggiungi questo a ~/.claude/settings.json:
{
"preferredNotifChannel": "terminal_bell"
}
A quel punto Claude Code invia il carattere della campanella quando ha bisogno di te. Cosa succede dopo dipende dall'IDE. VS Code e Cursor gestiscono la campanella del terminal tramite le impostazioni dei segnali di accessibilità: cerca "terminal bell" nelle Impostazioni per scegliere un suono. Negli IDE JetBrains, controlla le impostazioni del terminal per la tua versione dell'IDE. Una campanella è facile da perdere senza cuffie o con l'IDE in background, quindi la maggior parte passa all'opzione 2.
03Opzione 2: un Notification hook
Un hook esegue un comando a tua scelta e funziona in qualsiasi IDE, sia nel terminal sia nel pannello chat di VS Code. Questo mostra una notifica desktop su macOS:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"
}
]
}
]
}
}
Su Linux usa notify-send 'Claude Code' 'Claude Code needs your attention', e su Windows un comando PowerShell; la guida per Linux e la guida per Windows hanno versioni testate. Se osascript non mostra nulla su macOS, apri Impostazioni di Sistema > Notifiche e consenti le notifiche per Script Editor, l'app da cui arrivano le notifiche di osascript.
Nell'estensione VS Code puoi controllare gli hook senza aprire il file: apri la sezione Customize e seleziona Hooks per vedere gli hook caricati nella sessione, raggruppati per evento (Claude Code v2.1.269 o successiva).
Per essere avvisato appena Claude finisce, e non solo quando è in attesa, aggiungi anche un hook Stop. La guida per ricevere una notifica quando Claude finisce li mostra entrambi insieme.
Nell'estensione VS Code le tempistiche sono diverse
In un terminal, la notifica permission_prompt aspetta che il prompt resti circa sei secondi senza che tu prema tasti, e ogni tasto premuto la rimanda. Nell'estensione VS Code (e in Claude Desktop), secondo la documentazione di Anthropic, parte circa sei secondi dopo la richiesta di Claude, senza rimandare mentre scrivi, e non parte affatto se rispondi prima. Se ti disturba mentre lavori nel pannello, imposta la variabile d'ambiente CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS=1 per disattivarla lì. La guida al Notification hook elenca tutti i tipi di notifica e quando partono.
04Finestre remote: SSH, WSL, dev container e JetBrains Remote Development
È qui che le notifiche negli IDE vanno storte più spesso. Quando una finestra di VS Code o Cursor è collegata a un host SSH, a WSL o a un dev container, Claude Code gira su quel sistema e legge il ~/.claude/settings.json che si trova lì, non sul tuo portatile. Anche i tuoi hook girano lì. Un comando desktop come osascript o notify-send non ha quindi un desktop su cui apparire e fallisce in silenzio.
JetBrains Remote Development è simile: il plugin Claude Code va installato sull'host remoto, e Claude Code gira lì.
Cosa funziona invece:
- WSL su Windows: un hook può chiamare
powershell.exetramite l'interop di Windows, purché sia nelPATHdentro WSL. - Host SSH e container: invia l'avviso via rete a qualcosa che ti raggiunga, come ntfy o un webhook Telegram, Slack o Discord. La guida SSH illustra le opzioni.
05Usa un terminal esterno con /ide
Se vuoi la notifica desktop integrata, esegui Claude Code in iTerm2, Ghostty o Kitty e collegalo all'IDE con il comando /ide. La visualizzazione dei diff e la condivisione della selezione continuano a funzionare tramite l'IDE, mentre gli avvisi arrivano dal terminal esterno. In iTerm2 devi prima attivare le impostazioni degli avvisi, come descritto nella guida alla campanella del terminal.
06Altre cose utili da sapere
- Shift+Invio: in VS Code e Cursor, esegui
/terminal-setupuna volta perché Shift+Invio inserisca un a capo. Nei terminal JetBrains non è disponibile; usa Ctrl+J, oppure\seguito da Invio. - Remote Control: il Remote Control di Anthropic si può avviare dall'estensione VS Code con
/remote-control, e ti permette di seguire la sessione dall'app mobile di Claude. Ha requisiti propri di piano e di accesso; vedi il confronto. - Più finestre: se usi Claude Code in più finestre dell'IDE, metti la cartella del progetto nell'avviso così sai quale ha bisogno di te. L'input dell'hook include
cwd. Vedi eseguire più sessioni.
07Dove si inserisce Claude Code Notifier
Un hook Notification con il notificatore della tua piattaforma è una buona soluzione gratuita se sei davanti all'IDE. Non ti aiuta quando sei lontano dallo schermo, e non ti permette di rispondere.
Anche ccn di Claude Code Notifier è un hook, quindi funziona nei terminal degli IDE come in qualsiasi altro terminal, su Mac, Windows e Linux. Da solo mostra una notifica desktop quando Claude finisce, chiede un permesso o fa una domanda. Con un telefono associato puoi consentire una volta, consentire per la sessione o negare una richiesta di permesso, scegliere una risposta alla domanda di Claude e inviare l'istruzione successiva dal telefono. Se hai scritto negli ultimi 30 secondi, il terminal chiede come al solito e sul telefono non resta nulla in attesa. Le push al telefono passano per un relay e non dal desktop locale, quindi se installi ccn sulla macchina remota a cui è collegata la finestra dell'IDE, il telefono riceve comunque gli avvisi. Claude Code Notifier è indipendente e non è realizzato da Anthropic. Vedi la pagina di ccn e associare un telefono.
08FAQ
Perché Claude Code non mi notifica in VS Code?
Il terminal integrato di VS Code non riceve la notifica desktop integrata di Claude Code. Imposta "preferredNotifChannel": "terminal_bell" oppure aggiungi un hook Notification in ~/.claude/settings.json, poi avvia una nuova sessione.
Gli hook funzionano nell'estensione VS Code di Claude Code?
Sì. Claude Code attiva gli stessi eventi hook nelle estensioni IDE e nel terminal, e l'estensione e la CLI condividono ~/.claude/settings.json. La sezione Customize dell'estensione permette di vedere e modificare gli hook.
Funziona anche in Cursor?
Sì. Cursor può installare la stessa estensione Claude Code, e claude gira nel suo terminal integrato come in VS Code. Vale tutto quanto detto sopra.
Il mio hook funziona in locale ma non in una finestra Remote SSH. Perché?
In una finestra remota, Claude Code e i suoi hook girano sulla macchina remota, che non ha un desktop. Modifica ~/.claude/settings.json su quella macchina e usa una push via rete come ntfy al posto di un comando desktop.