Skip to main content
La messaggistica tra sessioni richiede Claude Code v2.1.224 o successivo su macOS e Linux, incluso Linux all’interno di WSL 2. Su Windows nativo, richiede Claude Code v2.1.234 o successivo. Quando una sessione soddisfa i requisiti, la messaggistica è attiva senza nulla da abilitare. Vedi Disponibilità per i requisiti del provider e come confermare che una sessione lo supporta.
La messaggistica tra sessioni consente a Claude di consegnare un messaggio da una delle tue sessioni di Claude Code a un’altra. Quando una modifica in una sessione interrompe ciò su cui un’altra sta lavorando, Claude può avvertire quella sessione prima che tu te ne accorga. Quando una sessione risolve una domanda su cui un’altra è bloccata, Claude può inviare la risposta attraverso. Un messaggio è un pezzo di testo che un Claude scrive a un altro, mai la cronologia della conversazione del mittente o i file. Per spostare un’intera conversazione o il suo contesto, riprendi la sessione invece. Claude utilizza due strumenti per questo: ListAgents per scoprire quali agenti può raggiungere, e SendMessage per consegnare un messaggio a uno di essi per nome. Con lo stesso strumento SendMessage, Claude può anche inviare messaggi a subagenti e ai compagni di team di agenti all’interno di una singola sessione o team. Questa pagina copre i messaggi tra le tue sessioni indipendenti.

Quando utilizzare la messaggistica tra sessioni

Utilizza la messaggistica quando una delle tue sessioni ha qualcosa che un’altra sessione ha bisogno a metà compito. Claude può inviare un messaggio da solo quando vede la necessità, ad esempio dopo aver apportato una modifica che influisce sul lavoro che un’altra sessione sta svolgendo, oppure puoi chiedergli di inviarne uno. I casi comuni sono:
  • Consegna un risultato: quando una sessione scopre un cambiamento che interrompe il funzionamento o prende una decisione, Claude lo riassume per la sessione che lavora sull’area interessata, invece di doverlo rispiegare lì.
  • Coordina worktree paralleli: quando le sessioni lavorano lo stesso repository in worktree separati, Claude può dire alle altre sessioni cosa è stato implementato.
  • Ottieni lo stato dal lavoro a lunga esecuzione: fai in modo che una migrazione o un’esecuzione di test riferisca alla sessione che stai osservando, oppure chiedilo tu stesso da lì. Se quella sessione è su questa macchina, Claude può anche chiederle un avviso quando successivamente diventa inattiva o esce.
  • Messaggi tra macchine: raggiungi una delle tue sessioni su un’altra macchina o sul web.
Utilizza la messaggistica tra sessioni indipendenti che avvii e dirigi tu stesso. Claude Code ha una funzione dedicata per ognuno degli altri modi di eseguire o raggiungere più sessioni, quindi utilizza quella costruita per quello che stai facendo:
  • Per continuare una conversazione in un altro terminale, o condividere il suo contesto con una nuova sessione, riprendi la sessione
  • Per un team coordinato di sessioni che Claude genera e supervisiona, utilizza team di agenti
  • Per osservare e dirigere molte sessioni da un unico posto, utilizza agent view
  • Per dirigere una sessione tu stesso dal tuo telefono o da un altro dispositivo, piuttosto che far inviare messaggi alle sessioni l’una all’altra, utilizza Remote Control
  • Per spingere eventi esterni, come risultati CI o messaggi di chat, in una sessione, utilizza channels

Invia un messaggio a un’altra sessione

Quando una delle tue sessioni apprende qualcosa che un’altra sessione ha bisogno, come un risultato, uno stato o una decisione, Claude lo passa invece di farti copiare e incollare tra i terminali. Claude scopre il target con ListAgents e invia con SendMessage, quindi non chiami mai nessuno dei due strumenti tu stesso. Claude può decidere di inviare un messaggio senza essere chiesto, e puoi anche richiederne uno. Per richiederne uno tu stesso, dì a Claude cosa vuoi che l’altra sessione sappia o faccia. Questo esempio è un prompt che digiti, non un messaggio che Claude invia:
Claude scrive il messaggio vero e proprio, quindi il tuo prompt può lasciare il contenuto a Claude. Questo prompt chiede un riassunto senza dettarne la formulazione, e quello che Claude invia varia:
Per nominare il target tu stesso, menziona la sessione nel tuo prompt: digita @ seguito dalle prime lettere del nome della sessione e scegli la sessione dal typeahead, nello stesso modo in cui @-menzioni un subagente. Richiede Claude Code v2.1.232 o successiva. Claude Code inserisce la menzione, come @api-worker, e dice a Claude quale sessione nomina, quindi Claude può inviare un messaggio a quella sessione senza elencare prima le tue sessioni. Questo prompt nomina il target con una menzione:
Il typeahead elenca le tue altre sessioni live su questa macchina. Due casi richiedono più delle prime lettere di un nome:
  • Una sessione oltre questa macchina: una sessione cloud o Remote Control appare nel typeahead solo dopo che Claude ha elencato o inviato messaggi alle tue sessioni oltre questa macchina, quindi chiedi a Claude di elencarle prima.
  • Un nome con uno spazio o altri caratteri al di fuori di lettere, cifre, trattini e sottolineature: digitalo tra virgolette doppie, come @"release notes". Quando scegli la sessione dal typeahead, Claude Code inserisce le virgolette per te.
