# Le sessioni di Claude Code si parlano

Promemoria dei comandi. Verificato sulla documentazione ufficiale ad agosto 2026.
Pagina completa: https://riccardobelli.com/sessioni/

La feature si chiama cross-session messaging. Non si attiva: se la versione basta, è già accesa.

## Requisiti

| Cosa | Valore |
|------|--------|
| Versione minima | 2.1.224 |
| Per parlare con un'altra tua macchina | 2.1.225 |
| Per la tendina di completamento della chiocciola | 2.1.232 |
| Sistemi | macOS, Linux, WSL 2. Non Windows nativo |
| Non disponibile su | Amazon Bedrock, Claude Platform su AWS, Google Cloud Agent Platform, Microsoft Foundry |

```bash
npm install -g @anthropic-ai/claude-code
claude --version
```

## 1. Dare un nome alla sessione

```bash
claude -n ricerca
claude -n bozza
claude -n mail
```

Valgono `-n` (un trattino) e `--name` (due trattini). `--n` non esiste.

| Quando | Come |
|--------|------|
| All'avvio | `claude -n ricerca` |
| Sessione già aperta | `/rename ricerca` |
| Dal picker delle sessioni | evidenzia e premi `Ctrl+R` |

Senza nome ne prende uno automatico tipo `my-app-3f`, che serve solo a distinguerla nelle liste: non funziona per riprenderla.

Se il nome è già usato da un'altra sessione viva, la tua diventa una variante tipo `ricerca-graceful-unicorn`.

## 2. Riprendere per nome

```bash
claude --resume bozza
```

Da dentro una sessione: `/resume bozza`. Funziona solo con i nomi messi da te.
Se il nome è ambiguo: `claude --resume` apre il picker con il nome precompilato, `/resume` dà errore.

Altri modi di rientrare: `claude --continue` (l'ultima sessione in questa cartella), `claude --resume` (picker).

## 3. Mandare un messaggio

Non è un comando. Scrivi una frase normale. Claude usa da solo `ListAgents` e `SendMessage`.

Nominando il destinatario (serve la 2.1.232):

```
Di' a @bozza che ho trovato il dato sul mercato tedesco
```

Serve almeno una lettera dopo la chiocciola: con la chiocciola nuda non compare niente.

Senza nominarlo:

```
Chiedi alla sessione aperta nell'altro terminale se la migrazione è finita
```

Claude può anche mandarlo di sua iniziativa, quando si accorge che una modifica impatta il lavoro di un'altra sessione.

## 4. Diagnostica

| Comando | Cosa fa |
|---------|---------|
| `/list-agents` | elenca subagent, sessioni locali, cloud e su altre macchine |
| `/peers` | alias del precedente |
| `/status` | la riga `Peer address` mostra la casella di posta di questa sessione |

- `/list-agents` non riconosciuto: la sessione non ha la feature, controlla `claude --version`
- funziona ma il messaggio non arriva: guarda i controlli in entrata di chi riceve
- una sessione remota non compare: manca Remote Control su uno dei due lati

## 5. Cosa arriva dall'altra parte

Solo testo. Mai i file, mai la cronologia.

Se la sessione sta lavorando legge il messaggio fra un'operazione e l'altra, quindi niente viene interrotto a metà. Se è ferma, riparte con quel messaggio.

Il messaggio non può:
- approvare permessi al posto tuo
- cambiare configurazione, permessi o `CLAUDE.md`
- eseguire comandi: uno slash dentro al testo resta testo

## 6. Controllare cosa entra

Chiave `crossSessionInbound`:

| Valore | Comportamento |
|--------|---------------|
| `accept` | consegna tutto |
| `hold` | mette in attesa finché non approvi |
| `refuse` | scarta senza consegnare |

Dalla 2.1.232 c'è anche in `/config`, riga "Messages from your other sessions".

Per spegnere tutto, ricezione e invio:

```json
{
  "permissions": {
    "deny": ["SendMessage", "ListAgents"]
  },
  "crossSessionInbound": "refuse"
}
```

Attenzione: negare `SendMessage` toglie anche i messaggi ai subagent.

## 7. Fra macchine diverse

| Dove gira l'altra sessione | Come viaggia |
|---|---|
| Stessa macchina | presa locale, mai attraverso i server Anthropic |
| Un'altra tua macchina | attraverso i server Anthropic, poi via Remote Control |
| Claude Code sul web | attraverso i server Anthropic |

Per chiedere conferma prima che un messaggio esca dalla macchina:

```json
{
  "isolatePeerMachines": true
}
```

Due sessioni si vedono solo se vedono gli stessi file: container e host non si raggiungono.

## 8. Trappole

Se una di queste variabili è impostata, la feature non parte proprio:

```
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
DISABLE_TELEMETRY
DO_NOT_TRACK
DISABLE_GROWTHBOOK
```

Altre:
- la consegna non è garantita, dipende dai controlli in entrata di chi riceve
- massimo 50 messaggi in coda per sessione
- i duplicati identici a raffica vengono scartati, i rimbalzi si fermano da soli
- non è la stessa cosa degli agent teams, che sono sperimentali e spenti di default

## 9. Per script e hook

Ogni sessione con il messaging attivo apre una presa di posta, ristretta al tuo utente di sistema.

| Variabile | Cosa contiene |
|---|---|
| `CLAUDE_CODE_MESSAGING_SOCKET` | il percorso della presa, lo stesso di `Peer address` |
| `CLAUDE_CODE_MESSAGING_TOKEN` | token per sessione, prima riga `{"type":"auth","token":"<token>"}` |

Le sessioni `claude -p` aprono la presa e compaiono nella lista. Quelle in bare mode (`--bare`) no.

## Fonti

- https://code.claude.com/docs/en/cross-session-messaging
- https://code.claude.com/docs/en/sessions
