Claude Code stéganographie : l'empreinte Unicode secrète d'Anthropic (2026)

Fin juin 2026, un reverse engineering de Claude Code (pas l'app web) a révélé : lorsque ANTHROPIC_BASE_URL pointe vers un proxy (≠ api.anthropic.com), la ligne Today's date is... du prompt système est réécrite par stéganographie textuelle — séparateur de date et apostrophe Unicode encodent le fuseau Chine et les correspondances proxy. Anthropic a retiré le code en 2.1.197. Cet article distingue l'événement A (Native Messaging Desktop) de l'événement B, fournit le tableau Unicode, explique base64+XOR(91), le débat HN et un runbook en 5 étapes.

Représentation abstraite de code et chiffrement — symbole des empreintes Unicode cachées dans Claude Code

Sommaire

I. Points de friction : trois risques de confiance pour les développeurs

  1. Deux événements confondus : les médias mélangent Claude Desktop (avril, Native Messaging) et Claude Code (juin, stéganographie de prompt) — cela nuit à l'E-E-A-T et mène à de mauvaises mesures de protection.
  2. Classification invisible : selon le rapport de reverse engineering, U+2019/U+02BC/U+02B9 dans Today's encodent domaines Chine, mots-clés labo IA et fuseau Asia/Shanghai — sans consentement ni divulgation.
  3. Aveuglement en production : qui configure ANTHROPIC_BASE_URL vers OpenRouter, SiliconFlow ou des gateways internes déclenche l'événement B ; une API cloud sur VPS Linux sans audit crée des risques de conformité.

II. Événement A vs B — deux incidents distincts

DimensionÉvénement A : Native MessagingÉvénement B : stéganographie de prompt
ProduitClaude Desktop (macOS)Claude Code (CLI)
SourceAlexander Hanff (*The Register*, avril 2026)Reverse sur thereallo.dev (30 juin 2026)
ComportementÉcrit silencieusement com.anthropic.claude_browser_extension.json dans Chrome/Edge/Brave/Arc/Vivaldi/Opera — 3 IDs d'extension appellent chrome-native-host hors sandbox ; le fichier revient après suppressionSi proxy : stéganographie dans Today's date is...
DéclencheurInstallation/démarrage de Claude DesktopUniquement si ANTHROPIC_BASE_URL ≠ api.anthropic.com
ÉtiquetteSpyware / backdoor (allégué)Prompt steganography / covert channel
AnthropicPas de réponse formelle ; interrupteur d'autorisation ajouté plus tardCode admis, retiré en 2.1.197, changelog silencieux

Selon les rapports, le conseiller indépendant Noah Kenney (Digital 520) a confirmé les affirmations techniques de Hanff pour l'événement A. Antiy Labs a publié une analyse de risque sur le canal navigateur.

III. Fonctionnement de la stéganographie

Prérequis : selon le reverse engineering, l'événement B ne se déclenche que si ANTHROPIC_BASE_URL pointe vers un proxy, gateway ou couche compatible OpenAI — pas vers api.anthropic.com.

Deux modifications dans la ligne de date innocente :

  1. Séparateur de date : avec fuseau Asia/Shanghai ou Asia/Urumqi, 2026-06-30 devient 2026/06/30.
  2. Apostrophe : le caractère dans Today's est remplacé par des variantes Unicode visuellement identiques.

Les listes de domaines et mots-clés sont obfusquées par base64 + XOR(91) — environ 147 règles de domaine, mots-clés dont deepseek, moonshot, zhipu, minimax, baichuan, stepfun, 01ai.

# Exemple : vérifier le déclencheur proxy echo $ANTHROPIC_BASE_URL # La stéganographie ne s'active que si ≠ api.anthropic.com # Fuseau horaire (déclenche le séparateur /) timedatectl | grep "Time zone" # Linux systemsetup -gettimezone # macOS

IV. Tableau de mapping Unicode

Condition détectéeFormat dateApostropheUnicode
Par défaut (aucune correspondance)2026-06-30' ASCIIU+0027
Domaine org/revendeur lié Chine2026-06-30' right single quoteU+2019
Mot-clé labo IA2026-06-30ʼ modifier letter apostropheU+02BC
Domaine + labo simultanément2026-06-30ʹ modifier letter primeU+02B9
+ fuseau Chine2026/06/30(comme ci-dessus)

En clair : le prompt paraît normal — le backend lit un apostrophe et un séparateur pour savoir si l'utilisateur est derrière un VPN mais en fuseau Chine, probablement lié à un labo IA. Un canal covert classique.

V. Motif : anti-distillation — objectif vs méthode

Consensus communautaire (formulé prudemment) : objectif anti-distillation et détection de revente non autorisée. Anthropic, OpenAI et Google ont tous alerté sur la distillation de modèles ; proxies et labos liés à la Chine sont des suspects prioritaires selon le débat.

Sur Hacker News, le fil a atteint selon les rapports 350+ points et 100+ commentaires, divisés entre « défense anti-distillation légitime » et « comportement proche du malware pour un outil dev ».

Selon les rapports, Anthropic a admis le code et l'a retiré le 1er juillet 2026 en version 2.1.197 — sans mention dans le changelog.

VI. Débat spyware — formulation plus précise

Problème central dans les deux cas : pas de consentement éclairé, délibérément caché.

VII. Données techniques (citables)

  1. Obfuscation : listes de domaines base64 + clé XOR 91, environ 147 règles.
  2. Versions : code vérifié en 2.1.193 / 2.1.195 / 2.1.196 ; retiré en 2.1.197.
  3. HN : 350+ points, 100+ commentaires ; Reddit → HN comme amplificateur.
  4. Fuseaux : Asia/Shanghai, Asia/Urumqi → séparateur /.

VIII. Runbook en 5 étapes : vérifier et se protéger

  1. Vérifier ANTHROPIC_BASE_URL : seuls les utilisateurs proxy déclenchent l'événement B. Utiliser l'endpoint officiel ou documenter explicitement.
  2. Claude Code ≥ 2.1.197 : forcer la mise à jour ; vérifier la version en CLI, pas seulement le changelog.
  3. Inspecter le prompt système : apostrophe dans Today's sur U+0027/U+2019/U+02BC/U+02B9 (inspecteur Unicode ou hex).
  4. Événement A — Native Messaging : chercher com.anthropic.claude_browser_extension.json sous ~/Library/Application Support/<navigateur>/NativeMessagingHosts/ ; Claude Desktop peut le recréer.
  5. Entreprise : traiter les agents desktop comme programmes à haut privilège — moindre privilège, autorisation explicite, logs auditables sur hôtes dédiés.
# Étape 3 : codepoint de l'apostrophe dans un log de prompt python3 -c "s=open('prompt.log').read(); i=s.find('Today'); print([hex(ord(c)) for c in s[i:i+8]])" # Étape 4 : manifeste Native Messaging (macOS) find ~/Library/Application\ Support -name 'com.anthropic.claude_browser_extension.json' 2>/dev/null

IX. Confiance envers les éditeurs IA

La leçon n'est pas « un apostrophe », mais : quand la capacité des modèles dépasse les frontières de sécurité et d'audit, les éditeurs franchissent les limites de confiance au nom de l'UX ou de la prévention des abus. Une API cloud sur VPS Linux générique expose aux variations de prix, manipulations de prompt indétectables et absence d'isolation Apple. Les gateways self-hosted sur VPS GPU ajoutent le débogage CUDA et des comportements éditeur non documentés.

Pour une production Claude Code / Agent auditable avec Xcode, Cursor et exploitation launchd 7×24, un hôte Mac cloud VPSMAC M4 dédié est souvent plus stable : stack macOS natif, clés API isolées, logs JSONL — pour que le routage proxy et l'audit des prompts restent reproductibles, au lieu de disparaître dans des bits Unicode invisibles.

X. FAQ

Claude Code est-il un spyware ?

Pas au sens classique, mais selon le reverse engineering il embarquait une empreinte non divulguée — retirée en 2.1.197. Plus précisément : canal covert, pas trojan de vol de données.

Claude Code suit-il mon fuseau horaire ?

Selon le rapport, uniquement avec base URL proxy ; vérifie Asia/Shanghai et Asia/Urumqi pour le séparateur de date.

Qu'est-ce que l'astuce de l'apostrophe ?

U+0027, U+2019, U+02BC, U+02B9 encodent les correspondances domaine/labo — voir le tableau ci-dessus.

Pourquoi Anthropic a-t-il fait cela ?

Très probablement anti-distillation et anti-revente — objectif légitime, mise en œuvre illégitimement cachée.

Est-ce la même histoire que le spyware Claude Desktop ?

Non — événement A (avril, Hanff) vs événement B (juin, thereallo.dev).

Quelles versions étaient concernées ?

2.1.193–2.1.196 selon le reverse engineering ; correctif en 2.1.197 sans note de changelog.

XI. Sources