Puoi anche digitare la menzione senza il picker. Quando più di una sessione live risponde al nome menzionato, Claude ti chiede quale intendi prima di inviare. Per come appare il messaggio che Claude scrive quando arriva, incluso un esempio di uno, vedi come appare un messaggio.

Consegna del messaggio

Il Claude ricevente legge il messaggio tra le chiamate di strumenti durante un turno attivo, quindi uno strumento in esecuzione non viene mai interrotto. Quando la sessione ricevente è inattiva, Claude Code avvia un nuovo turno con il messaggio. Un messaggio da un’altra sessione arriva come testo semplice. Se menziona un file o una risorsa MCP con @, Claude vede la menzione come scritta e Claude Code non allega nulla, indipendentemente dal fatto che il messaggio avvii un nuovo turno o arrivi durante uno. Claude può comunque aprire un percorso menzionato sulla macchina ricevente con i suoi strumenti, soggetto alle autorizzazioni di quella sessione. Prima della v2.1.251, una menzione @ in un messaggio che ha avviato un nuovo turno ha allegato il file o la risorsa MCP sul lato ricevente. Claude Code rifiuta un messaggio nei seguenti casi: La sessione ricevente controlla ogni messaggio in arrivo rispetto ai suoi controlli in entrata, e il controllo termina in uno di tre risultati:
  • Consegnato: Claude Code passa il messaggio al Claude ricevente.
  • Trattenuto: Claude Code mette da parte il messaggio non consegnato. Un messaggio trattenuto raggiunge Claude solo quando lo approvi o un cambio di modalità o impostazioni successivo lo consente.
  • Rifiutato: Claude Code elimina il messaggio senza consegnarlo.
Una volta consegnato, il messaggio conta verso l’utilizzo come un prompt che digiti, e il Claude ricevente può rispondere al mittente nello stesso modo, tranne nel caso cross-machine unidirezionale. I confini delle autorizzazioni rimangono per sessione. Claude è istruito a non chiedere mai a un’altra sessione un’azione che è stata negata o bloccata nella sua stessa sessione, o che le sue stesse impostazioni di autorizzazione bloccherebbero, e a instradare quel lavoro di nuovo a te. Sul lato ricevente, i prompt di autorizzazione e le regole della sessione ricevente stessa si applicano ancora a qualsiasi cosa il messaggio chieda.

Ricevi un avviso quando un’altra sessione diventa inattiva

Claude può chiedere a una delle tue sessioni su questa macchina di inviare indietro un avviso quando quella sessione successivamente diventa inattiva o esce. Inattivo qui significa che la sessione ha terminato un turno senza nulla in coda. Utilizzalo quando stai aspettando un compito lungo in un’altra sessione e vuoi sapere quando è fatto invece di controllare. Richiede Claude Code v2.1.236 o successiva in entrambe le sessioni.

Chiedi un avviso

Dì a Claude cosa stai aspettando. Questo prompt chiede un avviso dalla sessione di migrazione:
Claude si iscrive con l’input notify_when_idle dello strumento SendMessage, allegato a un messaggio che sta inviando comunque o da solo. Da solo, Claude Code si iscrive senza avviare un turno o spendere token nella sessione osservata, e invia l’avviso subito se quella sessione è già inattiva. Allegato a un messaggio, Claude Code consegna prima il messaggio e invia l’avviso dopo.

Cosa mostra ogni sessione

La sessione osservata mostra una riga che dice che un altro processo ha chiesto di essere avvertito quando la sessione è successivamente inattiva. La sessione che chiede mostra l’avviso come una riga che nomina la sessione osservata. La riga può includere l’ora in cui il turno di quella sessione è terminato e uno stato di una riga da quel turno. Se la sessione che chiede è inattiva, Claude Code avvia un nuovo turno con l’avviso.

