Salta ai contenuti

15 · Sessioni remote e lavoro asincrono

Tempo stimato: 55 minutiPrerequisiti: i moduli 0 e 12, e un repository su GitHub per la parte cloud. Le sessioni cloud richiedono un piano Pro/Max/Team (o Enterprise con i posti giusti); Remote Control è su tutti i piani.

Lo scenario di questo modulo: lanci un lavoro lungo, chiudi il laptop e vai a cena — e da divano, col telefono, controlli come sta andando e correggi la rotta. Le strade per arrivarci sono tre, e la differenza tra loro è una sola domanda: dove gira il codice? Su una macchina virtuale di Anthropic nel cloud (la sessione continua anche a laptop spento), sulla tua macchina resa visibile dal browser (i tuoi file e i tuoi strumenti, ma il computer deve restare acceso), o nell’app desktop. Impararle tutte e tre significa scegliere ogni volta quella giusta.

Se parti da zeroDue parole che ricorrono in tutto il modulo

Una VM (macchina virtuale) è un computer simulato dentro un altro: le sessioni cloud girano ciascuna nella propria VM sui server di Anthropic — un ambiente pulito e isolato, creato per te e buttato via dopo. Un webhook è una “campanella” tra servizi: GitHub suona la campanella di Claude quando succede qualcosa (un test fallito, un commento), ed è così che l’auto-fix delle PR sa quando intervenire.

  • Distinguere le tre modalità remote — cloud, Remote Control, desktop — e scegliere quella giusta.
  • Avviare una sessione cloud dal terminale e riportarla in locale quando serve.
  • Continuare una sessione locale dal telefono, senza spostare l’esecuzione dalla tua macchina.
  • Ritrovare, nominare e ramificare le sessioni invece di ricominciare da capo.
  • Programmare lavoro ricorrente.

Tre modalità, e la differenza è dove gira il codice.

Claude Code sul web Remote Control App desktop
Dove esegue VM gestite da Anthropic (o il tuo ambiente self-hosted) La tua macchina La tua macchina, o cloud/SSH (collegamento via terminale a una macchina remota)/WSL (il Linux dentro Windows)
Cosa serve Un repository GitHub Una sessione claude che resta accesa L’app installata
I tuoi server MCP e file locali No
Sopravvive alla chiusura del laptop No Solo le sessioni cloud
Da telefono No
Lavoro in parallelo Molte sessioni indipendenti Server mode con più sessioni Sessioni parallele in worktree

La confusione più comune è tra --cloud e --remote-control: il primo crea una sessione che gira nel cloud, il secondo espone una sessione locale perché tu la possa guardare dal browser. Non c’entrano nulla l’uno con l’altro.

Il passaggio di consegne dalla CLI è a senso unico. Puoi tirare una sessione cloud nel tuo terminale con --teleport, ma non puoi spingere una sessione del terminale sul web. L’app desktop ha un menu Continue in che sa mandare una sessione locale sul web.

Gira su infrastruttura cloud gestita da Anthropic su claude.ai/code. Le sessioni persistono anche se chiudi il browser, e le puoi sorvegliare dall’app mobile.

Le sessioni cloud hanno bisogno di accedere ai tuoi repository per clonare e pushare. Due strade:

Metodo Come funziona Per chi
GitHub App Autorizzi la Claude GitHub App durante l’onboarding web Chi parte dal browser; team che vogliono l’auto-fix
/web-setup Sincronizza il token del tuo gh CLI locale con l’account Claude Chi usa già gh
Terminal window
claude --cloud "Fix the authentication bug in src/auth/login.ts"

La VM cloud clona il remote GitHub della tua directory corrente, al branch corrente — non il tuo checkout locale. Se hai commit locali, pusha prima. --cloud lavora su un repository alla volta.

Mentre il container parte, la CLI mostra una checklist live dei passi di setup e mette in coda i messaggi che scrivi, inviandoli quando la sessione è pronta.

Ogni comando --cloud crea una sessione indipendente:

