Audit du budget de contexte : /skill-doctor, plafonds de sortie et les six chiffres qui remplissent votre fenêtre
Un projet Claude Code accumule de la dette de contexte comme un ordinateur portable accumule des onglets de navigateur. Chaque skill que vous avez installé ajoute une ligne à une liste que Claude relit à chaque tour. Chaque sous-agent ajoute une description. Chaque paragraphe de CLAUDE.md que vous avez écrit en mars se charge en septembre, que la tâche en ait besoin ou non. Et chaque npm test déverse jusqu'à 30 000 caractères dans la conversation. Rien de tout cela n'est visible jusqu'à ce que la session commence à oublier des instructions ou que la facture cesse de correspondre au travail.
La gestion du contexte couvre les deux commandes que vous utilisez sur le moment, /clear et /compact. Cette page est l'audit que vous lancez une fois par projet : six endroits où Claude Code dépense du contexte avant que vous tapiez quoi que ce soit ou entre vos tours, le réglage qui gouverne chacun, et la valeur par défaut. Tout ce qui suit figure dans la documentation officielle en date de septembre 2026, et la plupart de ces réglages sont plus récents que le folklore qui les entoure.
- Mesurer avant de couper : lisez /context, l'attribution de /usage et l'estimation de la liste fournie par /doctor pour corriger d'abord le plus gros poste
- Élaguer la liste des skills avec /skill-doctor (v2.1.252+) et les quatre états de skillOverrides, et connaître le budget de 1 % de la fenêtre auquel la liste est plafonnée
- Plafonner ce qu'une commande shell ou une tâche d'arrière-plan renvoie en ligne (30 000 et 32 000 caractères par défaut) avec bashOutputMaxChars et taskOutputMaxChars
- Cesser de payer CLAUDE.md dans chaque sous-agent avec omitClaudeMd (v2.1.271+) et garder les descriptions de sous-agents sous le seuil d'avertissement de 15 000 tokens
- Régler volontairement la fenêtre d'auto-compaction (/autocompact, autoCompactWindow) et comprendre le budget de 25 000 tokens qui décide quels skills invoqués survivent à la compaction
- Plafonner l'effort à l'échelle de la flotte avec maxEffortLevel quand ce sont les tokens de réflexion, et non le contexte, qui constituent la vraie facture
Ce qui se trouve dans la fenêtre avant que vous tapiez
Deux faits rendent ce diagramme actionnable. Tout ce qui se trouve dans l'encadré de gauche est payé à chaque requête, parce que Claude Code envoie la conversation complète à chaque tour et que seule la remise de lecture de cache en atténue le coût. Et l'encadré de droite est l'endroit où une seule commande verbeuse peut ajouter plus que tout l'encadré de gauche en une étape. L'audit ci-dessous se déroule de gauche à droite.
L'audit
- Lancez /context pour obtenir une répartition en direct par catégorie avec des suggestions d'optimisation, y compris les fichiers CLAUDE.md et de mémoire automatique qui se sont chargés. Sur un plan Pro, Max, Team ou Enterprise, /usage attribue l'usage récent aux skills, sous-agents, plugins et serveurs MCP individuels sous forme de pourcentages, et signale les comportements (contexte long, échecs de cache) qui représentent 10 % ou plus. /doctor estime le coût en contexte de la liste des skills et ses plus gros contributeurs. Notez les trois postes les plus importants avant de changer quoi que ce soit.
- Chaque skill présent dans la liste coûte du contexte à chaque tour, que Claude l'utilise ou non. /skill-doctor (v2.1.252+) montre le coût en contexte et la fréquence d'invocation de chaque skill, signale les skills jamais invoqués et vous indique où les désactiver ; il liste aussi les plugins que vous n'avez pas utilisés récemment. Commencez par les plus coûteux parmi les inutilisés. Les sessions interactives ouvrent le rapport dans l'onglet Stats du gestionnaire /plugin ; avec -p, il s'affiche en texte. Il ne couvre pas les skills intégrés ni d'entreprise, nécessite la récupération des feature flags, et refuse de s'exécuter via Remote Control.
- Quatre états par skill : on (nom et description listés), name-only (listé sans description, toujours invocable), user-invocable-only (masqué pour Claude, toujours dans le menu /), off. Le menu /skills écrit cela pour vous : surlignez un skill, appuyez sur Espace pour faire défiler les états, Échap pour enregistrer dans .claude/settings.local.json. Les skills de plugins se gèrent plutôt via /plugin. Le réglage disableBundledSkills: true retire les skills et workflows intégrés de Claude Code en une seule ligne.
- La liste est plafonnée à 1 % de la fenêtre de contexte du modèle (skillListingBudgetFraction, valeur par défaut 0.01). En cas de dépassement, Claude Code conserve tous les noms mais supprime les descriptions en commençant par les skills les moins utilisés, ce qui retire les mots-clés dont Claude a besoin pour les sélectionner automatiquement. La description de chaque skill plus son when_to_use sont également coupés à 1 536 caractères (skillListingMaxDescChars). Mettez le cas d'usage clé dans la première phrase.
- Gardez CLAUDE.md sous 200 lignes et déplacez les instructions spécifiques à un workflow (revue de PR, migrations) dans des skills, qui ne se chargent qu'à l'invocation. La mémoire automatique ne charge que ses 200 premières lignes ou 25 Ko, donc un MEMORY.md surchargé se tronque silencieusement. Les descriptions de sous-agents sont lues à chaque tour : quand les descriptions combinées de vos sous-agents personnalisés dépassent 15 000 tokens, Claude Code avertit au démarrage. Déplacez les détails dans le prompt système de chaque sous-agent, qui ne se charge que lorsqu'il s'exécute.
- Une commande Bash ou PowerShell réussie renvoie jusqu'à environ 30 000 caractères en ligne par défaut ; au-delà, Claude reçoit un court aperçu plus un chemin de fichier et lit le fichier à la demande. Une commande en échec renvoie jusqu'à 10 000 caractères sous forme d'extrait début-et-fin. bashOutputMaxChars (v2.1.261+, borné entre 4 000 et 128 000) définit conjointement le plafond en ligne et la fenêtre de relecture, et fait ignorer BASH_MAX_OUTPUT_LENGTH à Claude Code. taskOutputMaxChars fait la même chose pour les tâches d'arrière-plan lues avec TaskOutput (valeur par défaut 32 000, même plage). Abaissez-les sur les projets dont les outils de build sont bavards ; ne les augmentez que si Claude finit de toute façon par ouvrir le fichier enregistré.
- Un sous-agent non-fork charge chaque niveau de votre hiérarchie CLAUDE.md plus un instantané de git status, en plus de son propre prompt. Les agents intégrés Explore et Plan sautent les deux. Pour les sous-agents personnalisés qui reçoivent tout du prompt de délégation, mettez omitClaudeMd: true dans le frontmatter (v2.1.271+) : les fichiers CLAUDE.md utilisateur, projet et local sont ignorés ; les fichiers de politique managés se chargent toujours. Ignoré quand l'agent s'exécute comme agent de session principal. Pour de grosses instructions partagées dans des exécutions headless, passez plutôt --append-subagent-system-prompt-file (v2.1.261+) au lieu de les entasser dans chaque description.
- autoCompactWindow est un nombre de tokens de 100 000 à 1 000 000, plafonné à la fenêtre de votre modèle ; non défini, Claude Code choisit une fenêtre calibrée pour le modèle. /autocompact 500k l'écrit dans les réglages utilisateur ; --autocompact remplace la valeur pour une session ; CLAUDE_CODE_AUTO_COMPACT_WINDOW remplace les deux. CLAUDE_AUTOCOMPACT_PCT_OVERRIDE (1–100) ne peut qu'abaisser le point de déclenchement. Après compaction, les skills invoqués sont rattachés à hauteur de 5 000 tokens chacun au maximum dans un total de 25 000 tokens, du plus récent au plus ancien, donc les skills plus anciens peuvent être entièrement abandonnés. Si un skill doit survivre, réinvoquez-le après /compact.
- Les tokens de réflexion sont facturés en sortie. maxEffortLevel (v2.1.267+) plafonne l'effort que toute session peut utiliser : low, medium, high, xhigh ou max (max = aucun plafond). Il s'applique avant chaque requête sur chaque fournisseur, le plafond le plus bas parmi les portées l'emporte, et un plafond sous xhigh désactive ultracode. Les plafonds par modèle vont dans modelSettings. Déployez-le via les réglages managés pour l'imposer à toute une organisation.
Un bloc de réglages prêt à coller
Plafonds de contexte propres au projet (.claude/settings.local.json)
{
"bashOutputMaxChars": 12000,
"taskOutputMaxChars": 12000,
"skillOverrides": {
"legacy-migration-notes": "name-only",
"deploy-prod": "user-invocable-only",
"old-design-system": "off"
},
"autoCompactWindow": 500000,
"maxEffortLevel": "high"
}Lisez-le de haut en bas comme des décisions, pas comme des valeurs par défaut. Les deux plafonds de sortie supposent un lanceur de tests bavard ; remontez-les vers les valeurs par défaut de 30 000 / 32 000 si Claude commence à ouvrir le fichier de sortie enregistré à chaque exécution. Les trois surcharges gardent les skills accessibles sans payer leurs descriptions. La fenêtre de compaction est un choix explicite pour un modèle à contexte de 1 M où vous préférez compacter à la moitié plutôt qu'au point calibré pour le modèle. Le plafond d'effort est la seule ligne ici qui change la qualité de la sortie, donc réglez-la en dernier et seulement après que /usage montre que les tokens de réflexion dominent.
Sous-agent qui ne charge pas CLAUDE.md (.claude/agents/repo-auditor.md)
--- name: repo-auditor description: Audits a repository for dead code and unused exports. Use for read-only sweeps. tools: Read, Grep, Glob, Bash model: sonnet omitClaudeMd: true --- You are a read-only auditor. Everything you need is in the delegation prompt. Report findings as a table of path, symbol, and evidence. Do not edit files.
Lancer le rapport sur les skills dans une session headless
claude -p "/skill-doctor"
Erreurs courantes
- Supprimer des skills au lieu de les replier. name-only garde un skill invocable pour un coût de liste quasi nul ; off le retire aussi du menu /. La plupart des skills « inutilisés » devraient devenir name-only, pas disparaître.
- Pousser bashOutputMaxChars jusqu'au plafond de 128 000 parce qu'un seul journal de build a débordé. Cela rend chaque commande future jusqu'à 4× plus coûteuse en ligne. Filtrez plutôt le journal avec un hook PreToolUse (grep sur FAIL, head -100) ; la documentation sur les coûts montre le hook exact.
- Régler autoCompactWindow au-dessus du contexte du modèle. Claude Code le plafonne silencieusement à la fenêtre, donc le réglage semble appliqué et ne fait rien.
- Supposer qu'un sous-agent est bon marché parce que son contexte est séparé. Son démarrage inclut toujours chaque niveau de CLAUDE.md et un instantané git, sauf s'il s'agit d'Explore, de Plan, ou s'il définit omitClaudeMd.
- Lire /skill-doctor via Remote Control depuis un téléphone. Il renvoie « Skill usage reports are not available on this connection. » Lancez-le dans le terminal où vit la session.
- S'attendre à ce qu'un skill invoqué survive à /compact. Seules les invocations les plus récentes entrent dans le budget de rattachement de 25 000 tokens, à 5 000 tokens chacune. Réinvoquez ceux dont vous avez encore besoin.
Vérification rapide
Check yourself
0/6- Mesurez d'abord : /context pour la répartition en direct, /usage pour l'attribution par skill, sous-agent, plugin et serveur MCP, /doctor pour l'estimation de la liste.
- La liste des skills est une taxe à chaque tour, plafonnée à 1 % de la fenêtre. /skill-doctor vous dit quoi replier ; name-only garde un skill utilisable pour un coût quasi nul.
- La sortie des outils est le moyen le plus rapide de faire exploser une fenêtre : ~30 000 caractères en ligne par commande réussie, 32 000 par tâche d'arrière-plan. Plafonnez avec bashOutputMaxChars / taskOutputMaxChars, ou filtrez avec un hook.
- Les sous-agents ne sont pas gratuits au démarrage : chaque niveau de CLAUDE.md plus git status, sauf Explore, Plan ou omitClaudeMd. Gardez les descriptions personnalisées sous 15 000 tokens combinés.
- La compaction ne garde que les skills invoqués les plus récents (5 000 chacun, 25 000 au total). Réglez autoCompactWindow délibérément, et réinvoquez ce qui doit survivre.
- Quand les tokens de réflexion dominent la facture, maxEffortLevel plafonne l'effort à l'échelle de la flotte ; la portée la plus basse l'emporte et cela tient sur chaque fournisseur.
Sources et lectures complémentaires
- Documentation Claude Code — Référence des réglages —
autoCompactWindow,bashOutputMaxChars,taskOutputMaxChars,maxEffortLevel,skillListingBudgetFraction,skillOverrides,disableBundledSkills - Documentation Claude Code — Étendre Claude avec les skills —
/skill-doctor, le budget de la liste, le plafond des descriptions, le budget de rattachement à la compaction - Documentation Claude Code — Référence des outils : limites de sortie — plafonds en ligne pour les commandes valides et en échec
- Documentation Claude Code — Sous-agents — ce qui se charge au démarrage,
omitClaudeMd, l'avertissement à 15 000 tokens de descriptions - Documentation Claude Code — Gérer les coûts — l'attribution par
/usage, la recommandation des 200 lignes pour CLAUDE.md, le hook de filtrage de la sortie de tests - Documentation Claude Code — Explorer la fenêtre de contexte — la simulation interactive que le diagramme de cette page résume
- À lire aussi sur AILmanac : Coût en tokens de MCP — la moitié spécifique à MCP du même audit
- À lire aussi sur AILmanac : Limites de la flotte de sous-agents — le versant concurrence et budget des sous-agents
Et ensuite
- Gestion du contexte —
/clearcontre/compactsur le moment, une fois l'audit terminé - Skills — écrire des skills qui méritent leur ligne dans la liste
- Sous-agents — concevoir le prompt de délégation pour que
omitClaudeMdsoit sans risque