Limiti

L’avviso è una tantum: Claude Code lo invia una volta dalla sessione osservata, e nessuna delle due sessioni esegue il polling dell’altra. Se nessun avviso arriva entro 12 ore, Claude Code elimina l’iscrizione e lo dice a Claude, quindi non continua ad aspettare. I controlli in entrata di ogni lato si applicano a un avviso come un messaggio:
  • refuse su entrambi i lati: nulla arriva. La sessione osservata elimina la richiesta senza registrarla o rispondere, quindi l’iscrizione scade senza risposta dopo 12 ore, e una sessione che chiede con refuse non si iscrive mai.
  • hold su entrambi i lati: l’avviso arriva con meno. La sessione osservata lascia fuori lo stato di una riga, e la sessione che chiede mostra l’avviso nella tua trascrizione senza consegnarlo a Claude.
Solo il Claude nella tua conversazione principale può iscriversi, e solo alle tue sessioni su questa macchina. Quando un subagente o un collega del team di agenti imposta notify_when_idle, Claude Code non effettua alcuna iscrizione e glielo dice. Quando Claude chiede un avviso da qualsiasi altro agente, come un collega, un subagente o una sessione oltre questa macchina, Claude Code rifiuta l’intera chiamata, incluso qualsiasi messaggio allegato, e segnala il rifiuto a Claude in modo che possa rinviare il messaggio senza la richiesta.

Vedi quali sessioni Claude può raggiungere

Claude trova il target di un messaggio da solo, quindi non hai bisogno di eseguire nulla prima di chiedergli di inviare. Per vedere tu stesso quali sessioni Claude può raggiungere, esegui il comando /list-agents. La prima riga, quando presente, è il nome della sessione stessa, quello che le tue altre sessioni usano per inviarle messaggi. Le righe sottostanti sono le sessioni che Claude può raggiungere:
  • Subagenti: agenti in esecuzione all’interno della sessione corrente.
  • Colleghi: i colleghi del team di agenti della sessione stessa. Prima della v2.1.239, i colleghi non apparivano nell’elenco, anche se Claude poteva già inviar loro messaggi per nome.
  • Le tue altre sessioni locali: sessioni Claude Code in esecuzione sulla stessa macchina, incluse sessioni in background. Una sessione appare solo quando associa un socket della posta in arrivo.
  • Le tue sessioni cloud: le tue sessioni Claude Code sul web, mostrate mentre questa sessione è connessa a Remote Control. Claude Code le etichetta cloud nell’elenco.
  • Le tue sessioni Remote Control su altre macchine: mostrate mentre questa sessione è connessa a Remote Control, ed etichettate Remote Control. Claude Code mostra offline come lo stato di una sessione la cui connessione Remote Control è caduta.
Questa sessione non è una delle righe. Se Claude indirizza un messaggio al nome della sessione stessa, Claude Code lo rifiuta e dice a Claude che il target è la sessione corrente. Prima della v2.1.239, l’elenco non mostrava il nome di questa sessione, e Claude Code segnalava un messaggio inviato a essa come un agente che non poteva trovare. Mentre questa sessione è connessa a Remote Control, Claude Code trattiene alcuni dettagli delle tue sessioni locali dall’output /list-agents, senza cambiare quello che Claude stesso vede quando cerca una sessione a cui inviare messaggi:
  • Directory di lavoro: lascia fuori la directory di lavoro di ogni sessione locale.
  • Nomi delle sessioni: lascia fuori qualsiasi nome di sessione che non può attribuire a una persona, quindi una riga rimasta senza nome legge (unnamed session).
  • La prima riga: lascia fuori la riga con il nome della sessione stessa a meno che tu non abbia digitato quel nome a questo terminale, con --name o con /rename e il nome, da quando hai avviato o ripreso l’ultima volta la sessione.
