Sous-agents Claude Code : la frontière de règles dont personne ne vous prévient

Les sous-agents héritent de votre modèle, pas de vos règles. Lancez-en cinq et vous obtenez cinq agents sans protection. Voici pourquoi cette frontière existe, et le hook unique qui la referme.

Le robot kitstarter remettant une copie de son guide de règles à un robot assistant plus petit, représentant un sous-agent qui hérite des règles

Les sous-agents Claude Code sont l'une des fonctionnalités les plus utiles de l'outil, mais aussi l'une des plus faciles à mal configurer sans s'en rendre compte. Ils permettent de distribuer le travail. Mais ils distribuent aussi une brèche : toutes les règles que vous avez écrites pour encadrer votre agent s'arrêtent à la porte du sous-agent. Cet article explique ce que sont les sous-agents, quand les utiliser, et ce problème de frontière qu'aucun guide de démarrage ne mentionne.

Que sont les sous-agents Claude Code ?

Un sous-agent est un nouvel agent que votre agent principal lance avec l'outil Task pour gérer une tâche autonome de son côté. Il s'exécute dans sa propre fenêtre de contexte, fait le travail et ne renvoie que sa réponse finale. Cette isolation est tout l'intérêt de la démarche : une recherche large ou un audit important peuvent consommer des milliers de tokens, et un sous-agent maintient tout ce bruit hors de votre conversation principale.

L'isolation est réelle dans les deux sens. Le sous-agent ne voit pas votre conversation en cours et, comme nous allons le voir, il ne voit pas non plus les règles que vous avez définies au début de celle-ci.

Quand utiliser un sous-agent

Utilisez un sous-agent lorsque le travail est indépendant et bruyant : une recherche dans toute la base de code quand vous ne savez pas où se trouve un élément, une révision de plusieurs fichiers dont vous ne voulez que la conclusion, ou plusieurs tâches sans rapport que vous voulez lancer en parallèle. Gardez le travail étroitement lié et étape par étape dans la session principale, où chaque action dépend de la précédente.

La règle d'or : déléguez la lecture, gardez la décision. Un sous-agent est excellent pour aller chercher l'information. En revanche, il convient mal aux tâches où vous devez intervenir à chaque étape, car vous ne pouvez pas le guider en cours de route. Vous envoyez un prompt, vous recevez une réponse.

Pourquoi vos règles meurent à la frontière Task

Voici la partie dont personne ne vous prévient. Quand votre agent principal lance un sous-agent, ce dernier hérite de votre modèle, mais pas de vos règles. Claude Code charge votre CLAUDE.md et exécute vos hooks SessionStart au début de la session principale, et ce contexte ne franchit jamais la frontière Task. Le sous-agent démarre de zéro, avec son propre prompt système et aucune de vos règles de comportement soigneusement rédigées.

Pensez à ce que cela signifie à grande échelle. Vous passez une après-midi à peaufiner un CLAUDE.md pour que votre agent demande avant de coder, reste sobre et ne livre pas d'interface bâclée par l'IA. Puis, votre agent lance cinq sous-agents pour paralléliser un refactoring. Ces cinq agents s'exécutent sans aucune de vos règles. L'endroit précis où vous voulez le plus de retenue, à savoir plusieurs agents modifiant des fichiers en même temps, est le seul endroit d'où vos règles sont absentes. Ce n'est pas un bug dans votre configuration. C'est le fonctionnement normal de cette frontière, et c'est invisible tant qu'on ne cherche pas à le voir.

Le modèlePasse. Le sous-agent réfléchit avec le même modèle que celui que vous avez choisi.
Le jeu d'outilsPasse. Il obtient tous les outils que son type d'agent est autorisé à utiliser.
Votre prompt de tâchePasse. Un prompt en entrée, une réponse en retour. C'est l'intégralité du canal.
CLAUDE.mdNe passe pas. Il est lu dans la session principale, et ce contexte n'est jamais copié de l'autre côté.
Les hooks SessionStartNe passent pas. Ils se sont déclenchés une fois, pour la session, avant que le sous-agent n'existe.
La conversation jusqu'iciNe passe pas. Chaque sous-agent s'ouvre sur une fenêtre de contexte vide.
La frontière Task est un filtre. Ce qui définit un sous-agent la franchit. Ce qui le régit, non.

Cela a été documenté publiquement. Le dépôt ponytail rules a ouvert le ticket #252 précisément à ce sujet : les instructions de SessionStart ne parviennent pas aux sous-agents, de sorte que les règles cessent silencieusement de s'appliquer dès que le travail est délégué. Si vous comptez uniquement sur une configuration SessionStart, chaque tâche déléguée est une brèche.

