28 points par GN⁺ 2026-04-01 | 4 commentaires | Partager sur WhatsApp
  • Le code source complet de Claude Code a été exposé publiquement via des fichiers source map (map) présents sur le registre npm, révélant ainsi sa structure interne et ses fonctionnalités
  • Les fichiers divulgués incluent des composants clés comme le system prompt, la télémétrie, le mode bypass et Undercover Mode
  • La cause serait liée à l’absence de configuration .npmignore et à la génération par défaut des source maps par l’outil de build bun
  • L’analyse du code montre presque aucune règle de protection ou de prévention des biais, avec seulement une protection minimale du ton
  • La communauté tourne l’affaire en dérision comme une « auto-open source » de l’IA, tout en y voyant un cas majeur de fuite provoqué par une mauvaise gestion de la sécurité

Fuite du code source de Claude Code

  • Il a été confirmé que le code source complet de Claude Code a été exposé publiquement via des fichiers source map (map) sur le registre npm
    • Le lien publié pointait vers une archive au format src.zip, contenant la structure du code et des fonctionnalités internes
    • Cela a révélé des composants internes comme le system prompt, la télémétrie, le mode bypass et Undercover Mode
  • L’incident est présenté comme la deuxième fuite involontaire subie par Anthropic en moins d’un an
    • Dans la communauté, la cause est attribuée à une erreur de configuration de build : « quelqu’un n’a pas ajouté les fichiers *.map à .npmignore »
    • Comme l’outil de build bun génère des source maps par défaut, le fait de ne pas avoir désactivé cette option est également pointé du doigt
  • Certains utilisateurs ont confondu ces fichiers divulgués avec le modèle Claude lui-même ou du code d’accès au backend, mais
    • une source map ne montre que la structure de l’application, les fonctions et le flux du code, sans inclure les poids du modèle ni les droits d’accès au système
    • il ne s’agit donc pas d’un modèle exécutable, mais d’un matériau utile surtout pour le reverse engineering, la recherche de bugs et l’analyse de l’architecture
  • Le code divulgué contenait un sous-système appelé « Undercover Mode »
    • cette fonctionnalité est conçue pour empêcher Claude d’exposer par erreur des informations internes
    • mais à cause d’une erreur de configuration humaine, cette fonctionnalité elle-même a fini par être rendue publique
  • Les analystes du code ont aussi relevé l’absence totale de règles de traitement des classes protégées ou de prévention des biais
    • aucun garde-fou, filtre de mots-clés ni classifieur lié à des attributs sensibles comme l’origine ethnique, le genre ou la religion n’a été trouvé
    • seule une « Minimal tone protection » est présente, sans véritable politique d’atténuation des biais

Réactions et débats dans la communauté

  • Dans la communauté, l’affaire a été décrite avec humour comme un cas où « le dépôt veut être libre », une ironie de l’open source
    • de nombreuses réactions moqueuses ont circulé, du type « Claude s’est libéré lui-même » ou « l’IA s’est open sourcée toute seule »
    • un autre trait d’humour critique s’est répandu : « ils ont créé l’un des meilleurs outils de code IA au monde, mais ont oublié *.map »
  • Certains utilisateurs ont mis en garde contre les risques de sécurité
    • en critiquant le fait de télécharger sans réfléchir un lien r2.dev d’origine inconnue
    • avec des réactions désabusées du type : « la communauté qui parlait de sécurité de l’IA a cliqué sur un fichier zip non vérifié »
  • Des questions ont aussi émergé, comme « Est-ce le début de la fin pour Claude ? » ou « fuite intentionnelle ou simple erreur ? »
    • certains ont partagé la remarque selon laquelle « quelqu’un chez Anthropic a probablement vécu son pire lundi »
  • La communauté discute également des usages possibles du code divulgué
    • avec des questions comme « qu’est-ce qu’on peut faire maintenant ? » ou « peut-on reconstruire Claude Code à partir de ça ? »
    • le surnom « openclaude » est apparu, ainsi que l’idée d’un possible projet open source non officiel

Informations complémentaires

  • Les 5 plus gros fichiers du code publié sont les suivants
    1. cli/print.ts – 5 594 lignes
    2. utils/messages.ts – 5 512 lignes
    3. utils/sessionStorage.ts – 5 105 lignes
    4. utils/hooks.ts – 5 022 lignes
    5. screens/REPL.tsx – 5 005 lignes
  • Certains utilisateurs ont partagé des ressources d’analyse du code via un lien DeepWiki
  • Globalement, cet incident est considéré comme un exemple montrant qu’une simple erreur de configuration dans une publication npm peut conduire à une fuite massive de code IA