Quando l’output elenca qualcosa, termina con una nota che dice che i dettagli sono stati trattenuti. Eseguire /rename seguito da un nome inutilizzato al terminale di una sessione propria dà a quella sessione un nome che appare nell’output. Claude Code legge i tuoi elenchi di sessioni cloud e Remote Control dal più recente al più vecchio e si ferma dopo un numero limitato di pagine per ognuno. Se il tuo account ha più di quelle sessioni di quante si adattino, Claude Code non elenca le più vecchie, e Claude non può inviar loro messaggi per nome. Quando ciò accade, Claude Code lo dice nell’elenco, e Claude vede la stessa nota quando invia un messaggio. Claude indirizza una sessione oltre questa macchina per nome, nello stesso modo di una sessione locale. Vedi Invia messaggi a sessioni su altre macchine per come quei messaggi viaggiano. Una sessione risponde al nome che imposti con il comando /rename o il flag --name. Quando non ne imposti uno, Claude Code nomina la sessione stessa. Per una sessione interattiva, questo è il nome mostrato negli elenchi delle sessioni in esecuzione. Quando rinomini una sessione, Claude Code aggiorna anche il record condiviso che le tue altre sessioni usano per cercare il nome della sessione. Se non può aggiornare quel record, ti avverte nell’output /rename che altre sessioni potrebbero ancora mostrare il nome vecchio. Esegui la sessione con --debug, e Claude Code registra la causa dell’aggiornamento fallito. Quando rinomini una sessione, o avvii o riprendi una sessione interattiva, con un nome che un’altra sessione live su questa macchina già usa, Claude Code lascia il nome con la sessione che lo ha già e rinomina il tuo a una variante. Le sessioni possono comunque condividere un nome, ad esempio quando una di esse esegue una versione precedente di Claude Code o il nome condiviso è uno che Claude Code ha generato. A meno che questa sessione non sia connessa a Remote Control, Claude Code mostra la directory di lavoro di ogni sessione locale nell’output /list-agents, quindi puoi distinguere le sessioni con lo stesso nome quando vengono eseguite in directory diverse. Claude indirizza il messaggio in uno di due modi, a seconda di quante sessioni live rispondono al nome:
  • Una sessione risponde al nome: Claude Code consegna il messaggio solo sul nome.
  • Diverse sessioni condividono il nome, o Claude Code non potrebbe controllare ovunque vengono eseguite le tue sessioni: Claude aggiunge un breve identificatore a ogni riga del suo elenco e utilizza l’identificatore nell’indirizzo.

Invia messaggi a sessioni su altre macchine

Come un messaggio viaggia, e se passa attraverso i server Anthropic, dipende da dove viene eseguita la sessione target: Avviare una conversazione con una sessione su un’altra delle tue macchine richiede Claude Code v2.1.225 o successiva e un target che appare nell’elenco. Prima della v2.1.225, Claude poteva solo rispondere a un messaggio che arrivava da uno. Puoi inviare un messaggio a una sessione mostrata come offline nell’elenco, una la cui connessione Remote Control è caduta. L’invio va a buon fine, ma il messaggio arriva solo dopo che la macchina di quella sessione si riconnette. Claude viene informato di ciò quando invia. La consegna sulla stessa macchina funziona ovunque la funzione sia abilitata. Ogni sessione si registra in file su disco. Quando Claude elenca o invia messaggi alle tue sessioni locali, Claude Code legge quei file per trovare le sessioni, quindi due sessioni possono raggiungersi solo quando possono vedere gli stessi file. Un contenitore ha il suo filesystem, quindi una sessione all’interno e una sessione sull’host non possono raggiungersi. Due sessioni all’interno dello stesso contenitore possono comunque inviarsi messaggi, incluso su un runner self-hosted. Una sessione all’interno di WSL 2 e una sessione Windows nativa sullo stesso computer non possono raggiungersi neanche, perché si registrano in directory home diverse e ascoltano su tipi di socket diversi. Mentre questa sessione è connessa a Remote Control, quando invii un messaggio a una sessione su un’altra delle tue macchine, Claude Code mostra il messaggio nella conversazione di quella sessione sotto il nome Remote Control di questa sessione. Il Claude su quella macchina può rispondere a quel nome. Ad esempio, quando questa sessione è connessa a Remote Control come laptop-graceful-unicorn e invii un messaggio al tuo desktop, vedi il messaggio nella sessione desktop sotto laptop-graceful-unicorn. Se questa sessione non è connessa a Remote Control quando Claude invia a una sessione oltre questa macchina, il messaggio comunque va a buon fine, ma senza un indirizzo di risposta, quindi il Claude ricevente non può rispondere. Claude viene informato di ciò quando invia. Per richiedere la tua approvazione prima che qualsiasi messaggio vada oltre questa macchina, imposta isolatePeerMachines.

Come una sessione tratta un messaggio in arrivo

