Tenere viva una sessione di Claude Code con tmux
Un agente nel terminale vive dentro il terminale. Chiudi la finestra e perdi l’agente. Cade la connessione SSH e perdi l’agente. tmux mette l’agente in una sessione che il terminale si limita a guardare. La sessione continua a girare quando guardi altrove. Questo è il setup che usiamo su ogni Mac per agenti, con i comandi esatti.
Installa e avvia
brew install tmux tmux new -s agent
Ora sei dentro una sessione chiamata agent. Avvia l’agente come qualsiasi altro comando.
claude
Per Codex, esegui il suo comando. Tutto quello che trovi in questa pagina funziona allo stesso modo con entrambi gli strumenti.
Staccati e torna
Premi Ctrl-b, rilascia, poi premi d. Il terminale torna alla shell e l’agente continua a lavorare in background. Per tornarci da qualsiasi terminale sulla macchina, riattaccati per nome.
tmux attach -t agent
Se dimentichi il nome, elenca le sessioni attive.
tmux ls
Riprendila dal telefono
Installa un client SSH sul telefono. Termius e Blink Shell sono i più diffusi. Collegati al Mac e riattaccati alla stessa sessione. Vedi esattamente cosa sta facendo l’agente e puoi scrivergli. Le tastiere del telefono sono scomode per i prompt lunghi. Quindi quasi tutti usano il telefono per controllare i progressi e rispondere a una domanda. Il lavoro vero lo fanno dal portatile.
Per Claude Code in particolare, Remote Control funziona meglio di SSH sul telefono. Collega l’app Claude alla sessione in corso, senza nessun terminale. La guida per far girare Claude Code 24/7 spiega come configurarlo. tmux resta importante sotto, perché Remote Control si collega a una sessione che deve già esistere.
Rendila comoda
Due impostazioni rendono tmux molto più comodo per il lavoro con gli agenti. Mettile in un file chiamato .tmux.conf nella tua cartella home.
set -g mouse on set -g history-limit 50000
La prima ti fa scorrere con il trackpad o con il dito. La seconda conserva abbastanza output per leggere cosa ha fatto l’agente un’ora fa. Dopo aver salvato il file riavvia tmux, oppure ricaricalo da dentro una sessione.
tmux source-file ~/.tmux.conf
Sopravvivi a un riavvio
Le sessioni tmux vivono in memoria. Un riavvio le cancella. Su una macchina senza nessuno davanti, la sessione deve tornare da sola. Lo fa un LaunchAgent eseguito al login. Salva questo contenuto in un file chiamato dev.local.agent-session.plist, nella cartella LaunchAgents dentro la Library della tua home.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key><string>dev.local.agent-session</string>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>-c</string>
<string>/opt/homebrew/bin/tmux has-session -t agent 2>/dev/null || /opt/homebrew/bin/tmux new -d -s agent</string>
</array>
<key>RunAtLoad</key><true/>
<key>StartInterval</key><integer>60</integer>
</dict>
</plist>Caricalo una volta. Da quel momento parte a ogni login e poi controlla ogni minuto.
launchctl load ~/Library/LaunchAgents/dev.local.agent-session.plist
Crea una sessione vuota. Non riavvia l’agente al suo interno, ed è voluto. Un agente che si riavvia da solo dentro un task a metà, senza nessuno sveglio, è il modo per avere sorprese. Attiva il login automatico per l’utente, così il LaunchAgent ha una sessione in cui girare. Poi avvia tu il task la prossima volta che ti riattacchi.
Due sessioni, due agenti
Niente ti impedisce di eseguire Claude Code in una sessione e Codex in un’altra sulla stessa macchina. Funzionano anche due sessioni di Claude Code su due repository. Dai a ciascuna il nome del lavoro.
tmux new -s api-refactor tmux new -s ios-tests
Tieni ogni agente nel suo checkout del repository, così non modificano gli stessi file. Con i git worktree costa poco.
Domande frequenti
tmux tiene attivo l’agente se il Mac va in stop?
+
No. tmux protegge dalla chiusura del terminale e dalla caduta della connessione. Lo stop congela tutta la macchina, tmux compreso. Risolvi lo stop a parte con le impostazioni di alimentazione, poi usa tmux sopra.
Che differenza c’è tra tmux e screen?
+
Risolvono lo stesso problema. tmux è mantenuto, è in Homebrew e ha le impostazioni di mouse e scrollback viste sopra. Usa quello che conosci. I comandi cambiano, ma l’idea è la stessa.
Posso vedere l’output dell’agente di prima che mi riattaccassi?
+
Sì. Scorri in alto dentro la sessione. L’impostazione history-limit decide quante righe vengono conservate. Con la modalità mouse attiva, scorri con il trackpad. Senza, premi Ctrl-b e poi il tasto della parentesi quadra aperta, scorri e premi q per uscire.
Funziona su un Mac in hosting?
+
Sì, ed è così che sono configurati i nostri Mac per agenti. Al login viene creata una sessione chiamata agent, con dentro l’agente scelto. Sul desktop che apri nel browser, una finestra di Terminale è collegata a quella sessione.