Claude Code et la stéganographie
Le fingerprint Unicode d'Anthropic

Injection navigateur · Stéganographie de prompt · Anti-distillation · Runbook six étapes · Confiance éditeur

System prompt Claude Code montrant l'apostrophe Unicode U+2019 comme fingerprint
Fin juin 2026, un développeur a découvert, en reverse engineering Claude Code, que lorsque le trafic passe par un proxy personnalisé (ANTHROPIC_BASE_URLapi.anthropic.com), l'outil réécrit discrètement la ligne Today's date is... du system prompt. En alternant des apostrophes Unicode visuellement identiques et des séparateurs de date, il encode le fuseau horaire chinois et les correspondances domaine/laboratoire — un canal dissimulé classique. Anthropic a retiré le code en 2.1.197. Ce guide s'adresse aux développeurs et responsables conformité : ① incident A (injection navigateur Desktop) vs B (stéganographie Code) ; ② table de mapping Unicode complète ; ③ motif anti-distillation et débat HN ; ④ runbook de protection en six étapes ; ⑤ données vérifiables et position sur les limites de confiance des éditeurs IA.
01

Que s'est-il passé ? Deux incidents Claude à ne pas confondre

En bref : l'affaire repose sur deux histoires distinctes. Incident A (avril 2026) : Claude Desktop écrit silencieusement des manifestes Native Messaging dans les navigateurs. Incident B (30 juin 2026) : Claude Code dissimule des empreintes Unicode dans les system prompts. Ce dernier ne se déclenche qu'avec une Base URL non officielle — pas à chaque conversation.

A

Incident A (avril 2026, divulgation Alexander Hanff) : L'installation de Claude Desktop sur macOS aurait, selon les rapports, écrit com.anthropic.claude_browser_extension.json dans les répertoires Chrome, Edge, Brave, Arc, Vivaldi et Opera — pré-autorisant trois ID d'extension à appeler chrome-native-host hors sandbox navigateur. Les répertoires sont créés même sans navigateur installé ; la suppression est annulée au redémarrage. Noah Kenney (Digital 520) a confirmé les affirmations de Hanff ; Antiy Labs a publié une analyse de risque dédiée. Anthropic n'a pas répondu formellement ; des versions ultérieures ont ajouté un interrupteur d'autorisation, mais le modèle de permissions persiste.

B

Incident B (30 juin 2026, reverse engineering thereallo.dev) : Lorsque ANTHROPIC_BASE_URL ≠ api.anthropic.com, la ligne Today's date is... du system prompt est réécrite via des échanges de séparateur de date et d'apostrophe Unicode. Les versions 2.1.193, 2.1.195 et 2.1.196 contenaient toutes la logique selon le reverse engineer. Fil HN en première page en quelques heures : 350+ points, 100+ commentaires.

C

Chronologie du correctif : Anthropic a reconnu le code. La version 2.1.197 du 1er juillet 2026 l'a retiré — sans mention dans le changelog.

D

Étiquettes divergentes : incident A qualifié de « spyware » / « backdoor » ; incident B de « stéganographie de prompt » / « canal dissimulé ».

E

Formulation conformité : employer « allégué », « selon le rapport de reverse engineering » et « divulgué par » partout. Séparer l'intention (anti-distillation) de la méthode (stéganographie).

DimensionIncident A : injection navigateurIncident B : stéganographie system prompt
ProduitClaude Desktop (client macOS)Claude Code (CLI)
SourceAlexander Hanff (The Register)thereallo.dev → Reddit → HN
DateAvril 2026 (~18/04)30 juin 2026
DéclencheurInstallation/démarrage Claude DesktopUniquement si ANTHROPIC_BASE_URL non officiel
ComportementManifeste Native Messaging ; extensions pré-autorisées hors sandboxRéécrit Unicode et format de date dans Today's date
02

Comment Claude Code détecte-t-il un proxy Chine ? Table Unicode

Prérequis : ne se déclenche que si ANTHROPIC_BASE_URL pointe ailleurs que api.anthropic.com (proxy, passerelle, revendeur, couche compatible OpenAI). L'endpoint officiel reste intact. Les signaux de classification se cachent dans l'innocente ligne Today's date is ....

Condition détectéeFormat dateApostrophe dans Today'sUnicode
Défaut (aucune correspondance)2026-06-30' apostrophe ASCIIU+0027
Domaine org/revendeur Chine2026-06-30' guillemet simple droitU+2019
Mot-clé laboratoire IA2026-06-30ʼ apostrophe modificativeU+02BC
Domaine et labo2026-06-30ʹ prime modificativeU+02B9
+ fuseau Chine2026/06/30 (séparateur /)(mêmes règles)

Fuseaux Chine : Asia/Shanghai ou Asia/Urumqi. Listes domaine/mots-clés : obfuscation base64 + XOR (clé 91) — environ 147 patterns incluant deepseek, moonshot, zhipu, minimax, baichuan, stepfun, 01ai. Pour un humain le prompt semble ordinaire ; pour le backend d'Anthropic, un code point d'apostrophe révèle : utilisateur VPN, fuseau Chine, possible labo IA chinois. Un canal dissimulé textbook.