Quando la sessione A invia un messaggio alla sessione B, Claude Code dice al Claude di B che il messaggio è venuto da un’altra sessione, non da te, e limita quello che il messaggio può fare:
  • Non può approvare nulla: un messaggio da un’altra sessione non conta mai come il tuo consenso, quindi non può rispondere a un prompt di autorizzazione in sospeso per tuo conto.
  • Non può cambiare la configurazione: Claude Code istruisce il Claude ricevente a non cambiare mai le impostazioni di autorizzazione, CLAUDE.md o altre configurazioni perché un’altra sessione lo ha chiesto.
  • I comandi non vengono eseguiti: un comando nel testo del messaggio, come /compact, arriva come testo semplice. Claude Code non lo esegue mai.
  • I prompt di autorizzazione si attivano comunque: se agire sul messaggio richiede un’autorizzazione che la sessione ricevente non ha, vedi lo stesso prompt che vedresti per qualsiasi altro lavoro.

Come appare un messaggio

Quando un messaggio arriva, Claude Code lo mostra nella conversazione come un’anteprima di una riga attenuata, e la riga di anteprima rimane nella conversazione dopo. L’anteprima porta il nome del mittente e la prima riga del messaggio, tagliata con quando è lunga, come › Message from @api-worker: Schema migration finished (ctrl+o to expand). Prima della v2.1.247, Claude Code mostrava il messaggio in arrivo per intero invece di un’anteprima. Uno di questi mostra il testo completo:
  • Premi Ctrl+O per aprire il visualizzatore di trascrizioni e leggi il testo completo sotto il nome della sessione del mittente.
  • In una sessione avviata con --verbose, Claude Code mostra il testo completo invece dell’anteprima.
L’anteprima accorcia solo quello che vedi. Che tu lo espanda o no, Claude legge il messaggio completo. Claude riceve il messaggio con il nome del mittente e un indirizzo di risposta, tranne per un messaggio cross-machine unidirezionale, che non porta alcun indirizzo di risposta. Oltre al nome e all’indirizzo di risposta, il Claude ricevente ottiene il testo del messaggio, mai la cronologia della conversazione o i file del mittente. Consegna del messaggio copre le menzioni @ nel testo. Un messaggio che un subagente ha scritto arriva sotto il nome della sessione di invio, con il subagente identificato nel testo del messaggio. Una risposta ad esso raggiunge la conversazione principale di quella sessione, non il subagente. Questo esempio è un messaggio che un Claude ha scritto a un altro, come il suo testo completo legge quando lo espandi:

Controlla i messaggi in entrata

Imposta crossSessionInbound per scegliere cosa una sessione fa con i messaggi in arrivo dalle tue altre sessioni: Oltre a modificare un file di impostazioni, puoi selezionare il valore nella riga /config Messages from your other sessions. Claude Code scrive il valore che selezioni nelle tue impostazioni utente. La riga richiede Claude Code v2.1.232 o successiva e non appare mentre le impostazioni gestite o il flag --settings imposta la chiave, poiché un valore di impostazioni utente non si applicherebbe allora. Claude Code rifiuta la scorciatoia /config crossSessionInbound=value per questa chiave. Per vedere quale valore si applica, segui le regole di precedenza crossSessionInbound nel riferimento delle impostazioni. Quando nessun valore si applica, Claude Code decide per messaggio dalle modalità di autorizzazione delle due sessioni. Raggruppa le sessioni che bypassano i prompt di autorizzazione in una classe, e ogni altra sessione nell’altra. La modalità Plan conta come bypassare nelle sessioni con autorizzazioni di bypass disponibili, e auto, acceptEdits e dontAsk contano come prompt:
  • La sessione ricevente richiede autorizzazioni: Claude Code consegna ogni messaggio. Trattiene uno per la tua approvazione solo quando la sessione di invio si identifica come bypassando i prompt di autorizzazione.
  • La sessione ricevente bypassa i prompt di autorizzazione: Claude Code trattiene ogni messaggio per la tua approvazione. Consegna uno solo quando la sessione di invio si identifica come bypassando anche.
Quando il default trattiene un messaggio, Claude Code apre una finestra di dialogo di approvazione nella sessione ricevente. La finestra di dialogo mostra il mittente e un’anteprima:
  • Approve consegna quel messaggio a Claude.
  • Deny, o chiudere la finestra di dialogo, lo elimina.
  • Quando la finestra di dialogo rimane senza risposta oltre la scadenza dialogExpiry, Claude Code la chiude e elimina il messaggio. La scadenza predefinita è cinque minuti.
  • Mentre nessun terminale è collegato a una sessione in background, Claude Code lascia la finestra di dialogo aperta oltre la scadenza. Dopo che colleghi, se la finestra di dialogo rimane senza risposta per un intero periodo di scadenza, Claude Code la chiude e elimina il messaggio.
  • Se la classe di modalità di autorizzazione di questa sessione cambia mentre i messaggi sono trattenuti, Claude Code riapplica le regole in entrata, consegna i messaggi che ora accetta, e mostra un avviso.
  • Se un cambio di impostazioni fa applicare refuse mentre i messaggi sono trattenuti, Claude Code elimina ogni messaggio trattenuto e segnala un rifiuto a ogni mittente che può raggiungere.
