Build This Now
Build This Now
Qu'est-ce que le code Claude ?Installer Claude CodeL'installateur natif de Claude CodeTon premier projet Claude Code
DESIGN.md : Résoudre l'incohérence UI avec Claude CodeClaude Buddy/powerupLa Fuite des Source Maps de Claude CodeFork Subagents dans Claude CodeKimi K2.6 dans Claude CodeMémoire automatique dans le code ClaudeAuto Memory dans Claude CodeAuto Memory dans Claude CodeAuto Memory dans Claude CodeAuto Memory dans Claude Code
speedy_devvkoen_salo
Blog/Handbook/Core/Fork Subagents in Claude Code

Fork Subagents dans Claude Code

CLAUDE_CODE_FORK_SUBAGENT=1 permet aux agents enfants parallèles de partager le cache de prompt du parent, réduisant les coûts de tokens en entrée jusqu'à 90% pour les enfants 2-N.

Arrêtez de configurer. Commencez à construire.

Templates SaaS avec orchestration IA.

Published Apr 22, 20266 min readHandbook hubCore index

Le problème : lancer des subagents en parallèle dans Claude Code coûtait cher. Chaque agent enfant reconstruisait le prompt système, le tableau d'outils complet et tout l'historique de conversation depuis zéro. Cinq agents, cinq factures de tokens complètes. Aucun partage. Avant la v2.1.117, le code du fork existait dans le dépôt mais était éliminé à la compilation dans les releases publiques. Seuls les builds internes d'Anthropic pouvaient l'utiliser.

La solution : une seule variable d'environnement change tout. Active CLAUDE_CODE_FORK_SUBAGENT=1 et les enfants 2-N puisent directement dans le cache du prompt partagé. Environ 10x moins cher par agent supplémentaire :

export CLAUDE_CODE_FORK_SUBAGENT=1

Ce que sont vraiment les fork subagents

Un enfant forké ne démarre pas une session vierge. Il reçoit les octets exacts du prompt système déjà rendu de son parent, via override.systemPrompt tiré de toolUseContext.renderedSystemPrompt. Mêmes octets, pas un nouveau rendu. Ça compte parce que l'état des feature flags (comme GrowthBook) reste cohérent entre parent et enfant sans coordination supplémentaire.

Le tableau d'outils suit la même règle. Il passe tel quel avec useExactTools: true, ce qui court-circuite complètement resolveAgentTools(). La sérialisation reste byte-identique, c'est ce qui fait fonctionner le cache. Un détail à noter : l'outil Agent reste dans le pool d'outils de l'enfant même si l'enfant n'a pas le droit de l'appeler. Le supprimer casserait le cache. La restriction est appliquée autrement (voir plus bas).

Chaque bloc d'appel d'outil du parent dans l'historique de messages de l'enfant reçoit la constante FORK_PLACEHOLDER_RESULT ('Fork started -- processing in background') comme résultat. Tous les enfants reçoivent des octets de placeholder identiques. La frontière du cache tombe juste avant la directive propre à chaque enfant, donc les enfants ne divergent qu'à l'instruction spécifique à leur tâche.

Avant la v2.1.117, tout ce chemin était supprimé des builds publics à la compilation. Les utilisateurs externes ne pouvaient pas l'activer du tout.

Le calcul des coûts

Avec 48 500 tokens de préfixe partagé, les chiffres sont concrets :

ScénarioCoût en tokens par enfant
Sans fork (chaque enfant reconstruit)~48 700 tokens
Avec fork (enfants 2-N touchent le cache)~5 050 tokens

Le premier enfant paie plein tarif. C'est la première requête, il n'y a encore rien dans le cache. Les enfants 2-N touchent le préfixe partagé et ne paient que le delta.

Cinq agents en parallèle : sans fork tu dépenses environ 243 500 tokens de contexte partagé. Avec fork tu dépenses ~48 700 pour le premier plus ~20 200 pour les enfants 2 à 5. Le cache fait le reste.

Comment l'activer

Ajoute la variable d'environnement à ton profil shell :

export CLAUDE_CODE_FORK_SUBAGENT=1

Pour les pipelines CI/CD, définis-la dans les variables d'environnement au niveau du pipeline. Chaque exécution d'agent dans ce pipeline la récupèrera automatiquement.

Un comportement à connaître : le fork ne se déclenche que quand subagent_type est omis de l'appel à l'outil Agent. Si le modèle spécifie un type explicite (par exemple "Explore" ou "Plan"), le chemin fork ne se déclenche pas. Les chemins par type nommé ont leur propre logique.

Le garde-fou contre la récursion

C'est le détail qui n'apparaît nulle part ailleurs.

Chaque enfant forké reçoit une balise XML standard injectée dans sa session. Elle dit en gros : cette instruction est pour le parent. TOI tu es le fork. Ne lance PAS de sous-agents.

Sans ça, les enfants tenteraient de forker leurs propres enfants, qui forkent encore, et tout ça recurserait jusqu'à l'effondrement de la fenêtre de contexte. La balise XML brise la chaîne.

Il y a deux gardes, pas un seul. Le premier est un fast-path querySource === 'agent:builtin:fork' en haut du gestionnaire d'options d'agent. Le second est un scan de secours de l'historique des messages qui cherche la balise XML standard elle-même. Ce fallback existe parce que querySource peut être réécrit par autocompact lors de longues sessions. Les deux vérifications doivent confirmer que la session est un enfant fork avant que le garde s'active.

Le fork est aussi incompatible avec le mode coordinateur. Un coordinateur forké hériterait du prompt système "tu es le coordinateur, délègue le travail" et commencerait à orchestrer plutôt qu'à exécuter. Les deux modes ne peuvent pas partager une session.

