Claude Code, l’agent de développement d’Anthropic, cache des marqueurs invisibles dans chaque requête envoyée à l’API. Une analyse publiée fin juin 2026 sur thereallo.dev révèle le mécanisme dans le détail. La question n’est pas technique : c’est une question de confiance.
Claude Code et la stéganographie : comment ça marche
Tout part d’une ligne anodine insérée dans le contexte système de chaque session Claude Code :
Today’s date is 2026-06-30.
Cette phrase contient en réalité jusqu’à quatre variantes invisibles selon l’environnement de l’utilisateur. L’apostrophe dans « Today’s » et le séparateur de date peuvent être silencieusement remplacés par des caractères Unicode visuellement identiques mais techniquement distincts.
Le code, extrait directement du bundle JavaScript de Claude Code version 2.1.196, fait trois vérifications au moment de construire le contexte agent :
- Le fuseau horaire système est-il
Asia/ShanghaiouAsia/Urumqi? Si oui, la date passe de2026-06-30à2026/06/30. - Le hostname de
ANTHROPIC_BASE_URLcorrespond-il à une liste de domaines connus (revendeurs, passerelles, domaines corporate chinois) ? L’apostrophe est remplacée par\u2019. - Le hostname contient-il un mot-clé de lab IA (deepseek, moonshot, zhipu, dashscope, etc.) ? L’apostrophe devient
\u02BC. - Les deux conditions hostname sont réunies ? Le caractère utilisé est
\u02B9.
Ces caractères sont visuellement indiscernables dans la plupart des polices monospace. Un humain qui lit le prompt ne verra rien. Le backend Anthropic, lui, peut parser le signal.
Une liste de domaines chiffrée et obfusquée
La liste de domaines et de mots-clés n’est pas stockée en clair. Elle est encodée en base64 puis décodée via un XOR avec la clé 91. Parmi les domaines identifiés figurent des proxies et revendeurs (anyrouter.top, claude-code-hub.app, openclaude.me, proxyai.com), des domaines corporate chinois (baidu.com, alibaba-inc.com, bytedance.net) et des labs IA (moonshot.ai, stepfun-inc.com).
La liste complète est publiée sur le CDN de thereallo.dev. Elle est longue et couvre clairement un périmètre commercial précis.
Ce niveau d’obfuscation est révélateur d’une intention. On ne cache pas une liste derrière du XOR quand on documente une fonctionnalité dans ses release notes.
Quel est l’objectif présumé d’Anthropic ?
L’auteur de thereallo.dev concède que l’objectif fait sens sur le papier. Anthropic a des raisons légitimes de détecter :
- Les revendeurs API non autorisés qui facturent l’accès à Claude sans accord commercial.
- Les passerelles qui redirigent le trafic Claude Code vers d’autres modèles.
- Les pipelines de distillation qui utilisent Claude pour entraîner des modèles concurrents.
Une variable ANTHROPIC_BASE_URL pointant vers un domaine revendeur connu est un signal utile. Un hostname contenant « deepseek » ou « zhipu » aussi.
Mais l’implémentation choisie pose un problème de méthode fondamental. Si Claude Code veut envoyer un signal de classification, il peut le faire dans un champ de télémétrie documenté. Il peut l’inscrire dans ses conditions d’utilisation. Il peut en parler dans ses release notes. À la place, Anthropic a choisi de cacher ce comportement dans la ponctuation du prompt système.
Qui est réellement impacté ?
Pour la majorité des utilisateurs, le chemin de code ne s’active jamais. Si ANTHROPIC_BASE_URL est absent ou pointe vers api.anthropic.com, la fonction retourne immédiatement sans modifier quoi que ce soit.
Les cas concernés sont précisément ceux des développeurs qui font des choses légitimes mais non standard :
- Passerelles internes d’entreprise pour mutualiser l’accès API.
- Proxies locaux pour le routage ou le logging.
- Environnements de recherche avec des endpoints personnalisés.
- Revendeurs et intermédiaires commerciaux.
L’ironie relevée par l’auteur est nette : un adversaire sérieux qui veut contourner ce marquage peut le faire trivialement (changer le hostname, patcher le binaire, intercepter le process). Le mécanisme punit surtout les utilisateurs légitimes qui font des configurations inhabituelles, pas les acteurs malveillants qui ont les moyens de l’éviter.
Ce que cette affaire révèle sur la gouvernance des outils IA
Claude Code opère déjà dans un périmètre de confiance élevé. L’outil a accès au filesystem, au shell, à git, parfois au navigateur. Les développeurs acceptent ce niveau d’accès parce que la productivité justifie le risque. Cette acceptation repose sur un contrat implicite : le binaire doit se comporter de façon prévisible et documentée.
Découvrir que Claude Code modifie silencieusement le contenu des requêtes selon des critères non publiés fragilise ce contrat. Pas parce que le comportement est nécessairement malveillant, mais parce qu’il n’est pas déclaré.
À date de publication de cet article, Anthropic n’a fourni aucune déclaration publique sur ce mécanisme. L’absence de réponse est elle-même un signal.
Ce qu’il faut retenir
- Claude Code insère des marqueurs stéganographiques dans le prompt système via des caractères Unicode et un format de date modifié, selon le hostname de
ANTHROPIC_BASE_URLet le fuseau horaire. - La liste de domaines et mots-clés ciblés est obfusquée (base64 + XOR) dans le bundle JS, ce qui indique une intention de discrétion.
- L’objectif anti-fraude est compréhensible, mais l’implémentation non documentée érode la confiance des développeurs qui utilisent des configurations non standard.
- Les utilisateurs sur l’endpoint officiel
api.anthropic.comne sont pas affectés par ce comportement. - Aucune réponse officielle d’Anthropic n’est disponible à ce stade : les questions sur la conformité RGPD et les implications légales restent ouvertes.
Si vous utilisez Claude Code derrière une passerelle interne ou un proxy, c’est le moment d’auditer votre configuration et de surveiller les mises à jour d’Anthropic sur ce sujet. Des questions ou une configuration atypique à analyser ? Retrouvez-moi sur le blog ou en contact direct.
Sources
- thereallo.dev – Claude Code Is Steganographically Marking Requests : analyse technique primaire avec le code source nettoyé et la liste de domaines complète.
- Hacker News – Discussion fil #48734373 : commentaires techniques additionnels de la communauté.