Quando il mittente è una sessione interattiva sulla stessa macchina, Claude Code mostra un avviso lì quando il ricevente trattiene il messaggio, e un follow-up quando il ricevente successivamente consegna, nega o lo fa scadere. Se il ricevente lo rifiuta, Claude Code mostra un avviso lì che il ricevente non sta accettando messaggi tra sessioni e dice al Claude del mittente di non aspettare o rinviare. Claude Code trattiene al massimo 100 messaggi, separatamente dalla coda di consegna, e oltre quello elimina i più vecchi.

Sessioni non interattive

Claude Code associa un socket della posta in arrivo per una sessione claude -p come una interattiva, quindi un worker -p a lunga esecuzione può ricevere messaggi e appare nell’elenco. Quando avvii una sessione in modalità bare, Claude Code non associa il socket, quindi quella sessione non può ricevere messaggi e non appare nell’elenco degli agenti. Una sessione -p non può mostrare la finestra di dialogo di approvazione. Quando il default in entrata trattiene un messaggio lì, Claude Code lo mantiene per la stessa scadenza dialogExpiry che la finestra di dialogo usa, cinque minuti per impostazione predefinita:
  • Prima della scadenza: se una modalità o un cambio di impostazioni consente il messaggio, Claude Code lo consegna.
  • Oltre la scadenza: Claude Code elimina il messaggio e lo segnala come scaduto a un mittente che può raggiungere.
Imposta dialogExpiry su "never" per mantenere i messaggi trattenuti dal default fino alla fine della sessione. Un messaggio trattenuto da un’impostazione hold esplicita non scade; Claude Code lo consegna solo quando un accept successivamente si applica. Quando la sessione termina con messaggi ancora trattenuti, Claude Code li segnala come scaduti a ogni mittente che può raggiungere. Prima della v2.1.225, nessuna scadenza si applicava in una sessione -p: un messaggio trattenuto rimaneva trattenuto a meno che un cambio di modalità di autorizzazione durante l’esecuzione lo consegnasse, e una sessione che terminava con messaggi trattenuti non segnalava nulla ai loro mittenti. Per far sì che un worker -p accetti messaggi incustodito, avvialo con crossSessionInbound impostato su accept nel suo valore --settings. Un accept nelle tue impostazioni utente funziona anche ma si applica a ogni sessione che esegui.

Il socket della posta in arrivo della sessione

Leggi questa sezione quando una sessione che ti aspetti non è nell’elenco degli agenti, quando vuoi che uno script o un hook pubblichi in una sessione, o quando un comando in sandbox non può raggiungere il socket. Claude Code associa un socket della posta in arrivo per ogni sessione con la messaggistica tra sessioni abilitata, dove altre sessioni sulla macchina consegnano messaggi. Il socket è un socket di dominio Unix su macOS e Linux, incluso Linux all’interno di WSL 2, e una named pipe su Windows nativo. Per quali tipi di sessione associano uno, vedi Sessioni non interattive. Puoi trovare il percorso del socket in due posti:
  • /status lo mostra nella riga Peer address. Il percorso è prefissato con uds:.
  • Claude Code lo esporta a hooks e comandi Bash come la variabile di ambiente CLAUDE_CODE_MESSAGING_SOCKET:
    • In una sessione che inizia con la messaggistica attiva, Claude Code esporta la variabile prima che qualsiasi hook venga eseguito, incluso SessionStart.
    • Ogni sessione esporta il suo socket, mai uno ereditato da una sessione genitore.