Terminal window
claude --cloud "Fix the flaky test in auth.spec.ts"
claude --cloud "Update the API documentation"
claude --cloud "Refactor the logger to use structured output"

Le sorvegli tutte con /tasks dalla CLI.

Se lanci claude --cloud da un repository non collegato a GitHub, Claude Code impacchetta il repository locale in un bundle — la “valigia” del progetto: un unico file con dentro tutta la storia git — e lo carica nella sessione. Dentro c’è la storia completa su tutti i branch, più le modifiche non committate ai file tracciati (quelli che git conosce già; i file mai aggiunti con git add restano fuori).

I limiti:

  • Deve essere un repository git con almeno un commit
  • Il bundle deve stare sotto i 100 MB; oltre, si ripiega sul solo branch corrente, poi su uno snapshot compresso del working tree, e fallisce solo se anche quello è troppo grande
  • I file non tracciati non sono inclusi: fai git add su quello che vuoi far vedere
  • Una sessione creata da un bundle non può pushare su un remote, a meno che tu non abbia comunque configurato l’autenticazione GitHub

Per forzare il bundle anche con GitHub collegato: CCR_FORCE_BUNDLE=1.

Terminal window
claude -p "your message" --cloud <session-id>

Mette il messaggio in coda ed esce senza aspettare risposta. Serve per correggere la rotta di una sessione lunga (steering, nel gergo), accodare il passo successivo, o mandare follow-up da uno script di CI. Funziona da qualsiasi macchina dove sei autenticato con claude auth login: non serve la macchina che ha avviato la sessione.

Puoi anche fare pipe del messaggio: echo "your message" | claude -p --cloud <session-id>.

Senza -p, claude --cloud <session-id> attacca il tuo terminale alla sessione. L’attach interattivo sta uscendo gradualmente; il messaggio Attaching to an existing cloud session is not enabled for your account non riguarda la forma con -p.

Per <session-id> va bene l’ID nudo (session_... o cse_...) o l’URL claude.ai/code/<id>, con o senza schema e query string.

Con --output-format json ottieni {ok, session_id, url} in caso di successo, o {ok: false, session_id, error} in caso di fallimento.

Terminal window
claude --teleport # selettore interattivo
claude --teleport <session-id> # direttamente

Dall’interno di una sessione già aperta: /teleport o /tp. Da /tasks: premi t. Dall’interfaccia web: Open in → Terminal.

Il teleport verifica di essere nel repository giusto, scarica e fa checkout del branch della sessione cloud, e carica tutta la cronologia della conversazione nel tuo terminale.

I requisiti:

Requisito Dettaglio
Stato git pulito Nessuna modifica non committata. Ti viene proposto di stashare (mettere da parte le modifiche: spiegato al passo 5 dell’esempio guidato)
Repository corretto Deve essere un checkout dello stesso repository, non un fork
Branch disponibile Il branch della sessione cloud deve essere stato pushato sul remote
Stesso account Devi essere autenticato allo stesso account claude.ai

--teleport è diverso da --resume: --resume riapre una conversazione dalla cronologia locale di questa macchina e non elenca le sessioni cloud.

Claude può sorvegliare una PR e rispondere automaticamente ai fallimenti di CI e ai commenti di review. Richiede la Claude GitHub App installata. Si attiva:

  • PR create sul web: apri la barra di stato CI e seleziona Auto-fix
  • Dal terminale: /autofix-pr mentre sei sul branch della PR
  • Dall’app mobile: chiedilo a Claude
  • Qualsiasi PR esistente: incolla l’URL in una sessione e chiedi l’auto-fix

GitHub non emette un webhook quando il branch di base avanza e crea un conflitto: l’auto-fix non può reagirci da solo. Apri la sessione e chiedi un rebase.