La solution : réinjecter les règles avec un hook SubagentStart

La solution est un hook qui se déclenche sur SubagentStart et écrit vos règles de travail directement dans le contexte du nouveau sous-agent. Claude Code expose cet événement précisément pour cette raison. kitstarter l'intègre avec un script de 16 lignes, subagent-rules.mjs, qui s'exécute à chaque lancement de sous-agent et rappelle les règles importantes. Il est conçu pour échouer de manière non bloquante, de sorte qu'une mauvaise exécution n'interrompt jamais le sous-agent.

Un robot debout à côté d'une porte ouverte tandis qu'une feuille de règles unique traverse l'ouverture vers lui
Un hook SubagentStart transmet les règles à travers la frontière, de sorte que le sous-agent démarre sous protection.

Voici textuellement les trois règles qu'il injecte dans chaque sous-agent :

Sobriétéconstruire la plus petite chose qui fonctionne : réutiliser l'existant, privilégier la bibliothèque standard et la plateforme avant les dépendances, pas d'abstractions spéculatives
Pas de sloppas de marqueurs d'IA bâclée dans le travail d'interface : pas de prose truffée de tirets cadratins, pas de glassmorphisme par défaut, pas de polices minuscules, corps de texte à 16px
Rapport directsi quelque chose a échoué ou n'est pas vérifié, dites-le clairement ; ne prétendez jamais que c'est terminé sans avoir vérifié
Les règles exactes que subagent-rules.mjs écrit dans chaque sous-agent Claude Code qu'il protège.

Ce simple hook ne fait pas tout, cependant. C'est l'un des huit événements que kitstarter configure pour que les règles s'appliquent à chaque instant de la session, et pas seulement au début.

Des règles qui tiennent à chaque frontière

Une règle qui ne se déclenche qu'une fois est une règle pleine de trous. kitstarter associe huit événements Claude Code à huit scripts pour que le même comportement s'applique au démarrage d'une session, lorsque vous envoyez un prompt, lorsqu'un outil s'exécute, lorsqu'un sous-agent est lancé et lorsque l'agent tente de s'arrêter. Le tableau complet des connexions ressemble à ceci :

SessionStartsession-start.mjs, tutor.mjs
UserPromptSubmitclarity.mjs, tutor.mjs
PreCompacttutor.mjs
SubagentStartsubagent-rules.mjs
PreToolUsesafety-guard.mjs (Bash), clarity.mjs (Edit et Write)
PostToolUseslop-check.mjs (Edit et Write)
Stopstop-reminder.mjs
SessionEndrecap.mjs
Huit événements, huit scripts. SubagentStart est celui que la plupart des configurations oublient.

Est-ce que cette application des règles fonctionne vraiment ?

Dans notre benchmark en environnement contrôlé, oui, et nous publions aussi les échecs. Sur le même modèle et les mêmes tâches scénarisées, le kit a demandé l'autorisation avant de coder sur 5 tâches sur 5, contre 2 sur 5 pour Claude Code de base. Il a livré environ 40 % de code en moins pour un résultat identique, et a réduit les marqueurs de code bâclé de 5 à 0 sur la tâche debug-spiral. Un comportement imposé l'a emporté sur un comportement laissé à l'humeur du modèle pour chaque tâche qui laissait une marge de manœuvre.

Côté transparence : sur une tâche déjà claire et minimale, le kit représente un surcoût pur. La tâche todo-app a été environ deux fois plus lente et à peu près 75 % plus chère pour un résultat quasi identique. Sur l'ensemble de la suite, les tokens de contexte des hooks ajoutent un surcoût moyen d'environ 25 %. Ce coût est réel, il est affiché, et il est prélevé sur votre abonnement existant. Nous ne cachons jamais les pertes, car un benchmark qui ne montre que des victoires, c'est du marketing, pas de la mesure.

Ce qu'il faut retenir

Les sous-agents Claude Code valent la peine d'être utilisés. Gardez simplement en tête la frontière : ils héritent de votre modèle, pas de votre CLAUDE.md. Une configuration limitée à SessionStart laisse donc chaque tâche déléguée sans protection. Comblez cette brèche avec un hook SubagentStart qui réinjecte vos règles, et chaque sous-agent lancé par votre agent sera soumis aux mêmes exigences que la session principale. Vous pouvez écrire ce hook vous-même en vous basant sur le modèle ci-dessus, ou démarrer avec un hook déjà configuré.

Des règles qui survivent à la frontière Task

kitstarter configure huit événements Claude Code, y compris SubagentStart, pour que votre agent reste sobre et fiable même lorsqu'il distribue le travail. Pour Claude Code, Codex et Antigravity.

Get the kit · $20 $29Lire la documentation