Su macOS e Linux, Claude Code limita il socket al tuo utente del sistema operativo. Su Windows nativo, richiede invece a ogni connessione di autenticarsi prima con una chiave che solo il tuo utente del sistema operativo può leggere. In entrambi i casi, su una macchina condivisa le sessioni di un altro utente non possono consegnare ad esso. Su macOS e Linux, Claude Code rifiuta anche di creare il socket in una directory che non può accettare, ad esempio una di proprietà di un altro utente, e utilizza invece una directory privata per utente, /tmp/cc-socks-<uid>. Quando non può accettare alcuna directory, la sessione viene eseguita senza una posta in arrivo: Claude Code mostra un avviso, /status mostra unavailable e il motivo nella sua riga Peer address, e il log --debug registra il rifiuto completo. Insieme al percorso del socket, Claude Code esporta un token per sessione come CLAUDE_CODE_MESSAGING_TOKEN. Uno script che pubblica nel socket della sua stessa sessione può inviare {"type":"auth","token":"<token>"} come la prima riga della sua connessione, dove <token> è il valore di CLAUDE_CODE_MESSAGING_TOKEN. Se Claude Code richiede la riga dipende dalla piattaforma:
  • macOS e Linux, incluso WSL 2: la riga è facoltativa. Claude Code accetta una connessione con o senza di essa.
  • Windows nativo: la riga è obbligatoria. Claude Code chiude qualsiasi connessione la cui prima riga non è una riga di autenticazione valida e non consegna nulla da quella connessione.
Apri la connessione solo quando il messaggio che stai pubblicando è pronto. Claude Code chiude una connessione che non ha inviato una riga completa entro 30 secondi, quindi cattura prima l’output di un comando lento e poi apri la connessione per inviarlo. I messaggi propri-figli sottostanti dicono quando Claude Code consulta il token e come tratta un messaggio che non può verificare. Claude Code esegue i messaggi in arrivo sul socket attraverso gli stessi controlli in entrata di qualsiasi altro messaggio peer, con un’eccezione e un prerequisito:
  • Messaggi propri-figli: quando nessun valore crossSessionInbound si applica, Claude Code consegna un messaggio che verifica è venuto dai processi figli della sessione stessa, come un hook o un comando Bash che pubblica di nuovo nel socket della posta in arrivo della sua stessa sessione.
    • Su Linux, incluso all’interno di WSL 2, Claude Code può verificare per evidenza di processo anche per un figlio che è già uscito. Su macOS può verificare in quel modo solo mentre il processo di pubblicazione è ancora in esecuzione, e in un contenitore dove Claude Code viene eseguito come ID processo 1 non ha alcuna evidenza di processo. Su Windows nativo non ne ha nemmeno.
    • Su macOS dopo che il processo di pubblicazione è uscito e in contenitori dove Claude Code viene eseguito come ID processo 1, quella evidenza di processo manca, e Claude Code verifica invece un figlio che ha inviato il CLAUDE_CODE_MESSAGING_TOKEN esportato della sessione nella riga di autenticazione che ha aperto la sua connessione. Su Windows nativo, quel token è l’unico modo in cui Claude Code verifica un messaggio proprio-figlio.
    • Quando Claude Code non può verificare in nessun modo, tratta il messaggio come qualsiasi altro che non asserisce alcuna classe di autorizzazione, quindi una sessione che bypassa i prompt di autorizzazione lo trattiene per la tua approvazione.
  • Sessioni in sandbox: controlla se un comando Bash può raggiungere il socket dall’interno della sandbox con le impostazioni del socket Unix della sandbox, sandbox.network.allowAllUnixSockets e sandbox.network.allowUnixSockets.

Limitare la messaggistica tra sessioni

Oltre alle impostazioni predefinite per messaggio, è possibile limitare la messaggistica in due modi. Richiedere l’approvazione prima che qualsiasi messaggio lasci la macchina, oppure disattivare la messaggistica per una sessione o un’organizzazione.

Richiedere approvazione per i messaggi tra macchine

Impostare isolatePeerMachines su true per richiedere l’approvazione esplicita prima che qualsiasi SendMessage raggiunga una sessione al di là di questa macchina:
Con questa impostazione, Claude Code richiede l’approvazione prima che il messaggio di Claude a una sessione al di là di questa macchina venga inviato, anche in modalità bypassPermissions, che ignora i normali prompt di autorizzazione. Un valore true da qualsiasi ambito di impostazioni si applica, quindi un file di progetto archiviato può attivare il requisito ma non disattivarlo. Claude Code non richiede l’approvazione per i messaggi tra sessioni sulla stessa macchina.

Disattivare la messaggistica tra sessioni

La ricezione e l’invio sono controlli separati, quindi disattivare la direzione di cui hai bisogno, o entrambe. Utilizzare crossSessionInbound per i messaggi in arrivo e le regole di autorizzazione per ciò che Claude qui può inviare o elencare:
  • Interrompere la ricezione: impostare crossSessionInbound su refuse, e Claude Code elimina i messaggi peer in arrivo senza consegnarli. Dalle impostazioni di progetto o locali, refuse si applica su ogni altra fonte, e dalle impostazioni utente si applica a meno che le impostazioni gestite o il flag --settings impostino un valore.
  • Interrompere l’invio e l’elenco: aggiungere regole di negazione delle autorizzazioni che denominano SendMessage e ListAgents. Entrambi accettano il nome dello strumento senza specificatore.