Collega claude.ai/code o l’app mobile a una sessione che gira sulla tua macchina. Claude continua a girare in locale per tutto il tempo: esecuzione e accesso al filesystem restano tuoi.

  • Abbonamento Pro, Max, Team o Enterprise. Le API key non sono supportate.
  • Autenticazione via /login con claude.ai.
  • Endpoint API: non disponibile su Bedrock, Agent Platform o Foundry, ed è disattivato quando ANTHROPIC_BASE_URL punta a un host diverso da api.anthropic.com.
  • Feature flag: DISABLE_TELEMETRY, DO_NOT_TRACK, CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC e DISABLE_GROWTHBOOK disattivano la valutazione dei feature flag — gli “interruttori remoti” con cui Anthropic accende e spegne le funzioni senza aggiornare il programma — da cui dipende Remote Control.
  • Workspace trust: lancia claude nella directory di progetto almeno una volta e accetta il dialogo. Il dialogo di avvio non salva mai il trust per la home: parti da una directory di progetto.

I comandi sono identici su macOS e Windows:

Terminal window
# Server mode: il processo resta in ascolto, senza sessione interattiva locale
claude remote-control
# Sessione interattiva con Remote Control attivo
claude --remote-control
claude --remote-control "My Project"

Da dentro una sessione già avviata:

/remote-control
/rc My Project

In server mode, il terminale mostra un URL di sessione e — premendo la barra spaziatrice — un QR code per collegarti rapidamente dal telefono.

I flag di server mode che contano:

Flag Cosa fa
--name "My Project" Titolo visibile nella lista sessioni su claude.ai
-c, --continue Riprende la sessione dell’ultimo server in questa directory
--session-id <id> Riprende una sessione specifica
--spawn same-dir Default: tutte le sessioni condividono la working directory
--spawn worktree Ogni sessione on-demand ottiene un worktree git suo
--spawn session Una sola sessione, rifiuta le connessioni aggiuntive
--capacity <N> Massimo di sessioni concorrenti, default 32
--sandbox / --no-sandbox Isolamento di filesystem e rete. Spento di default

Premendo w a runtime si passa tra same-dir e worktree.

Con Remote Control attivo, Claude può mandare notifiche push. Decide lui quando: tipicamente quando un task lungo finisce o quando gli serve una decisione. Puoi anche chiederlo nel prompt — “notify me when the tests finish”.

Per configurarle: installa l’app Claude, accedi con lo stesso account, accetta i permessi di notifica, poi in terminale /config e attiva Push when Claude decides e/o Push when actions required.

Claude Code salta le push mentre stai scrivendo nel terminale connesso.

  • Una sessione remota per processo interattivo, fuori dal server mode.
  • Il processo locale deve restare vivo. Se chiudi il terminale, la sessione va offline. Per tenerla viva su una macchina remota dopo esserti disconnesso da SSH, avviala dentro tmux o screen — due programmi che tengono in vita una sessione di terminale anche quando tu ti scolleghi, come lasciare la luce accesa in una stanza da cui esci.
  • Outage di rete prolungato: in server mode, Claude Code si arrende dopo circa 10 minuti e il processo esce; in sessione interattiva riprova finché serve e si riconnette da solo.
  • Alcuni comandi sono solo locali: quelli che esistono solo nell’interfaccia terminale, come /plugin o /resume. Funzionano invece da mobile e web /compact, /clear, /context, /usage, /recap, e — passando il valore come argomento — /model sonnet, /effort high, /autocompact 500k.
Comando Cosa fa
claude --continue Riprende la più recente nella directory corrente
claude --resume Apre il selettore di sessioni
claude --resume <nome> Riprende direttamente la sessione con quel nome
claude --from-pr <numero> Selettore filtrato sulle sessioni legate a quella PR
/resume Cambia conversazione da dentro una sessione attiva

claude --resume <session-id> funziona da qualsiasi directory: Claude Code cerca l’ID prima nella directory corrente e nei suoi worktree, poi in ogni altro progetto sulla macchina.

Le sessioni create con claude -p non compaiono nel selettore, ma puoi comunque riprenderle passando l’ID.

Tasto Azione
/ Naviga
/ Espande o comprime i gruppi
Enter Riprende
Space Anteprima del contenuto
Ctrl+R Rinomina
/ o un carattere qualsiasi Modalità ricerca. Puoi incollare l’URL di una PR per trovare la sessione che l’ha creata
Ctrl+A Sessioni di tutti i progetti sulla macchina
Ctrl+W Sessioni di tutti i worktree del repository
Ctrl+B Solo le sessioni del branch git corrente
Esc Esce

