Les worktrees Claude Code, expliqués
Git gère les worktrees depuis des années : git worktree add extrait une branche dans un second répertoire, adossé aux mêmes données .git. Claude Code s’appuie là-dessus. Avec --worktree (ou -w), il crée le worktree pour vous, démarre la session à l’intérieur, bloque les modifications qui atterriraient dans votre checkout principal et propose de faire le ménage quand vous quittez.
Les worktrees isolent les fichiers, rien d’autre. Pour répartir une tâche entre plusieurs exécutants dans une seule conversation, utilisez des subagents ; pour comparer les options, voir plusieurs agents Claude Code.
- Emplacement par défaut :
.claude/worktrees/<name>/à la racine du dépôt. - Nom de branche par défaut :
worktree-<name>. Sans nom, Claude Code en choisit un, commebright-running-fox. - Partagé avec votre checkout : le répertoire
.git(commits et branches sont donc visibles partout), les plugins de portée projet et les autorisations « ne plus demander ». - Non partagé : tout ce qui est dans le .gitignore, comme
.env,node_moduleset les fichiers de build. Un worktree est un checkout neuf.
Le workflow des worktrees, étape par étape
Ignorez le dossier des worktrees
Ajoutez
.claude/worktrees/au.gitignore, pour que les fichiers des worktrees n’apparaissent pas comme non suivis dans votre checkout principal. Si vous n’avez jamais lancé Claude dans ce dépôt, lancez d’abordclaudeune fois pour accepter la demande de confiance de l’espace de travail ; sinon, les lancements interactifs avec--worktrees’arrêtent aussitôt.Une session par tâche
Lancez
claude --worktree <name>dans un terminal par tâche. Relancer la commande avec un nom existant rouvre ce worktree au lieu d’en créer un nouveau. Vous pouvez aussi demander à Claude en cours de session de « travailler dans un worktree » : il s’y installe lui-même avec l’outilEnterWorktree.# Deux sessions isolées, chacune dans son propre terminal claude --worktree feature-auth claude --worktree fix-flaky-test # Créer un worktree à partir de la pull request 1234 (mettez le # entre guillemets) claude --worktree "#1234" # Garder les worktrees hors de git status echo ".claude/worktrees/" >> .gitignoreEmportez les fichiers non suivis
Listez les fichiers ignorés dont le projet a besoin, comme
.envet.env.local, dans un fichier.worktreeincludeà la racine du dépôt, avec la syntaxe de.gitignore. Claude Code copie les fichiers correspondants dans chaque worktree qu’il crée, y compris ceux des subagents et de l’application desktop. Installez ensuite les dépendances dans le worktree, ou configurez-le dans les réglages : cet exemple part de votre travail en cours, réutilise un seulnode_moduleset n’extrait que le package web.{ "worktree": { "baseRef": "head", "symlinkDirectories": ["node_modules"], "sparsePaths": [".claude", "packages/web"] } }Laissez les sessions travailler
Tant qu’une session est isolée, Claude Code refuse les modifications de fichiers qui visent le checkout principal, les commandes dont le répertoire de travail est le checkout principal et les commandes git redirigées vers lui (
git -C,--git-dir,GIT_DIR). Il ne suit pas ce qu’écrit une simple commande shell commecp: les permissions et le sandboxing restent donc importants.Relisez et fusionnez comme n’importe quelle branche
Chaque worktree est une branche normale. Committez et poussez depuis l’intérieur, ouvrez une pull request et relisez-la comme celle d’un coéquipier. Comme tous les worktrees partagent
.git, la branche est visible tout de suite depuis votre checkout principal.Quittez et faites le ménage
Quand vous quittez, Claude Code vérifie le worktree. Un worktree propre issu d’une session sans nom est supprimé automatiquement avec sa branche ; une session nommée demande d’abord. S’il y a des modifications, des fichiers non suivis ou de nouveaux commits, il demande s’il faut garder ou supprimer le worktree, et affiche une commande
claude --worktree <name> --resumepour y revenir plus tard.
Source : documentation de Claude Code, Run parallel sessions with worktrees
Les réglages des worktrees dans Claude Code
Tous se placent sous worktree dans un fichier de réglages (~/.claude/settings.json, .claude/settings.json ou .claude/settings.local.json).
| Réglage | Effet | Par défaut |
|---|---|---|
worktree.baseRef | "fresh" part de la branche par défaut du remote (origin/main) ; "head" part de votre HEAD local, commits non poussés compris | "fresh" |
worktree.symlinkDirectories | Crée des liens symboliques vers des répertoires comme node_modules du checkout principal au lieu de les dupliquer | Aucun |
worktree.sparsePaths | N’extrait que les répertoires listés (plus les fichiers racine) avec le sparse-checkout ; incluez .claude | Arborescence complète |
worktree.bgIsolation | "worktree" limite les sessions en arrière-plan aux modifications dans un worktree ; "none" les laisse modifier la copie de travail | "worktree" |
| Emplacement des worktrees (application desktop) | Settings > Code définit un dossier personnalisé pour les sessions locales ; les connexions SSH ont le leur | .claude/worktrees/ |
.worktreeinclude (fichier, pas un réglage) | Copie les fichiers ignorés correspondants dans chaque nouveau worktree | Aucun |
Worktree Claude Code, branche ou git worktree
| Changer de branche | `git worktree add` + `claude` | `claude --worktree` | |
|---|---|---|---|
| Fichiers séparés sur le disque | Non : un répertoire, une branche à la fois | Oui | Oui |
| Plusieurs sessions à la fois | Non : elles s’écrasent mutuellement | Oui | Oui |
| Emplacement | Votre checkout | Où vous voulez | .claude/worktrees/<name>/, ou le chemin d’un hook |
| Point de départ | La branche sur laquelle vous basculez | Toute branche existante ou nouvelle | origin/<default>, votre HEAD ou une PR |
Copie .env | Inutile | Non | Oui, avec .worktreeinclude |
| Modifications bloquées à l’extérieur | Non | Non | Oui |
| Nettoyage | Aucun | git worktree remove | Proposé en quittant |
Le faire à la main avec git worktree
Passez par git directement quand vous voulez une branche existante précise ou un dossier hors du dépôt ; worktree.baseRef ne peut pas désigner une branche. Claude Code partage quand même les plugins et les autorisations avec ces worktrees.
Créez le worktree, lancez Claude, supprimez-le une fois fini
Remplacez
feature-apar un nouveau nom de branche, ou retirez-bpour extraire une branche qui existe déjà.git worktree add ../app-feature-a -b feature-a cd ../app-feature-a && claude git worktree list git worktree remove ../app-feature-a
Subagents et sessions en arrière-plan dans des worktrees
- Demandez à Claude d’« utiliser des worktrees pour tes agents », ou ajoutez
isolation: worktreeau frontmatter d’un subagent personnalisé dans.claude/agents/: chaque subagent travaille alors dans son propre worktree temporaire. - Le worktree d’un subagent sans modifications est supprimé quand le subagent termine. Celui qui contient des modifications reste jusqu’à ce qu’un nettoyage périodique puisse le supprimer sans perte, après
cleanupPeriodDays. - Les sessions en arrière-plan (
claude --bg) ne modifient par défaut que l’intérieur d’un worktree ; lancez-en une avecclaude --bg --worktreeou réglezworktree.bgIsolationsur"none". - Dans l’application desktop, activez Worktree sous la zone de saisie avant de démarrer une session.
Nettoyage des worktrees et problèmes courants
- Les lancements
claude -p --worktreen’ont pas de question à la sortie : ils laissent donc leurs worktrees derrière eux. Supprimez-les avecgit worktree remove, aprèsgit worktree unlocksi git indique qu’ils sont verrouillés. Can only use --worktree in a git repository: lancezgit initet faites un premier commit, ou configurez un hookWorktreeCreatepour SVN, Perforce ou Mercurial.- Les fichiers Git LFS apparaissent comme des fichiers pointeurs quand LFS a été installé avec
--local: lancezgit lfs pulldans le worktree. - Claude Code ne crée pas de worktree quand
.claudeou.claude/worktreesest un lien symbolique. - Dans les hooks,
${CLAUDE_PROJECT_DIR}pointe toujours vers le checkout principal ; lisez le champcwdde l’entrée du hook pour obtenir le chemin du worktree. - Un worktree de base
"fresh"sans commit propre, ou dont la PR a été fusionnée, revient à la branche par défaut quand vous le rouvrez par son nom.
Les worktrees séparent les sessions. Crewmark les fait travailler.
Les worktrees règlent le problème des collisions, mais chaque session reste inactive tant que vous n’écrivez rien. Crewmark transforme une session Claude Code, Codex, DeepSeek Harness ou OpenCode en employé IA avec un rôle, un objectif et des horaires de travail, et la réveille à intervalle régulier (heartbeat) pour qu’elle prenne la prochaine issue d’un tableau.
Un employé par worktree
Donnez à chaque employé son propre worktree et son rôle, par exemple un développeur et un relecteur dans le même dépôt, comme dans plusieurs agents Claude Code.
Laissez la pulsation lancer le travail
Pendant ses horaires de travail, chaque employé se réveille toutes les 15, 30 ou 60 minutes dans la même conversation ; voir comment rendre Claude Code proactif.
Assignez des issues et relisez les branches
Mettez le travail sur le tableau ; chaque employé prend une issue, committe sur sa propre branche et vous écrit quand il a besoin d’une décision. Lisez ce qu’est un employé IA.
FAQ worktrees Claude Code
Qu’est-ce qu’un worktree dans Claude Code ?
Un répertoire de travail git séparé, avec ses propres fichiers et sa propre branche, qui partage l’historique de votre dépôt. claude --worktree <name> en crée un et y lance la session : des sessions en parallèle ne modifient donc pas les mêmes fichiers.
Où Claude Code place-t-il les worktrees ?
Dans .claude/worktrees/<name>/ à la racine du dépôt, sur une branche nommée worktree-<name>. L’application desktop permet de choisir un autre dossier dans Settings, et un hook WorktreeCreate peut les placer n’importe où.
De quelle branche part un worktree Claude Code ?
Par défaut, de la branche par défaut du remote, en général origin/main. Réglez worktree.baseRef sur "head" pour partir de votre HEAD local, passez "#1234" pour partir d’une pull request, ou créez le worktree avec git worktree add pour toute autre branche.
Pourquoi mon fichier .env manque-t-il dans le worktree ?
Un worktree est un checkout neuf, donc les fichiers ignorés par git n’y sont pas. Listez-les dans un fichier .worktreeinclude à la racine du dépôt et Claude Code les copie dans chaque nouveau worktree.
Comment nettoyer les worktrees de Claude Code ?
En quittant une session, Claude Code propose de supprimer son worktree, et supprime automatiquement ceux qui sont propres et sans nom. Les worktrees des lancements -p restent : listez-les avec git worktree list et supprimez-les avec git worktree remove.
Worktree ou branche : quelle différence ?
Une branche est une suite de commits ; un worktree est un répertoire où une branche est extraite. Changer de branche modifie les fichiers de votre unique répertoire, alors que les worktrees donnent à chaque branche son propre répertoire : plusieurs sessions peuvent donc tourner en même temps.
Les subagents peuvent-ils utiliser des worktrees ?
Oui. Demandez à Claude d’utiliser des worktrees pour ses agents, ou ajoutez isolation: worktree au frontmatter d’un subagent personnalisé. Chacun reçoit un worktree temporaire, supprimé s’il n’apporte aucune modification.
Vérifié dans la documentation de Claude Code (worktrees, réglages, référence CLI et application desktop) le 6 novembre 2026.