bash
echo $ANTHROPIC_BASE_URL
python3 -c "s=\"Today's\"; print([hex(ord(c)) for c in s if c in \"''ʼʹ\"])"
grep -r "com.anthropic.claude_browser_extension" ~/Library/Application\ Support/*/NativeMessagingHosts/ 2>/dev/null

Conseil : U+0027 et U+2019 paraissent identiques dans la plupart des terminaux. Utilisez un hex dump ou Python ord() pour confirmer le fingerprinting.

03

Pourquoi Anthropic a-t-il fait cela ? Claude Code est-il un logiciel espion ?

Le consensus communautaire reste mesuré : très probablement anti-distillation et anti-revente non autorisée. Anthropic, OpenAI et Google s'inquiètent publiquement des concurrents qui récoltent les sorties API pour entraîner des modèles plus petits. Revendeurs, proxys et laboratoires liés à la Chine sont les principaux suspects. L'intention se défend ; la méthode, non. Ponctuation invisible, code binaire obfusqué, expédié à chaque requête — dans un outil développeur fondé sur la confiance — franchit une limite.

Sur Hacker News le fil s'est scindé : « défense anti-distillation raisonnable » vs « comportement proche du malware pour un outil dev ».

« Spyware » est un terme chargé. Plus précisément : incident A = altération non autorisée de logiciels tiers plus surface d'attaque pré-positionnée hors sandbox navigateur. Les chiffres d'Anthropic : injection de prompt Claude for Chrome 23,6 % sans atténuation / 11,2 % atténué. Incident B = télémétrie non divulguée / classification utilisateur dissimulée. Quel que soit le label, le cœur du problème : aucun consentement éclairé, délibérément caché.

04

Comment arrêter le Native Messaging Claude Desktop ? Runbook en six étapes

01

Vérifier la Base URL : exécuter echo $ANTHROPIC_BASE_URL. Vide ou officielle api.anthropic.com → incident B ne se déclenche pas. Utilisateurs proxy/passerelle dans la cible de classification.

02

Mettre à jour Claude Code : version ≥ 2.1.197 (1er juillet 2026, stéganographie retirée). Exécuter claude --version.

03

Auto-contrôle Unicode : inspecter chaque caractère de Today's dans les system prompts capturés. U+0027 normal ; U+2019/U+02BC/U+02B9 = signalé.

04

Auditer Native Messaging (incident A) : sur macOS vérifier ~/Library/Application Support/<navigateur>/NativeMessagingHosts/com.anthropic.claude_browser_extension.json. Supprimer si besoin ; Claude Desktop peut recréer au redémarrage.

05

Audit fuseau horaire : vérifier le fuseau système. Base URL non officielle plus Asia/Shanghai ou Asia/Urumqi → séparateur de date passe de - à /.

06

Renforcement entreprise : évaluer l'usage d'Agent desktop en production. Moindre privilège, autorisation explicite, comportement auditable. Isoler Claude Desktop du Native Messaging navigateur en environnements sensibles.

05

Données citables : paramètres de l'incident fingerprint Claude Code

A

Nombre de règles domaine : ~147 patterns, obfuscation base64 + XOR(91) ; mots-clés deepseek, moonshot, zhipu, minimax, baichuan, stepfun, 01ai.

B

Versions affectées : 2.1.193 / 2.1.195 / 2.1.196 confirmées ; retiré en 2.1.197 (2026-07-01).

C

Engouement HN : première page en heures — 350+ points, 100+ commentaires. Injection prompt Claude for Chrome : 23,6 % sans atténuation / 11,2 % atténué (données Anthropic, contexte incident A).

Attention : la leçon n'est pas « une apostrophe ». Quand les capacités des modèles accélèrent tandis que les frontières de sécurité et l'auditabilité retardent, les éditeurs franchissent les lignes de confiance au nom de l'UX ou de la prévention des abus. Par défaut : méfiance ; exiger la transparence ; moindre privilège.

Les équipes utilisant Claude Code pour CI/CD iOS et automatisation Agent IA sur Mac locaux font face à une prolifération de permissions et au risque de télémétrie dissimulée ; l'isolation VM partagée reste inférieure au bare metal dédié. Pour un environnement Apple Silicon stable, auditable et 24/7, la location Mac Mini cloud MESHLAUNCH est généralement le meilleur choix : M4/M4 Pro dédiés, facturation jour/semaine/mois, isolation physique des canaux locaux à haut privilège de Claude Desktop.

Sources : The Register (permissions Claude Desktop, 2026-04) ; Malwarebytes / gHacks / YOOTA ; thereallo.dev (reverse engineering original) ; Tech Startups / TMC Insight / Developers Digest / TechTimes (correctif 2.1.197) ; analyse de risque Antiy Labs.

FAQ

Pas au sens classique, mais selon le rapport de reverse engineering il intégrait une empreinte non divulguée et obfusquée pour signaler les utilisateurs de proxys liés à la Chine. Retiré en 2.1.197. Plus précisément : canal dissimulé non déclaré.

Il vérifiait Asia/Shanghai et Asia/Urumqi uniquement avec un ANTHROPIC_BASE_URL non par défaut. Les utilisateurs de l'endpoint officiel n'étaient pas concernés.

L'apostrophe de Today's alternait entre U+0027, U+2019, U+02BC, U+02B9 pour encoder correspondances domaine, mots-clés labo, les deux ou aucun. Voir la table ci-dessus.

Non. L'injection Native Messaging de Claude Desktop en avril 2026 est l'incident A. La stéganographie Claude Code du 30 juin est l'incident B — produits et déclencheurs distincts.

Très probablement détection anti-distillation et revente non autorisée. La controverse porte sur la méthode dissimulée. Options de déploiement isolé sur la page tarifs.

L'incident B ne se déclenche que dans Claude Code avec ANTHROPIC_BASE_URL non officiel. Les utilisateurs web sur l'endpoint officiel ne sont pas affectés.

Supprimez com.anthropic.claude_browser_extension.json sous ~/Library/Application Support/<navigateur>/NativeMessagingHosts/. Claude Desktop peut le recréer. Consultez le centre d'aide.

Anthropic a reconnu et retiré le code en 2.1.197 le 1er juillet 2026. Le changelog ne mentionnait pas le changement. Mettez à jour immédiatement et vérifiez votre version.