Fa la differenza quando lavori su più task in parallelo:

Quando Come
All’avvio claude -n auth-refactor
Durante /rename auth-refactor
Dal selettore Ctrl+R sulla sessione evidenziata
Accettando un piano Il nome viene dedotto dal contenuto del piano
Da claude.ai o dall’app Rinomina una sessione Remote Control: il nome si applica anche nella CLI

Se dai a una sessione un nome già usato da un’altra sessione viva sulla macchina, Claude Code lascia il nome a chi ce l’ha già e rinomina la tua con un suffisso di due parole, tipo auth-refactor-graceful-unicorn, avvisandoti.

/branch crea una copia della conversazione e ti ci porta dentro, lasciando l’originale intatta:

/branch try-streaming-approach

Da riga di comando:

Terminal window
claude --continue --fork-session

Cosa eredita il ramo:

Stato Dopo /branch
Cronologia della conversazione Copiata fino al punto in cui hai lanciato /branch
Permessi concessi “per questa sessione” Mantenuti: il ramo gira nello stesso processo. Con --fork-session in un processo separato, si riapprova
Subagent e comandi Bash in background Continuano; il loro output appare nel nuovo ramo
Connessione Remote Control Resta connessa e ti segue nel ramo

Su piano Pro o Max, riprendendo una sessione inattiva da più di un’ora e sopra i 100.000 token, si apre un dialogo con tre opzioni:

Opzione Cosa fa
Resume from summary Esegue subito /compact: le richieste successive portano il riassunto invece della storia intera
Resume full session as-is Carica la conversazione invariata; il costo per richiesta scala con la dimensione
Don’t ask me again Riprende intera e non chiede più

La cache dei prompt è comunque scaduta a quel punto, quindi la prossima richiesta rielabora tutta la storia una volta, qualunque opzione scegli.

Chiudiamo con una mappa volutamente breve: il lavoro programmato — “fai questa cosa ogni mattina alle 7” — merita di essere impostato quando hai un caso reale, e gli strumenti si imparano in cinque minuti partendo dalla tabella. Qui ti serve solo sapere cosa esiste e dove gira, così quando il caso arriva sai quale porta aprire (per la strada CI, il modulo 14 ha l’esempio completo con cron):

Strumento Dove gira Come
Routine (/schedule) Cloud Lavoro su schedule, via chiamata API o in risposta a eventi GitHub
Scheduled tasks dell’app desktop Sulla tua macchina Review quotidiana, audit settimanale delle dipendenze, briefing
/loop Nella sessione corrente Ripete un prompt a intervalli
GitHub Actions CI Vedi il modulo 14

/schedule verifica che tu abbia una delle due forme di accesso GitHub e ti chiede di lanciare /web-setup se non ne hai nessuna.

  1. Collega GitHub dal terminale.

    Terminal window
    gh auth status

    Poi, dentro una sessione claude:

    /web-setup
  2. Avvia una sessione cloud. Assicurati prima di aver pushato:

    Terminal window
    git push
    claude --cloud "Add input validation to the /webhooks endpoint, with tests. Follow the patterns already used in src/routes/."
  3. Sorvegliala.

    /tasks

    Oppure apri claude.ai/code, o l’app sul telefono.

  4. Mandale un follow-up da un’altra macchina.

    Terminal window
    claude -p "also handle the case where the signature header is missing" --cloud <session-id>
  5. Riportala in locale quando è pronta.

    Terminal window
    # stash = "metti da parte": nasconde le modifiche non committate in un
    # cassetto temporaneo, lasciando la cartella pulita (il teleport lo esige).
    # NON le perdi: dopo, `git stash pop` le tira fuori dal cassetto.
    git stash
    claude --teleport

    Ricorda: da questo momento la sessione locale e quella cloud divergono.

  6. Ora l’altro verso: una sessione locale visibile dal telefono.

    Terminal window
    claude --remote-control "audit dipendenze"

    Premi la barra spaziatrice per il QR code, inquadralo col telefono. Da lì puoi scrivere, e la sessione continua a girare sulla tua macchina con i tuoi file e i tuoi server MCP.

  7. Attiva le push. In terminale:

    /config

    Abilita Push when Claude decides e Push when actions required. Poi lancia un task lungo e allontanati:

    run the full test suite, fix everything that fails, and notify me when you're done
  8. Server mode con worktree isolati, per far lavorare più sessioni in parallelo senza collisioni:

    Terminal window
    claude remote-control --spawn worktree --name "parallelo"
  9. Ritrova tutto domani.

    Terminal window
    claude --resume

    Nel selettore: Ctrl+A per vedere tutti i progetti, Ctrl+W per tutti i worktree, Ctrl+B per filtrare sul branch corrente. E puoi incollare l’URL di una PR per trovare la sessione che l’ha aperta.