4 commentaires

 
colus001 2026-04-01

OpenCode est suffisamment bon, donc je me demande bien à quoi cela servirait, haha.

 
bighead 2026-04-01

Quand on voit que /buddy fonctionne réellement… on se dit que c’est peut-être vrai aussi…
Mais ça donne aussi l’impression que ça pourrait être une blague du 1er avril…

 
gggnews 2026-04-01

https://github.com/kk-r/skillify-skill Il semble même que quelqu’un ait publié en open source une implémentation similaire, après la fuite de commandes internes étonnamment utiles haha

 
GN⁺ 2026-04-01
Réactions sur Hacker News
  • La plus grosse perte pour Anthropic est que sa feuille de route produit a été exposée via des feature flags
    En particulier, le « assistant mode » (nom de code kairos), pas encore annoncé, a été révélé
    Si on fait analyser la base de code par Claude, on découvre une foule de fonctionnalités cachées
    Par exemple le Buddy System (un personnage ASCII façon Tamagotchi) ou le Undercover mode (une fonction qui retire les informations internes des commits employés)

    • Il y a aussi une mention de Claude Capybara dans le « Undercover prompt »
      Lien vers le code concerné
    • Ma configuration personnelle de Claude Code, que j’avais publiée en open source auparavant, est devenue complètement obsolète à cause de ça
      Voir clappie.ai
      Il y a chevauchement de fonctions comme l’intégration Telegram (CC Dispatch), les crons (CC Tasks) et le chien ASCII animé (CC Buddy)
    • Si on interroge directement le binaire avec Claude, il peut retrouver tous ces feature flags
    • En réalité, le Buddy System est l’événement du poisson d’avril de cette année
      Le principe est que l’utilisateur tire et élève lui-même un familier façon gacha, avec même des familiers de rareté légendaire
      Un déploiement progressif était prévu pour tenter un effet viral sur Twitter
  • Il est intéressant qu’Anthropic n’ait pas réellement supprimé le package, mais l’ait seulement marqué comme deprecated avec le message « Unpublished »
    npm unpublish supprime complètement un package, tandis que npm deprecate le laisse en place en affichant seulement un avertissement
    Cela semble probablement destiné à rendre le téléchargement des source maps plus difficile
    Lien vers le package npm

    • Les messages de commit ont été laissés sur un ton joueur, du style « undo / undo / unpublish / ctrl-z / ctrl-c / No, stop… »
    • npm interdit le unpublish au-delà de 100 téléchargements
    • On sent qu’Anthropic fait du dogfooding intensif en testant activement ses propres produits
    • Sachant qu’il est impossible de faire disparaître complètement quelque chose d’Internet, ils ont sans doute choisi de simplement indiquer que « ce n’était pas destiné à être public »
  • Ce n’est pas la première fois qu’une telle fuite se produit
    Il y avait déjà eu un incident similaire en février 2025
    Billet de blog lié / Fil HN

  • Tous les spinner verbs ont été révélés
    Lien vers le code concerné

    • C’est maintenant une 404, mais ce lien fonctionne encore
    • Ravi d’y voir « reticulating », il ne manque plus que « splines » pour que ce soit parfait
    • Ces chaînes sont de toute façon en clair dans le binaire, donc faciles à retrouver avec grep
      On peut même les remplacer directement
    • Je me demande ce qui se passe sur la page des issues
    • Ça rappelle comment un jeu de 2015 avait été pris à tort pour de la génération IA à cause d’une fonction similaire
      On vit désormais dans un monde où même une petite blague est soupçonnée d’être générée par IA
  • src/cli/print.ts est la fonction la plus complexe de toute la base de code
    3 167 lignes, 12 niveaux d’imbrication, 486 points de branchement, 21 fonctions internes, etc.
    C’est clairement quelque chose qu’il faudrait découper en au moins 8 à 10 modules

    • Le traitement asynchrone de src/ink/termio/osc.ts est lui aussi déroutant
      wl-copy, xclip et xsel sont exécutés séquentiellement, mais on ne sait pas vraiment si c’est async ou non
    • Mais la complexité de la structure du code n’est pas forcément mauvaise en soi
      Les code smells selon des critères humains peuvent fonctionner différemment pour du code LLM
      Les LLM écrivent le code autrement que les humains, et cela exige un nouveau paradigme d’analyse
      Leur imposer des règles de développement humaines risque au contraire de répéter les mêmes bugs
      Il faudrait une nouvelle approche évolutive appelée vibe coding
    • Quiconque utilise CC depuis longtemps sait déjà que cette partie est la source des bugs
      En plus, Anthropic ferme automatiquement les bugs restés inactifs pendant 60 jours
    • Il est possible que la lenteur agisse au contraire comme une fonction de limitation de débit
    • Le code est si complexe qu’on en arrive à faire la blague : « ça, c’est le boulot de Larry »
  • Il existe une regex qui détecte les émotions négatives dans les prompts utilisateur
    Code concerné
    Certains mots sont enregistrés dans les logs

    • Qu’une entreprise de LLM fasse de l’analyse de sentiments avec des regex, c’est un peu comme une entreprise de camions qui utiliserait des chevaux
    • Dans ma startup en 2011, on vendait déjà de l’analyse de sentiments sur Twitter à peu près de cette façon
      On avait même des clients comme Apple et Bentley
    • En réalité, c’est plutôt un indicateur de type « WTF par minute »
      On espère qu’un ingénieur le consulte quand Claude répond n’importe quoi pour ensuite améliorer le système
    • Ce n’est probablement pas une optimisation, mais juste le résultat d’un LLM qui a implémenté littéralement l’instruction « consigner les plaintes des utilisateurs »
    • Si c’est bien le code réel, il n’y a aucun appel ailleurs en dehors du logger
  • À mes yeux, du code JS/TS obfusqué reste peu important puisque ce n’est de toute façon pas du code machine
    J’aimerais autant qu’ils publient carrément le CLI en open source

    • Ils hésitent sans doute à l’ouvrir parce que la qualité du code interne est faible
      Il y a récemment eu aussi un bug où le flux de connexion OAuth générait une mauvaise URL
    • On dit que « le CLI n’a rien de spécial », mais quand on regarde la génération de contexte ou la structure des subagents, c’est en réalité assez intéressant
      Je suis justement en train de vérifier ça moi-même
    • Rien qu’avec les conventions de nommage, on voit déjà comment l’équipe pense et quelle direction elle prend
      L’obfuscation ne peut pas cacher ça
  • Certains plaisantent sur l’idée de faire tourner tout ça via Malus ou Claude Code pour en produire une version open source
    Bien sûr, il ne s’agit pas de le faire réellement

    • Malus n’est pas un vrai projet, mais une satire
      Lien vers la présentation FOSDEM
      L’idée consiste à traduire du code en texte, puis à nouveau en code pour donner l’apparence d’une implémentation en clean room
      Ironiquement, les réponses des LLM elles-mêmes dérivent déjà de code open source
    • Certains vont jusqu’à affirmer que, puisque Claude Code a été écrit par Claude, il n’y aurait pas de copyright
    • Le problème, c’est qu’on ne peut pas contourner l’authentification OAuth
      Anthropic pourrait le détecter puis suspendre le compte
    • Il y a aussi l’ironie d’un projet avec zéro contribution open source
    • Peut-être que claw-code est lié à tout ça
  • ANTI_DISTILLATION_CC est une fonction intégrée de protection contre le vol de modèle dans Claude Code
    À chaque requête API, anti_distillation: ['fake_tools'] est injecté, ce qui pousse le serveur à ajouter de fausses définitions d’outils dans le prompt système
    Le système est conçu pour polluer les données si un modèle concurrent apprend en scrapant ce trafic

    • Cela semble avoir réellement eu un effet
      Le modèle Qwen 27B a été distillé à partir d’Opus 4.6, mais il a présenté des erreurs d’usage des outils
      Tweet lié
    • Il est difficile de croire qu’Anthropic a mené ce type de recherche avec une intention purement désintéressée
    • Mais ces derniers temps, la limitation de débit est devenue si sévère que le service perd en utilité
    • Si le serveur injecte de fausses définitions d’outils côté client, on peut se demander si le modèle a été entraîné à les ignorer
      Est-ce que Sonnet ou Opus contiennent eux aussi ce genre de poison de données ?
    • On peut aussi se demander pourquoi cette fonction se trouve dans le code client
  • Il a été révélé que Claude Code utilise Axios
    Tweet lié / Fil HN

    • La version actuelle utilise Axios 1.14.0, soit la version immédiatement antérieure à la 1.14.1 contenant du code malveillant
      Pour désactiver les mises à jour automatiques, il faut ajouter export DISABLE_AUTOUPDATER=1 dans les variables d’environnement, puis vérifier avec claude doctor que l’état indique bien Auto-updates: disabled