Accueil
Europe/Paris
BlogApril 1, 2026 · 7 min de lecture

Ce que la fuite de Claude Code révèle sur l'architecture des agents IA

Octave Olivetti
Ce que la fuite de Claude Code révèle sur l'architecture des agents IA
Stack technique
Claude CodeTypeScriptAgent ArchitectureLLMPrompt Caching
Le 31 mars 2026, l'intégralité du code source de Claude Code s'est retrouvée sur internet. La cause: un fichier .map inclus par erreur dans le package npm. En JavaScript, le code est "public" mais peut être livré en production compressé en un bloc illisible. Les source maps servent dans ce cas-là au debug. Elles font le lien entre la version compressée et celle originale, ligne par ligne. Le hic, c'est que cette source map embarque tout le code source original. Chaque fichier, chaque commentaire, chaque constante interne. Elle n'est généralement pas destinée à être publiée.
Json
{
  "version": 3,
  "sources": ["../src/main.tsx", "../src/tools/BashTool.ts"],
  "sourcesContent": ["// L'intégralité du code source original de chaque fichier"],
  "mappings": "AAAA,SAAS,OAAO..."
}
Anthropic utilise Bun pour assembler Claude Code en un seul fichier distribuable. Bun génère les source maps par défaut, sauf si on les désactive explicitement... et ... quelqu'un a oublié de les désactiver ou de les supprimer. S'en est suivi un petit cadeau où npm a servi 390 000 lignes de TypeScript à quiconque téléchargeait le package. Ainsi, permettant à chacun de regarder sous le capot de ce qui est probablement l'agent IA de code le plus avancé à ce jour et de trouver des petits secrets. Par exemple, ironie difficile à ignorer, Claude Code embarque un sous-système entier appelé "Undercover Mode", conçu pour empêcher l'IA de révéler des informations internes d'Anthropic dans ses commits. On construit un système anti-fuite pour l'IA, et on livre tous les secrets dans un fichier .map. Mais au-delà de l'ironie, il y a de bonnes choses à tirer de ce qui a été mis à nu et en voici quelques-unes.
Claude Code ressemble à un CLI bien lisse. En dessous, c'est une application de lignes de code: moteur de rendu visuel pour le terminal, 40 outils, système d'orchestration multi-agents, moteur mémoire en arrière-plan. Le point de départ est simple. Tout agent IA exécute la même boucle:
Utilisateur → messages[] → API Claude → réponse
Si tool_use → exécuter → ajouter le résultat → boucler
C'est la boucle agent minimale. On envoie un prompt, le modèle répond, et s'il veut utiliser un outil, on l'exécute, on renvoie le résultat, on boucle. 50 lignes de code suffisent. Les 389 950 autres lignes servent à rendre cette boucle fiable en production.
Chaque appel API à Claude inclut un prompt système, l'historique de conversation et les définitions d'outils. Tout ce texte est facturé à chaque appel. La facture monte vite. Claude Code découpe son prompt système en sections statiques (mémorisables entre sessions, facturées une seule fois) et sections dynamiques (contenu propre à l'utilisateur, recalculé à chaque changement). Les sous-agents partagent le même cache. Au lieu que chacun démarre avec son propre prompt complet (et paye sa propre facture de tokens), ils se branchent à partir d'un tronc commun. Tout ce qui précède le moment où les instructions divergent n'est calculé et facturé qu'une seule fois. Sans ça, le multi-agents serait trop cher pour tourner. Quiconque a utilisé Claude Code lors d'une longue session connaît ce moment. La fenêtre de contexte se remplit, le modèle résume l'historique pour faire de la place, et il perd le fil. Imaginez une conversation de 3 heures avec un développeur. Au bout d'un moment, on doit résumer les deux premières heures pour continuer, mais le résumé oublie qu'on avait décidé de ne pas toucher au fichier X. Le code source révèle cinq stratégies pour gérer ça. Par exemple, l'une d'elles garde les décisions explicites ("ne pas modifier ce fichier") intactes même quand le reste de la conversation est résumé. Cinq stratégies, et même avec cela, Anthropic itère encore. Le problème est loin d'être résolu. Cinq niveaux de permissions: policy, flags, local, project, user. Chaque action d'outil est classée en risque bas, moyen ou élevé, et un classifieur ML décide automatiquement d'approuver ou non les actions.
Approche naïve• Tout autoriser ou tout demander• Aucune distinction entre lire un fichier et en supprimer un• L'utilisateur est soit agacé, soit exposé
Approche production• Classification de risque par action d'outil• Règles en cascade de la politique d'organisation jusqu'aux préférences utilisateur• Fichiers protégés (.gitconfig, .bashrc) gardés par défaut
Le code couvre aussi les attaques. Un prompt malveillant peut demander d'accéder à ../../etc/passwd pour remonter l'arborescence et sortir du répertoire projet. Un autre peut encoder un chemin de fichier en Unicode pour contourner une règle de protection. Chaque vecteur a sa contre-mesure.
Le code est bien en avance sur la version publique. La plupart de ce qui suit est masqué derrière des feature flags internes. autoDream est le moteur mémoire de Claude Code. Il tourne en arrière-plan comme un sous-agent dédié. C'est Claude qui rêve. Il se déclenche quand trois conditions sont réunies: 24 heures depuis le dernier rêve, au moins 5 sessions écoulées, et aucun autre rêve en cours. Quatre phases:
  1. Orientation: scanner le répertoire mémoire, lire les fichiers thématiques existants
  2. Collecte: identifier les nouvelles informations qui méritent d'être conservées
  3. Consolidation: écrire ou mettre à jour les fichiers mémoire, convertir les dates relatives en absolues, supprimer les faits contredits
  4. Élagage: maintenir l'index mémoire sous 200 lignes et 25 Ko
Le sous-agent de rêve n'a qu'un accès en lecture. Il peut regarder votre projet mais ne peut rien modifier. Si vous avez lu mon précédent article sur le context engineering, le parallèle est direct. Le système de rêve applique le context engineering à l'agent lui-même: au lieu de construire un pipeline par connaissance, il maintient une couche de contexte vivante, interrogeable d'une session à l'autre. KAIROS est un mode always-on. Claude n'attend plus qu'on tape: il observe, enregistre, et agit de lui-même. À intervalles réguliers, il reçoit des prompts <tick> et décide d'agir ou de rester silencieux. Garde-fou: toute action proactive qui bloquerait le flux de travail plus de 15 secondes est reportée. Il dispose d'outils exclusifs comme les notifications push et l'abonnement aux pull requests. En clair, on passe de "demander puis répondre" à "observer puis agir." Le mode Coordinateur transforme Claude Code en chef d'orchestre. Il crée, dirige et gère plusieurs workers en parallèle, chacun avec son propre accès aux outils et ses instructions. Le prompt est explicite: "Les workers sont asynchrones. Lancez les workers indépendants en parallèle autant que possible." Les workers communiquent via des messages XML et partagent un espace de travail commun.
Ce qui me frappe au final, c'est moins les fonctionnalités cachées que la quantité de code qui n'a rien à voir avec l'IA elle-même. Cache, mémoire, permissions, orchestration: ce sont des problèmes d'infrastructure classiques, résolus avec des patterns d'ingénierie classiques. Le LLM est au centre, mais l'essentiel du travail se passe autour. Et ces couches ne sont pas spécifiques aux agents de code. Tout système où un LLM doit agir seul et interagir avec le monde réel de façon sûre finira par les construire. Un dernier détail. Le code confirme que les employés d'Anthropic utilisent Claude Code pour contribuer à des projets open source. L'Undercover Mode indique à l'IA: "Ne grille pas ta couverture. Tes messages de commit et descriptions de PR NE DOIVENT contenir AUCUNE information interne à Anthropic." Il supprime toute attribution IA et rédige les commits "comme le ferait un développeur humain." Combien de projets open source sont déjà façonnés en silence par ces systèmes ? Cette fois, on le sait uniquement parce que quelqu'un a oublié un fichier. Ces agents entrent dans les workflows des entreprises. Le code qu'ils produisent, les décisions qu'ils prennent, la façon dont ils interagissent avec les systèmes existants, tout cela appelle des pratiques de gouvernance qui n'existent pas encore. Savoir construire avec ces outils ne suffira pas. Il faudra aussi savoir les encadrer.
Partager cet article :
Sur cette page