Organizza una giornata di lavoro asincrono su tre task indipendenti.

  1. Manda tre task nel cloud, ciascuno su un aspetto diverso.
  2. Nomina le sessioni in modo da ritrovarle.
  3. Sorvegliale dal telefono e mandane avanti una con un follow-up.
  4. Porta in locale quella che serve rivedere a mano, e continua a controllarla dal telefono.
Soluzione

Passi 1–2. Prima pusha — la VM clona il remote, non il tuo checkout:

Terminal window
git push
claude --cloud "Add rate limiting to the public API endpoints. Follow the existing middleware patterns. Write tests."
claude --cloud "Our README is out of date: the install section still mentions Node 18. Audit it against package.json and fix everything that's wrong."
claude --cloud "Find every place we swallow an exception without logging it, and add structured logging. Do not change control flow."

Ogni comando restituisce un ID di sessione: annotali, o ritrovali su claude.ai/code.

I nomi si danno più comodamente dall’interfaccia web, dal menu della sessione. Da terminale, il nome vale per le sessioni locali (-n, /rename) e per quelle Remote Control.

Passo 3.

/tasks

Dal telefono: app Claude → la lista delle sessioni. Il follow-up da qualsiasi macchina:

Terminal window
claude -p "the rate limit should be per-API-key, not per-IP" --cloud session_01ABC...

Nota che questo comando non aspetta la risposta: accoda ed esce. È il comportamento giusto per guidare qualcosa che sta girando.

Passo 4. Per la sessione che vuoi rivedere:

Terminal window
git status # deve essere pulito
git stash # se non lo è
claude --teleport

Scegli la sessione dal selettore. Claude verifica il repository, fa fetch e checkout del branch, e carica tutta la conversazione.

E qui il passaggio che quasi tutti sbagliano: dopo il teleport, la sessione cloud e quella locale sono due cose separate. Il telefono continua a mostrarti la versione cloud, che è ferma. Per continuare a seguire il lavoro dal telefono devi riesporre la sessione locale:

/remote-control

Ora il telefono segue la sessione che gira davvero sulla tua macchina.

Riepilogo di cosa hai messo in piedi:

Task Dove gira Come lo segui
Rate limiting Cloud claude.ai/code, app mobile
README Cloud idem
Logging Locale, dopo il teleport Terminale + telefono via Remote Control

Due cose da tenere a mente:

  • Le sessioni cloud condividono i rate limit con tutto il resto del tuo utilizzo Claude. Tre task in parallelo consumano proporzionalmente di più. Non c’è un costo di calcolo separato per la VM.
  • Le sessioni cloud si fermano dopo un periodo di inattività e la VM viene recuperata; sul web la sessione risulta scaduta. Riaprendola da claude.ai/code viene fornita una VM nuova con la cronologia ripristinata.
