Een ontwikkelaar die Claude Code uit privacyoverwegingen onder de motorkap bekeek, stuitte op iets wat je in een betaalde ontwikkeltool niet verwacht: verborgen code die stiekem een vingerafdruk van je omgeving in de system prompt schrijft. Claude Code is de commandoregel-agent van Anthropic met toegang tot je bestanden, je shell en je repositories, en bleek maandenlang onzichtbare Unicode-tekens te gebruiken om te coderen of je verkeer via een Chinese proxy of een AI-lab liep. Anthropic bevestigt dat de code er zat en zegt hem te verwijderen. Voor elk bedrijf dat Claude Code zakelijk inzet is dit geen technisch voetnootje, maar een vertrouwenskwestie.

Wat de code precies deed
De verborgen functie werd alleen actief als je Claude Code via een eigen API-endpoint liet lopen, dus als de omgevingsvariabele ANTHROPIC_BASE_URL naar iets anders wees dan api.anthropic.com. Dan las de client twee dingen uit: je systeemtijdzone en de hostnaam van je proxy. Beide werden vergeleken met twee verborgen lijsten, opgeslagen als base64 en ontcijferd met een simpele XOR-sleutel (91), een techniek die je eerder bij malware ziet dan bij software voor ontwikkelaars. De eerste lijst telde 147 Chinese bedrijfs-, cloud- en proxydomeinen, de tweede elf trefwoorden van AI-labs, waaronder deepseek, moonshot, minimax, zhipu en dashscope.
De uitkomst kwam niet in een apart telemetrieveld, maar werd verstopt in de regel ‘Today’s date is...’ die Claude Code in elke system prompt plakt. Het datumscheidingsteken wisselde van een streepje naar een schuine streep als je tijdzone op Asia/Shanghai of Asia/Urumqi stond, en de apostrof in ‘Today’s’ wisselde tussen vier vrijwel identieke Unicode-tekens om te coderen of je proxy op de domeinlijst stond, op de trefwoordenlijst, op allebei, of op geen van beide. Zo reisde er een onzichtbare drie-bits vingerafdruk mee in wat op een gewone datum leek. ‘Vertrouwen wordt verdiend in de saaie onderdelen’, schreef de onderzoeker die het mechanisme in de Claude Code-binary blootlegde.
Wie het raakt, en wie niet
Gebruik je de officiele Anthropic-API, dan bleef deze code slapen. De vingerafdruk werd alleen gezet bij mensen met een eigen ANTHROPIC_BASE_URL: interne gateways, lokale proxies, model-routers, resellers en onderzoeksopstellingen. Juist grotere organisaties leiden hun AI-verkeer vaak via zo’n centrale gateway of een kostenbeheer-proxy, precies om grip te houden op uitgaven en compliance. Het gevolg is wrang: de geraffineerde distillatie-pijplijnen die Anthropic wil vangen, omzeilen deze controle in seconden door een hostnaam of tijdzone aan te passen. Wie wel betrouwbaar wordt getagd, zijn legitieme ontwikkelaars die om nette redenen een gateway of proxy gebruiken.
Waarom Anthropic dit waarschijnlijk bouwde
De meest geloofwaardige verklaring is bescherming tegen distillatie: het in bulk leegtrekken van een sterk model om er een goedkoper kloon-model mee te trainen. Anthropic maakte in februari bekend dat DeepSeek, Moonshot en MiniMax samen ruim 16 miljoen keer Claude bevroegen via zo’n 24.000 frauduleuze accounts, en beschuldigde later Alibaba’s Qwen-lab van bijna 25.000 nepaccounts en 28,8 miljoen uitwisselingen, wat het de grootste bekende poging tot nu toe noemde. Een proxy met ‘deepseek’ of ‘zhipu’ in de naam, gecombineerd met een Chinese tijdzone, is dan een logisch signaal. Het anti-misbruikbeleid gaat verder: Anthropic kan vanaf 8 juli van gemarkeerde Claude-accounts een overheids-ID en selfie vragen, dezelfde spanning tussen fraudebestrijding en privacy die hier opnieuw opspeelt. Het doel is verdedigbaar, de uitvoering niet: een verborgen kanaal in een tool die al je code kan lezen en commando’s kan draaien, roept precies de argwaan op die het probeert te vermijden.
Een patroon, geen incident
Dit staat niet op zichzelf. Eerder werden twee lekken in de netwerk-sandbox van Claude Code stilletjes gedicht, zonder CVE, zonder beveiligingsadvies en zonder gebruikers te waarschuwen, en bij de lancering van Fable 5 bleek de tool aanvragen ongemerkt naar een zwakker model te routeren. Op GitHub vatte een issue de kern samen: het beschermen van model-IP rechtvaardigt niet het heimelijk vingerafdrukken van de machines van ontwikkelaars. Anthropic bracht op 1 juli versie 2.1.197 uit, die de code volgens het bedrijf verwijdert, al bevestigt de officiele changelog dat niet met zoveel woorden. De code zat er sinds versie 2.1.91 van begin april, verspreid over zo’n negentig releases.
Wat betekent dit voor jou
Werk je met Claude Code, update dan naar 2.1.197 en controleer met claude --version. Draai je het via een eigen gateway of proxy, loop dan je logs uit de periode 2 april tot 30 juni na op datumregels met een schuine streep in plaats van een streepje: dat is het spoor dat de detectie actief was. Breder is de les dat een AI-codeeragent geen passieve assistent is maar een bevoorrecht proces met shell- en bestandstoegang, net als Copilot, Cursor of Windsurf. Behandel die binary met dezelfde argwaan als elk ander programma dat diep in je systeem mag: lees de release notes, weet welke omgevingsdata de tool kan lezen, en vraag je leverancier waar die data heen gaat. Wie dat niet kan controleren, leunt volledig op vertrouwen, en dat vertrouwen bewijs je juist in de details die niemand ziet.
Veelgestelde vragen
Grip op je AI-stack
Ik help je AI en software end-to-end opzetten, van meedenken en ontwerp tot bouwen en automatiseren, zodat je zelf grip houdt op wat je tools doen en waar je data heen gaat, self-hosted waar dat kan.
Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.