Ce que ça débloque

Les dispatches d'agents en parallèle sont le cas d'usage principal. Cinq agents sur cinq modules tournent simultanément, et les enfants 2-5 partagent le préfixe mis en cache du parent. Le coût total du contexte partagé tombe à environ un seul enfant supplémentaire de tokens.

Les pipelines CI/CD en bénéficient automatiquement dès que CLAUDE_CODE_FORK_SUBAGENT=1 est dans l'environnement. Les workflows multi-agents qui étaient auparavant trop coûteux à grande échelle deviennent pratiques.

Le pattern "policy islands" devient aussi utilisable. Les commandes avec context: fork et agent: <name> dans leur frontmatter spawne des subagents isolés avec des allowed_tools pré-déclarés. Ces subagents tournent sans invites d'approbation en cours de workflow et ne renvoient qu'un résumé au parent. Le parent ne voit jamais les appels d'outils intermédiaires.

Les limites à connaître

  • Incompatible avec le mode --print. Le fork utilise permissionMode: 'bubble', qui remonte les invites vers un terminal parent. Dans les runs SDK/headless non-interactifs, il n'y a pas de terminal.
  • Incompatible avec le mode coordinateur. Un coordinateur forké hérite des instructions d'orchestration et essaie de déléguer plutôt qu'exécuter.
  • La fenêtre de contexte grandit avec la longueur de session. Les enfants fork portent tout l'historique de conversation du parent. Les longues sessions avec beaucoup d'enfants coûtent plus en tout, même avec le cache. Les longues sessions chaudes sont là où ça pique le plus.
  • Opt-in, pas par défaut. La variable d'environnement doit être définie explicitement. Rien ne change sans elle.

Ce que ça débloque à grande échelle

Avec CLAUDE_CODE_FORK_SUBAGENT=1 activé et les utilisateurs Pro/Max désormais à l'effort high par défaut (aussi depuis la v2.1.117), la combinaison est significative. Un orchestrateur tournant à l'effort high dispatche des enfants fork en parallèle. Chaque enfant hérite du contexte parent complet à prix réduit grâce au cache. Chaque enfant tourne à l'effort high. Avant cette release, les utilisateurs Pro/Max n'avaient ni l'un ni l'autre.

Active la variable, lance cinq agents en parallèle, et quatre d'entre eux coûtent environ un dixième de ce qu'ils coûtaient avant. C'est tout.

Continue in Core

  • La Fenêtre de Contexte 1M dans Claude Code
    Anthropic a activé la fenêtre de contexte 1M tokens pour Opus 4.6 et Sonnet 4.6 dans Claude Code. Sans header beta, sans surcharge, tarification fixe, et moins de compactions.
  • AGENTS.md vs CLAUDE.md : expliqué
    Deux fichiers de contexte, une seule base de code. Comment AGENTS.md et CLAUDE.md diffèrent, ce que chacun fait, et comment utiliser les deux sans rien dupliquer.
  • Auto Dream
    Claude Code nettoie ses propres notes de projet entre les sessions. Les entrées obsolètes sont supprimées, les contradictions résolues, les fichiers thématiques réorganisés. Lance /memory.
  • Mémoire automatique dans le code Claude
    La mémoire automatique permet à Claude Code de conserver des notes de projet en cours. Où se trouvent les fichiers, ce qui est écrit, comment /memory le fait basculer, et quand le choisir par rapport à CLAUDE.md.
  • Stratégies d'auto-planning
    Le mode Auto Plan utilise --append-system-prompt pour forcer Claude Code dans une boucle plan-d'abord. Les opérations sur les fichiers sont mises en pause pour approbation avant de toucher quoi que ce soit.
  • Claude Code Autonome
    Une stack unifiée pour des agents qui livrent des fonctionnalités la nuit. Les threads te donnent la structure, les boucles Ralph te donnent l'autonomie, la vérification garde ça honnête.

More from Handbook

  • Principes de base de l'agent
    Cinq façons de construire des agents spécialisés dans le code Claude : Sous-agents de tâches, .claude/agents YAML, commandes slash personnalisées, personas CLAUDE.md, et invites de perspective.
  • L'ingénierie du harness agent
    Le harness, c'est toutes les couches autour de ton agent IA sauf le modèle lui-même. Découvre les cinq leviers de contrôle, le paradoxe des contraintes, et pourquoi le design du harness détermine les performances de l'agent bien plus que le modèle.
  • Patterns d'agents
    Orchestrateur, fan-out, chaîne de validation, routage par spécialiste, raffinement progressif, et watchdog. Six formes d'orchestration pour câbler des sub-agents Claude Code.
  • Meilleures pratiques des équipes d'agents
    Patterns éprouvés pour les équipes d'agents Claude Code. Prompts de création riches en contexte, tâches bien calibrées, propriété des fichiers, mode délégué, et correctifs v2.1.33-v2.1.45.

Arrêtez de configurer. Commencez à construire.

Templates SaaS avec orchestration IA.

La Fuite des Source Maps de Claude Code

Un oubli dans .npmignore a livré 512K lignes de TypeScript, 44 feature flags GrowthBook, le daemon KAIROS et l'Undercover Mode dans chaque npm install.

Kimi K2.6 dans Claude Code

Kimi K2.6 est le modèle open-weight qui propulse Cursor. Voici comment rediriger Claude Code via OpenRouter pour tourner à environ 12 $ par ingénieur et par mois.

On this page

Ce que sont vraiment les fork subagents
Le calcul des coûts
Comment l'activer
Le garde-fou contre la récursion
Ce que ça débloque
Les limites à connaître
Ce que ça débloque à grande échelle

Arrêtez de configurer. Commencez à construire.

Templates SaaS avec orchestration IA.