Guide

Garder une session Claude Code active avec tmux

Un agent de terminal vit dans un terminal. Fermez la fenêtre, et vous perdez l’agent. Coupez la connexion SSH, et vous perdez l’agent. tmux place l’agent dans une session que le terminal se contente d’afficher. La session continue de tourner quand vous détournez le regard. Voici la configuration que nous utilisons sur chaque Mac pour agents, avec les commandes exactes.

Installer et lancer

brew install tmux
tmux new -s agent

Vous êtes maintenant dans une session nommée agent. Lancez-y l’agent comme n’importe quelle autre commande.

claude

Pour Codex, lancez sa commande à la place. Tout ce qui figure sur cette page fonctionne de la même façon pour les deux outils.

Se détacher et revenir

Appuyez sur Ctrl-b, relâchez, puis appuyez sur d. Le terminal revient à votre shell et l’agent continue de travailler en arrière-plan. Pour y revenir depuis n’importe quel terminal de la machine, rattachez-vous par son nom.

tmux attach -t agent

Si vous avez oublié le nom, listez ce qui tourne.

tmux ls

Reprendre depuis votre téléphone

Installez un client SSH sur votre téléphone. Termius et Blink Shell sont les plus courants. Connectez-vous au Mac et rattachez-vous à la même session. Vous voyez exactement ce que fait l’agent et pouvez lui écrire. Les claviers de téléphone sont peu pratiques pour les longs prompts. La plupart des gens utilisent donc le téléphone pour suivre l’avancement et répondre à une question. Ils font le vrai travail depuis un portable.

Pour Claude Code en particulier, Remote Control est plus agréable que SSH sur téléphone. Il rattache l’app Claude à la session en cours, sans aucun terminal. Le guide pour faire tourner Claude Code 24/7 explique comment le configurer. tmux reste utile en dessous, car Remote Control se rattache à une session qui doit exister.

Le rendre confortable

Deux réglages rendent tmux bien plus simple pour le travail avec un agent. Mettez-les dans un fichier nommé .tmux.conf dans votre dossier personnel.

set -g mouse on
set -g history-limit 50000

Le premier vous permet de défiler avec un trackpad ou le doigt. Le second garde assez de sortie pour relire ce que l’agent a fait il y a une heure. Redémarrez tmux après avoir enregistré le fichier, ou rechargez-le depuis une session.

tmux source-file ~/.tmux.conf

Survivre à un redémarrage

Les sessions tmux vivent en mémoire. Un redémarrage les efface. Sur une machine sans surveillance, la session doit revenir toute seule. Un LaunchAgent lancé à la connexion s’en charge. Enregistrez ceci dans un fichier nommé dev.local.agent-session.plist, dans le dossier LaunchAgents de la Library de votre dossier personnel.

<?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>

Chargez-le une fois. Il s’exécute alors à chaque connexion, puis vérifie chaque minute.

launchctl load ~/Library/LaunchAgents/dev.local.agent-session.plist

Cela crée une session vide. Cela ne relance pas l’agent dedans, et c’est voulu. Un agent qui se relance tout seul sur une tâche à moitié finie, sans humain réveillé, c’est la recette des mauvaises surprises. Activez l’ouverture de session automatique pour l’utilisateur, pour que le LaunchAgent ait une session où tourner. Puis lancez la tâche vous-même à votre prochain rattachement.

Deux sessions, deux agents

Rien ne vous empêche de lancer Claude Code dans une session et Codex dans une autre, sur la même machine. Deux sessions Claude Code sur deux dépôts fonctionnent aussi. Nommez-les d’après la tâche.

tmux new -s api-refactor
tmux new -s ios-tests

Gardez chaque agent dans son propre checkout du dépôt, pour qu’ils ne modifient pas les mêmes fichiers. Les worktrees Git rendent cela peu coûteux.

Questions fréquentes

tmux garde-t-il l’agent actif si le Mac se met en veille ?

+

Non. tmux protège contre la fermeture du terminal et la coupure de connexion. La veille fige toute la machine, tmux compris. Réglez la veille à part avec les réglages d’alimentation, puis utilisez tmux par-dessus.

Quelle différence entre tmux et screen ?

+

Ils résolvent le même problème. tmux est maintenu, disponible dans Homebrew, et offre les réglages de souris et d’historique ci-dessus. Utilisez celui que vous connaissez. Les commandes diffèrent, mais l’idée est la même.

Puis-je voir la sortie de l’agent d’avant mon rattachement ?

+

Oui. Remontez dans la session. Le réglage history-limit fixe le nombre de lignes conservées. Avec le mode souris activé, défilez avec un trackpad. Sinon, appuyez sur Ctrl-b puis sur la touche crochet gauche, défilez, et appuyez sur q pour sortir.

Cela fonctionne-t-il sur un Mac hébergé ?

+

Oui, et c’est ainsi que nos Mac pour agents sont configurés. Une session nommée agent est créée à la connexion, avec l’agent choisi qui tourne dedans. Une fenêtre Terminal y est rattachée sur le bureau que vous ouvrez dans votre navigateur.

Guides associés