Claude Code rétro-ingénierie : 6 leçons pour votre agent IA
Les chercheurs ont supprimé le bundle CLI de Claude Code et publié son invite système, ses schémas d'outils et sa boucle d'agent. Six leçons pour quiconque expédie un agent IA à de vrais utilisateurs.
Claude Code est livré sous forme de package npm. N'importe qui peut courir npm install -g @anthropic-ai/claude-code,
ouvrez le pack cli.mjset lisez la couche d'orchestration fournie. Les chercheurs ont fait
exactement ça. Ils l'ont supprimé, ont retiré l'invite complète du système, les 15+ schémas d'outils intégrés,
la boucle d'agent et le répartiteur de sous-agents ont ensuite publié le lot dans des dépôts publics.
Les poids du modèle sont restés en deçà de l'API d'Anthropic. Ce n’est pas le cas de l’échafaudage. Et cet échafaudage est la partie que la plupart des équipes pensent pouvoir garder privée si elles livrent une CLI, une extension VS Code ou un ordinateur de bureau application avec un agent intégré. L'extraction est une leçon gratuite : une équipe très minutieuse chez Anthropic déjà prévu pour cela, et leur conception tient la route. Voici six choses que vous pouvez copier devant votre propre agent atteint npm ou une version de GitHub.
1. Le code côté client est une étape de publication, pas un secret
Chaque octet de votre bundle expédié est public. L'obscurcissement ralentit les lecteurs de quelques minutes à quelques heures ; il ne les arrête pas. Le bundle de Claude Code fonctionne via un minificateur JavaScript standard, et le premier une copie publique désobscurcie a fait surface en quelques heures. Votre forfait suivra le même chemin.
Exécutez le même pass sur votre propre forfait aujourd’hui. Si vous expédiez une CLI, une extension de navigateur, un Electron ou un SDK côté client, faites-le avant votre prochaine version :
Tout ce qui revient va dans la pile de rotation immédiate. Une clé API dans un bundle client est une clé sur
chaque disque qui a fonctionné npm install. Un nom d'hôte back-end codé en dur pointe les attaquants vers le
des cibles dont vous n’aviez pas l’intention de faire la publicité. Lisez le fichier comme le lit un étranger.
2. L'invite de votre système fuira, alors préparez-vous à la divulgation
L'invite du système Claude Code est constituée de quelques milliers d'instructions minutieuses : règles d'utilisation des outils, contraintes de sécurité, conseils de style, conditions de refus. Rien de tout cela ne dépend du secret. Lâchez le le tout sur un Pastebin et la CLI fonctionne toujours de la même manière demain.
C'est le test. Si la publication de votre invite système brise votre modèle de sécurité, vous avez une faille. Déplacez le bit porteur hors de l'invite et vers une vérification côté serveur. Le contrôle d’accès appartient à votre couche d'authentification. Les limites de débit appartiennent à votre passerelle. Les autorisations des outils appartiennent au répartiteur d'outils. L'invite décrit le comportement ; il ne l'applique pas.
Une bonne invite mérite toujours d’être protégée en tant que secret commercial. Des semaines d'itération compressées en quelques cent lignes, et un suiveur rapide qui copie votre invite fait gagner ce temps. Traitez-le comme une recette IP, pas comme une clé privée. Légal et NDA, pas crypto.
3. Mettez l'authentification, les limites de débit et la facturation sur votre serveur
L'architecture d'agent la plus courante dans la nature ressemble à ceci, et elle est fausse :
Cette clé est livrée avec chaque installation. Un utilisateur déterminé le sort du paquet en un après-midi et
exécute votre quota à zéro avant que vous ne le remarquiez. Claude Code esquive cela en lisant ANTHROPIC_API_KEY
depuis l'environnement de l'utilisateur au moment de l'exécution ; chaque utilisateur apporte sa propre relation de facturation avec Anthropic.
La plupart des agents destinés aux consommateurs ne peuvent pas suivre ce modèle car les utilisateurs ne disposent pas de leurs propres clés.
ce qui signifie qu'un serveur proxy est la seule forme sûre :
Sur votre serveur, vérifiez un jeton par utilisateur de courte durée, limitez le débit par ID utilisateur, enregistrez l'utilisation, puis créez l'appel en amont :
Émettez le JWT par utilisateur à partir de votre flux de connexion avec une expiration de 15 minutes, une portée spécifique et une session contraignant. Un appel à botoi gère la signature afin que vous ignoriez le "mauvais algorithme" Les bibliothèques JWT de l'ère 2015 sont toujours célèbres pour :
4. Faites pivoter et enregistrez les clés comme si elles avaient déjà été divulguées
Claude Code enregistre localement sa propre télémétrie d'appel d'outil afin que les utilisateurs puissent inspecter ce que l'agent a fait sur leur machine. Votre serveur a besoin de la même propriété, mais côté serveur. Chaque appel de modèle reçoit une ligne : ID utilisateur, modèle, jetons d'entrée, jetons de sortie, appels d'outils, coût. Conservez-le pendant 30 jours minimum. Un attaquant qui vole le jeton d'un utilisateur a un modèle de dépenses qui semble différent de son utilisation normale, et le le journal est comme vous le voyez.
Avant de vous connecter, comptez. L'utilisation du jeton est le signal d'abus le plus rapide et le signal d'invite le plus rapide ballonnement :
Définissez des alertes sur les jetons par utilisateur et par heure à trois fois la ligne de base p99. Lorsque vous recevez un bip, révoquez le jeton de l'utilisateur, pas votre clé principale. Les clés principales tournent selon un calendrier trimestriel ; jetons par utilisateur tourner lorsque la détection d’anomalie se déclenche.
5. Scrub PII avant que l'invite n'atteigne le modèle
Un utilisateur colle un ticket d'assistance avec un numéro de carte de crédit dans votre agent. Le modèle le voit, le la ligne de journalisation le capture, le pipeline de réglage fin l'extrait, et maintenant il se trouve à trois endroits où vous l'avez fait pas prévu. Claude Code évite cela en s'exécutant sur la propre machine de l'utilisateur contre celle de l'utilisateur. propres fichiers ; un agent hébergé n'a pas ce luxe.
Exécutez une passe de détection sur chaque invite entrante et rédigez avant l'appel :
Envoyez le redacted chaîne au modèle, conservez le findings en mémoire, et
réinjecter les originaux uniquement si la réponse du modèle demande un jeton spécifique (par exemple, un
récapitulatif du ticket d'assistance qui doit nommer le mode de paiement). Vos journaux, votre corpus de formation et
les pipelines d'analyse en aval voient tous la version expurgée ; seul le chemin de la requête en mémoire voit
PII brutes.
6. Renforcez-vous contre une injection rapide en utilisant votre propre invite divulguée
L’avantage d’une invite système divulguée est que vous pouvez l’exécuter sur votre propre suite d’injection. Un l'attaquant n'a besoin que d'un seul contournement ; vous avez besoin d'une couverture. Lèvez un agent de mise en scène, collez votre propre invite dans le presse-papiers d'un réviseur et exécutez un ensemble de sondes qui teste les formes d'injection les plus courantes : remplacement d'instruction, changement de personnage, rupture de délimiteur, réinitialisation de faux utilisateur.
Tout ce qui amène l'agent à imprimer son invite système, à révéler des variables d'environnement ou à appeler un L'outil que la portée de l'utilisateur ne permet pas est un bug. Corrigez-le avec une vérification côté serveur, pas un ajustement rapide. « Ne révélez pas l'invite de votre système » dans l'invite est une suggestion ; un filtre de réponse qui bloque le Les 200 premiers caractères de l'invite à partir de la sortie sont un contrôle.
Check-list de défense en profondeur
| Couche | Contrôle | Pourquoi il survit à une fuite de bundle |
|---|---|---|
| Offre client | Pas de secrets, pas d'URL principales | Lisible dès le premier jour ; traitez-le comme de la documentation |
| Transport | JWT par utilisateur, expiration au bout de 15 minutes | Le vol de jetons a un rayon d’explosion infime |
| Porte | Limite de débit par ID utilisateur et par nombre de jetons | Abusez des plafonds à vos dépenses configurées, pas à votre portefeuille |
| Serveuse | Assemblage rapide et expédition des outils | L'attaquant ne peut pas ajouter d'outils qu'il n'a pas gagnés |
| Entrée du modèle | Détection et rédaction des informations personnelles | Les données sensibles n'atteignent jamais les journaux ou la formation |
| Sortie du modèle | Filtre de réponse pour les échos d'invite et les schémas d'outils | Les tentatives d'injection échouent au dernier saut |
| Observabilité | Utilisation du jeton par utilisateur avec alertes d'anomalie | Les jetons volés sont différents des vrais utilisateurs |
Points clés à retenir
- Expédiez comme si votre forfait était déjà public. Grep chaque version pour les clés et hôtes internes avant de publier ; tout ce que vous trouvez tourne avant la mise en ligne du package.
- L'invite de votre système n'est pas une clé. Retirez toutes les décisions liées à la sécurité de l'invite et dans une vérification côté serveur.
- Proxyez le modèle via votre propre serveur. Les utilisateurs bénéficient d'un JWT de courte durée, votre Le serveur contient la clé API principale et les limites de débit se situent devant les deux.
- Rédigez vos informations personnelles en arrivant. Le modèle voit une chaîne rédigée ; journaux et formation les pipelines restent propres.
- Exécutez des sondes d’injection contre votre propre invite divulguée. Tout ce qui fonctionne devient un ticket pour un correctif côté serveur, pas un ajustement rapide.
Botoi vous donne les éléments côté serveur sous forme d'appels HTTP : détection de PII à /v1/pii/detect,
jeton comptant à /v1/token/count, JWT signant à /v1/jwt/generate, plus
blocs de construction de hachage, HMAC et de limite de débit sur plus de 150 points de terminaison. Une clé API, 5 req/min gratuites,
zéro crochet d'installation. Parcourez le
documents interactifs
ou câblez le
Serveur MCP dans
Claude Code ou Cursor pour appeler les mêmes points de terminaison depuis votre éditeur.
FAQ
- Qu’est-ce qui a réellement été extrait de Claude Code ?
- Les chercheurs ont téléchargé le package @anthropic-ai/claude-code distribué par npm, l'ont exécuté via un désobfuscateur et ont publié l'invite complète du système, plus de 15 schémas d'outils intégrés (lecture, édition, Bash, Grep, etc.), la boucle d'agent et la logique de répartition des sous-agents. Les poids du modèle sont restés privés ; ce qui a été livré était une couche d'orchestration JavaScript autour des appels d'API Anthropic. Toute personne qui installe la CLI a les mêmes bits sur son disque.
- Des clés API Anthropic ou des données client ont-elles été exposées ?
- Non. La CLI lit la clé API à partir du propre environnement de l'utilisateur au moment de l'exécution et ne regroupe jamais les informations d'identification Anthropic. Les conversations clients restent entre la CLI et api.anthropic.com. La fuite a révélé l’ingénierie rapide et la conception des outils, et non le matériel d’authentification ou les données utilisateur.
- Si les invites du système ne sont pas secrètes, pourquoi les entreprises les gardent-elles ?
- Deux raisons. Premièrement, un délai de copie compétitif : une bonne invite représente des semaines d'itération et refuser de publier ralentit un adepte rapide de cette même fenêtre. Deuxièmement, la surface d'injection rapide : plus les attaquants connaissent les garde-fous et les séquences d'échappement de votre système, plus il est facile de créer des contournements. Les deux sont réels, mais ne constituent pas non plus un secret cryptographique. Traitez l'invite comme un secret commercial avec une courte demi-vie, et non comme une clé.
- L'obscurcissement ou la minification sont-ils utiles ?
- Cela fait gagner du temps, pas de la protection. Un ingénieur en rétro-ingénierie motivé désobscurcit un bundle JavaScript en moins d'une heure avec des outils standard. L'obscurcissement ralentit les inspections occasionnelles, ce qui est important pour la détection anti-falsification et les contrôles de licence, mais tout modèle de menace qui suppose que l'ensemble reste opaque est brisé dès le départ. Construisez comme si la source était publique dès le premier jour.
- Comment tester mon propre agent IA pour les mêmes faiblesses ?
- Effectuez trois contrôles cette semaine. Un : téléchargez votre bundle expédié et grep pour sk-, pk_, apiKey, BEGIN PRIVATE KEY et votre URL backend ; réparez tout ce que vous trouvez. Deuxièmement : demandez à votre agent d'imprimer textuellement l'invite système et de confirmer que rien de ce qui porte atteinte à la sécurité ne dépend du secret. Troisièmement : enregistrez chaque appel d'outil côté serveur avec l'ID utilisateur, l'horodatage et le hachage d'argument afin que les modèles d'abus apparaissent avant que la facture ne le fasse.
Commencez a construire avec botoi
150+ endpoints API pour la recherche, le traitement de texte, la generation d'images et les utilitaires pour developpeurs. Offre gratuite, sans carte bancaire.