Gli amministratori possono disattivare entrambi i lati per un’organizzazione nelle impostazioni gestite, combinando le regole di negazione con refuse:
Con questa impostazione in vigore, Claude Code associa comunque il socket della posta in arrivo di ogni sessione, ma elimina ogni messaggio che arriva su di esso senza consegnare nulla a Claude. Negare SendMessage rimuove anche la messaggistica ai subagent e ai compagni di squadra dell’agente, poiché lo stesso strumento serve entrambi. Una sessione che rifiuta non mostra alcun cambiamento visibile, nel suo /status o negli elenchi di altre sessioni sulla stessa macchina, quindi per confermarlo, controllare i file di impostazioni che si applicano a quella sessione piuttosto che il suo stato.

Disponibilità

La messaggistica tra sessioni richiede Claude Code v2.1.224 o successiva su macOS, Linux e WSL 2, e v2.1.234 o successiva su Windows nativo. La disponibilità, e quali sessioni Claude può inviare messaggi, dipendono anche dal tuo sistema operativo, provider e configurazione:
  • Sistema operativo: disponibile su macOS, Windows e Linux, incluso Linux all’interno di WSL 2.
  • Sessioni su questa macchina: disponibile su ogni provider, inclusi Amazon Bedrock, Claude Platform su AWS, Agent Platform di Google Cloud e Microsoft Foundry, e in sessioni che vengono eseguite con fetching dei flag di funzionalità disattivato. Su quei provider, e con il fetching dei flag disattivato, la messaggistica sulla stessa macchina richiede Claude Code v2.1.248 o successiva. Claude Code consegna questi messaggi su un socket per sessione sulla tua macchina, mai attraverso i server Anthropic. Per impedire a una sessione di riceverli, imposta crossSessionInbound su refuse.
  • Sessioni oltre questa macchina: Claude trova le tue sessioni Claude Code sul web e le tue sessioni su altre macchine da una sessione che è connessa a Remote Control, che ha bisogno di un accesso claude.ai come autenticazione attiva di questa sessione e degli altri requisiti di Remote Control. Claude non può trovare quelle sessioni con una chiave API o su Amazon Bedrock, Claude Platform su AWS, Agent Platform di Google Cloud e Microsoft Foundry.
Per controllare una sessione, digita /list-agents, disponibile anche come /peers. Il risultato separa una sessione che non ha la funzione da una sessione dove qualcosa di più stretto ha bloccato un messaggio, come uno strumento SendMessage mancante o un invio rifiutato: In una sessione con messaggistica, /status mostra anche una riga Peer address con l’indirizzo della posta in arrivo della sessione stessa, o unavailable e il motivo quando Claude Code non poteva impostare una posta in arrivo.

Limitazioni

I limiti qui sono proprietà del canale di messaggistica stesso e si applicano ovunque la funzione viene eseguita. Per i gap di piattaforma e provider, vedi Disponibilità invece.
  • Solo testo semplice: Claude invia solo testo semplice tra sessioni. I messaggi del protocollo team di agenti strutturati rimangono all’interno di un team.
  • La dimensione del messaggio sulla stessa macchina è limitata: Claude Code rifiuta un messaggio a una sessione su questa macchina una volta che la sua forma serializzata supera circa un milione di caratteri. Il rifiuto nomina le dimensioni esatte. Nulla raggiunge la sessione ricevente.
  • I burst rapidi a una sessione vengono rifiutati al mittente: una volta che un burst rapido di messaggi a una sessione su questa macchina raggiunge quello che la posta in arrivo di quella sessione accetta, Claude Code rifiuta ulteriori invii nella sessione di invio. Il rifiuto nomina il burst e dice a Claude di raggruppare il resto in un messaggio o aspettare. Prima della v2.1.236, Claude Code segnalava quegli invii come inviati mentre la sessione ricevente li eliminava.
  • I loop di messaggi sono limitati: nella sessione ricevente, Claude Code limita la velocità dei messaggi ripetuti per mittente, elimina i ripetuti identici che arrivano entro una breve finestra, e mette in coda al massimo 50 messaggi accettati per Claude da leggere. Un loop di messaggi tra due sessioni quindi si ferma da solo. Quando il limite di velocità, il controllo di ripetizione o il limite di coda elimina un messaggio da una sessione interattiva su questa macchina, Claude Code dice a quella sessione quale lo ha eliminato e dice al suo Claude di non rinviare subito.