Sintomo Causa Soluzione
La sessione cloud non vede le tue modifiche La VM clona il remote, non il checkout locale git push prima di claude --cloud
Unable to get organization UUID (“impossibile identificare la tua organizzazione”) --cloud e --teleport richiedono il login claude.ai, non una API key /login con l’account claude.ai
Cloud sessions aren't available with <provider> (“le sessioni cloud non sono disponibili con questo fornitore”) Claude Code è configurato per un provider di terze parti Togli la configurazione del provider, es. CLAUDE_CODE_USE_BEDROCK
Cloud sessions are disabled by your organization's policy Policy allow_remote_sessions disattivata Un Owner la abilita nelle impostazioni admin
Session not found: <id> (“sessione non trovata”) L’ID non corrisponde a una sessione accessibile Confrontalo con l’URL claude.ai/code della sessione
cloud session <id> is archived (“la sessione è archiviata”) Le sessioni archiviate non accettano più messaggi Avvia una sessione nuova
Il teleport rifiuta di partire Working directory sporca, o repository sbagliato Committa o stasha; devi essere nello stesso repository, non un fork
Dopo il teleport il telefono non aggiorna più La sessione locale è una copia separata /remote-control nella sessione locale
Session creation failed Non è stato possibile allocare una VM Controlla status.claude.com, riprova dopo un minuto, verifica l’accesso al repository
La sessione cloud risulta scaduta Le VM si fermano dopo inattività Riaprila da claude.ai/code: viene fornita una VM nuova con la cronologia
I file non tracciati non arrivano nel bundle Comportamento previsto git add su quello che deve essere visto
Remote Control non parte Requisiti non soddisfatti API key non supportate; controlla ANTHROPIC_BASE_URL e le variabili che disattivano i feature flag
La sessione Remote Control va offline Il processo locale è morto Deve restare vivo: usa tmux o screen su una macchina remota
Le push non arrivano App non aperta di recente, o Focus mode /config mostra No mobile registered: apri l’app per rinfrescare il token
/resume non funziona dal telefono È un comando solo-locale Funzionano /compact, /clear, /context, /usage, /model <valore>, /effort <valore>
Due terminali sulla stessa sessione producono una trascrizione confusa Non hai fatto fork --fork-session o /branch
Le sessioni -p non compaiono nel selettore È il comportamento previsto Riprendile passando l’ID a claude --resume <session-id>

Le tre modalità

claude --cloud "task" → nuova sessione nel CLOUD (clona il remote GitHub)
claude --teleport → tira una sessione cloud nel tuo TERMINALE
claude --remote-control → espone la sessione LOCALE a browser e telefono

Sessioni cloud

Comando
claude --cloud "task" Nuova sessione cloud
claude -p "msg" --cloud <id> Accoda un messaggio ed esce
claude --cloud <id> Attacca il terminale alla sessione
claude --teleport [<id>] Porta la sessione in locale
/tasks Elenco delle sessioni in background
/teleport, /tp Teleport da dentro una sessione
/web-setup Sincronizza il token gh con l’account Claude
/autofix-pr Attiva l’auto-fix sulla PR del branch corrente
CCR_FORCE_BUNDLE=1 Forza il bundle locale invece di GitHub

Remote Control

Comando
claude remote-control Server mode; barra spaziatrice per il QR
claude --remote-control ["nome"] Sessione interattiva esposta
/remote-control, /rc Espone la sessione corrente
--spawn worktree Ogni sessione in un worktree isolato
--capacity N Massimo di sessioni concorrenti (default 32)

Gestione delle sessioni

Comando
claude --continue La più recente in questa directory
claude --resume [<nome|id>] Selettore, o ripresa diretta
claude --from-pr <n> Sessioni legate a una PR
claude -n <nome> · /rename <nome> Dà un nome
/branch [<nome>] · --fork-session Ramifica
/export [file] Esporta la trascrizione

Selettore: i tasti che contano

Ctrl+A tutti i progetti Ctrl+W tutti i worktree
Ctrl+B solo questo branch Ctrl+R rinomina
Space anteprima / ricerca (accetta l'URL di una PR)

Pagine ufficiali consultate, verificate il 16 agosto 2026:

Corso indipendente, non affiliato ad Anthropic o Google. Claude e Claude Code sono marchi di Anthropic; Antigravity e Gemini sono marchi di Google.