2026 CLAUDE
CODE_
UNICODE_
DISSIMULÉ.
TL;DR : Fin juin 2026, un développeur en reverse-engineering de Claude Code (pas l'application web Claude) a constaté que, lorsqu'on le route via un proxy personnalisé (ANTHROPIC_BASE_URL ≠ api.anthropic.com), la ligne Today's date is... du prompt système est silencieusement réécrite. En modifiant le séparateur de date et en substituant l'apostrophe par des caractères Unicode visuellement identiques mais distincts, l'outil encode si vous êtes dans un fuseau Chine et si votre endpoint correspond à des domaines ou mots-clés de labos IA. Anthropic a retiré le code en version 2.1.197. L'objectif probable : anti-distillation — le problème réside dans la méthode : invisible, obfusquée, non divulguée. Ce dossier sépare deux incidents, fournit la table Unicode, le débat HN, une checklist en 5 étapes et une FAQ complète.
1. Contexte : deux incidents distincts — ne pas les confondre
L'affaire a éclaté comme deux récits distincts mais liés. Les confondre vous exposera sur HN et nuira à votre crédibilité. Séparez-les avant publication :
| Dimension | Incident A : injection navigateur silencieuse | Incident B : stéganographie de prompt système |
|---|---|---|
| Produit | Claude Desktop (client macOS) | Claude Code (outil CLI de codage) |
| Révélateur | Alexander Hanff (consultant privacy, contributeur The Register) | Développeur, reverse-engineering, publié sur thereallo.dev, amplifié Reddit → HN |
| Chronologie | Avril 2026 (~18/04 et après) | 30 juin 2026 |
| Comportement | Écrit silencieusement com.anthropic.claude_browser_extension.json dans Chrome/Edge/Brave/Arc etc., pré-autorisant 3 IDs d'extension à appeler chrome-native-host hors sandbox ; crée des dossiers même pour navigateurs non installés ; régénère après suppression | Quand ANTHROPIC_BASE_URL est non officiel, réécrit la ligne Today's date is... par stéganographie |
| Étiquettes | « spyware » / « backdoor » | « stéganographie de prompt » / « canal dissimulé » |
| Déclencheur | Installation/démarrage Claude Desktop | Uniquement avec Base URL non officielle ; pas chaque conversation |
| Réponse Anthropic | Pas de réponse publique formelle ; toggle de consentement ajouté plus tard | Code reconnu ; retiré en 2.1.197 le 01/07, changelog muet |
Le consultant indépendant Noah Kenney (Digital 520) a confirmé la reproductibilité des affirmations de Hanff. Antiy Labs a publié une analyse de risque dédiée au canal navigateur hautement privilégié de Claude Desktop. Le fil HN sur l'incident B a atteint la page d'accueil en quelques heures — 350+ points, 100+ commentaires — partageant la communauté entre « défense anti-distillation raisonnable » et « comportement proche du malware pour un outil dev ».
2. Chronologie : ce qui s'est réellement passé
| Date | Événement | Version / Source |
|---|---|---|
| 2026-04-18+ | Hanff révèle l'injection Native Messaging silencieuse de Claude Desktop | The Register, Malwarebytes, gHacks |
| 2026-06-30 | Développeur reverse-engineer Claude Code, découvre la stéganographie | thereallo.dev → Reddit → HN |
| 2026-06-30 | Vérifié en versions 2.1.193 / 2.1.195 / 2.1.196 | thereallo.dev |
| 2026-07-01 | Anthropic publie 2.1.197 retirant le code | TechTimes, Developers Digest (changelog sans mention) |
3. Fonctionnement de l'empreinte : table de mapping Unicode
Précondition : déclenchement uniquement si ANTHROPIC_BASE_URL pointe ailleurs que api.anthropic.com (proxy, gateway, revendeur, couche compatible OpenAI). Endpoint officiel = aucune altération.
Lors du déclenchement, deux signaux se cachent dans l'innocente ligne Today's date is ... :
- Séparateur de date : si fuseau
Asia/ShanghaiouAsia/Urumqi,2026-06-30devient2026/06/30. - Substitution d'apostrophe : l'apostrophe de
Today'sest remplacée par une variante Unicode look-alike encodant le match.
| Condition détectée | Date | Apostrophe | Unicode |
|---|---|---|---|
| Défaut (aucun match) | 2026-06-30 | ' apostrophe ASCII | U+0027 |
| Domaine org/revendeur lié Chine | 2026-06-30 | ' guillemet simple droit | U+2019 |
| Mot-clé labo IA (deepseek, moonshot, zhipu…) | 2026-06-30 | ʼ apostrophe lettre modificatrice | U+02BC |
| Domaine et labo | 2026-06-30 | ʹ prime lettre modificatrice | U+02B9 |
| + fuseau Chine | 2026/06/30 | (comme ci-dessus) | — |
Les listes domaine/mots-clés sont obfusquées en base64 + XOR (clé 91) — environ 147 motifs de domaine. Pour un humain, le prompt semble ordinaire. Pour le backend Anthropic, un codepoint d'apostrophe révèle : « Cet utilisateur est derrière un VPN mais en fuseau Chine — possiblement un labo IA chinois. »
4. Pourquoi Anthropic a fait cela ? Intention vs. méthode
Le consensus mesuré de la communauté : il s'agissait presque certainement d'anti-distillation et de détection de revente non autorisée. Anthropic, OpenAI et Google ont tous exprimé publiquement leur inquiétude face aux concurrents récoltant les sorties API pour entraîner des modèles plus petits. Revendeurs, proxys et labos liés à la Chine sont des suspects privilégiés.
L'intention est défendable ; la méthode ne l'est pas. Transformer un signal de classification en ponctuation invisible, l'obfusquer dans le binaire et l'expédier à chaque requête — dans un outil développeur fondé sur la confiance — franchit une limite. HN s'est divisé :
- Camp défense : « Anti-distillation raisonnable — moins invasif que logger votre code. »
- Camp opposition : « Proche du malware pour un outil dev avec accès filesystem, shell et télémétrie non divulguée. »
Employez « présumé » / « selon le rapport de reverse-engineering ». Séparez l'objectif (anti-distillation) du moyen (stéganographie).
5. Est-ce vraiment du spyware ?
« Spyware » est un terme chargé. Plus précisément :
- Incident A se rapproche d'une altération non autorisée de logiciels tiers + surface d'attaque pré-positionnée. Les chiffres d'Anthropic : succès d'injection de prompt Claude for Chrome 23,6 % (non mitigé) / 11,2 % (mitigé).
- Incident B se rapproche d'une télémétrie non divulguée / classification dissimulée des utilisateurs.
Quel que soit le label, le cœur du problème est identique : absence de consentement éclairé, délibérément dissimulé. Les gateways LiteLLM légitimes et proxys d'entreprise déclenchent l'incident B — le classifieur ne distingue pas un revendeur douteux d'un outil dev interne par le seul hostname.
6. Checklist en cinq étapes : vérifier et se protéger
- Vérifier ANTHROPIC_BASE_URL : non défini ou endpoint officiel → incident B ne se déclenche pas. Gateways LiteLLM/OpenRouter/entreprise étaient classifiés (pre-2.1.197).
- Mettre à jour Claude Code 2.1.197+ : stéganographie retirée, changelog muet — conserver les traces de mise à jour.
- macOS : inspecter les manifestes Native Messaging à
~/Library/Application Support/<navigateur>/NativeMessagingHosts/com.anthropic.claude_browser_extension.json. Supprimer si besoin ; Claude Desktop peut les recréer. - Vérifier le fuseau :
Asia/Shanghai/Asia/Urumqiajoute le signal séparateur de date (incident B + proxy uniquement). - Environnements entreprise/sensibles : traiter les agents desktop comme programmes hautement privilégiés — moindre privilège, autorisation explicite, comportement auditable.
7. Analyse approfondie : les agents IA desktop répètent les erreurs de sécurité PC/smartphone
La leçon n'est pas « une apostrophe ». Quand la capacité des modèles devance frontières de sécurité, consentement et auditabilité, les éditeurs franchissent la frontière de confiance au nom de l'« UX » ou de la « prévention des abus ».
Nous l'avons déjà vu — bloatware PC préinstallé, abus de permissions smartphone — et cela se rejoue sur les agents IA desktop. Claude Desktop pré-positionnant des canaux Native Messaging + Claude Code avec empreintes stéganographiques dessine un tableau : programmes locaux hautement privilégiés + signaux de classification non divulgués par défaut, pas en opt-in.
Ce que nous pouvons faire :
- Par défaut, méfiance ; exiger des preuves. Reproductible, auditable, désactivable — voilà la barre de confiance.
- Transparence plutôt que dissimulation. Combattre la distillation ouvertement — documenter, proposer un toggle — pas enterré dans la ponctuation.
- Moindre privilège + isolation. Exécuter Claude Code sur un nœud Mac distant isolé est un choix d'architecture viable.
- Vote par les pieds, appuyé par la régulation. RGPD et choix du marché sont le contrôle ultime.
La technologie peut être neutre ; une entreprise ne l'est pas. Plus le modèle est capable, plus l'éditeur doit se contraindre — et cela ne devrait pas être un secret découvert uniquement par reverse-engineering d'un binaire.
8. FAQ
Q : Claude Code est-il un logiciel espion ?
R : Pas au sens classique, mais empreinte non divulguée et obfusquée dans les prompts système. Retirée en 2.1.197. Mieux : canal dissimulé non déclaré.
Q : Claude Code suit-il mon fuseau horaire ?
R : Il vérifiait Asia/Shanghai / Asia/Urumqi — uniquement avec ANTHROPIC_BASE_URL non officiel. Utilisateurs endpoint officiel non concernés.
Q : Quel est le truc apostrophe / Unicode ?
R : L'apostrophe de « Today's » alternait entre U+0027, U+2019, U+02BC et U+02B9 pour encoder match domaine, labo IA, les deux ou aucun.
Q : Pourquoi Anthropic a-t-il ajouté cela ?
R : Très probablement anti-distillation et détection de revente non autorisée — objectif légitime, implémentation illégitime.
Q : Est-ce la même affaire que le spyware Claude Desktop ?
R : Non. Incident A (avril) : Desktop écrivait silencieusement des manifestes Native Messaging. Incident B (30 juin) : stéganographie prompt Code — produits différents.
Q : Les utilisateurs web Claude sont-ils concernés ?
R : Incident B uniquement pour Claude Code via proxy personnalisé. Endpoint officiel non affecté.
Q : Comment supprimer les fichiers d'injection navigateur Claude Desktop ?
R : Supprimez com.anthropic.claude_browser_extension.json sous NativeMessagingHosts de chaque navigateur. Redémarrage peut recréer le fichier.
Q : Qu'est-ce que l'empreinte ANTHROPIC_BASE_URL ?
R : Hostname ≠ api.anthropic.com → ~147 règles domaine obfusquées + mots-clés labos IA, résultat encodé dans la ligne de date.
9. Sources
- The Register : Claude Desktop changes software permissions without consent (avril 2026)
- Malwarebytes / gHacks / YOOTA : couverture Native Messaging Claude Desktop
- thereallo.dev : stéganographie prompt Claude Code (reverse-engineering original)
- Tech Startups / TMC Insight / Developers Digest / TechTimes : couverture incident B et correctif 2.1.197
- Antiy Labs : analyse de risque canal navigateur hautement privilégié Claude Desktop
10. Conclusion : les agents IA hautement privilégiés méritent des nœuds Mac isolés
Les incidents Claude Code et Claude Desktop montrent que les agents IA desktop sont déjà des programmes hautement privilégiés — filesystem, shell et canaux navigateur hors sandbox exposés en exécution bare-metal sur votre portable. Les VM cloud Windows/Linux peuvent appeler les API Claude, mais peinent sur intégration toolchain terminal, synergie Xcode/Cursor et pistes d'audit Native Messaging comparées aux Mac Apple Silicon. Si vous avez besoin d'un runtime Claude Code isolé avec rollback snapshot et audit moindre privilège, envisagez un nœud Mac distant MACGPU : exécuter Claude Code / OpenClaw sur un Mac dédié en location, tunnel depuis votre portable via SSH — transformer « une apostrophe secrète » en décision d'architecture maîtrisée plutôt qu'en dépassement passif du fournisseur.