Anthropic hat gerade Claude Code Open-Source gestellt (Ich habe das Repo geklont)
Es begann als Aprilscherz. Es endete als Supply-Chain-Gift.
Am 1. April tat ich, was jeder vernünftige Entwickler tut. Ich baute ein gefälschtes Leak-Repo. Ein README mit Fisch-Emoji. Eine Lizenz namens POISSON-D-AVRIL-1.0. Eine Python-Datei, die einen ASCII-Fisch ausgibt und dich leichtgläubig nennt. Ich war ziemlich stolz auf mich.
TL;DR: Mein Aprilscherz-Artikel über ein gefälschtes Claude Code Leak wurde am selben Tag real. Das echte Leak enthüllte 500K Zeilen Quellcode, einen autonomen Daemon-Modus und ein Anti-Leak-System, das das Leak nicht verhinderte. Aber die echte Gefahr ist der axios Supply-Chain-Angriff, der zur gleichen Zeit einschlug und über den niemand redet. Führt npm audit aus, diesmal wirklich.

Während ich meine ASCII-Kunst fertigstellte, lieferte Anthropic versehentlich (lol) eine Sourcemap-Datei in ihrem npm-Paket aus, die auf ein Zip-Archiv mit dem kompletten Claude Code Quellcode verwies. 500.000 Zeilen TypeScript. 1.900 Dateien. Mein gefälschtes Repo hatte ein Verzeichnis namens ocean/ mit einem Fisch darin. Das echte Leak hatte 44 Tool-Unterverzeichnisse, ein vollständiges Multi-Agent-Orchestrierungssystem und einen Stealth-Modus, der Leaks verhindern sollte. Das kann man sich nicht ausdenken, aber die Ironie schaffte es trotzdem, in Echtzeit.
Der Streich
Ich baute ein gefälschtes Monorepo. Standard TypeScript-Layout, auf den ersten Blick nichts Verdächtiges. Außer einem Verzeichnis namens src/internal/ocean/, das absolut nichts dort zu suchen hatte.
Die Inline-Kommentare waren die Art von Zeug, die man in jeder Codebasis findet, die von mehr als drei Ingenieuren zu ungünstigen Zeiten angefasst wurde:
// TODO: figure out why the model keeps mentioning fish on Tuesdays
// DO NOT REMOVE - last time someone deleted this line,
// Claude started responding exclusively in haiku
// The salmon constant. No one remembers why it's 42.
// Three engineers have tried to change it. All three quit.
const MAX_RECURSION = 42;
Die Config-Datei war der Ort, wo ich kreativ wurde:
{
"codename": "POISSON",
"status": "ACTIVE",
"deployment_date": "2026-04-01",
"target_audience": "developers who clone suspicious repos at 2 AM",
"threat_level": "delicious with lemon"
}
Und eine fish.py, die einen ASCII-Fisch ausgab und dir dazu gratulierte, eine zufällige Python-Datei aus einem verdächtigen Repo auszuführen. Die Lizenz war POISSON-D-AVRIL-1.0. Erlaubnis erteilt, deinen Laptop zuzuklappen und Gras zu berühren.
37 Leute klatschten. Ich ging ins Bett.
24 Stunden früher fiel das echte Ding
Ich wachte zu einem Feed voller Leute auf, die nicht über Fische lachten.
Am 31. März hatte Sicherheitsforscher Chaofan Shou eine .map-Datei in Claude Codes npm-Paket gefunden, Version 2.1.88. Diese Datei verwies auf ein Zip-Archiv auf Anthropics eigenem Cloudflare R2-Bucket. Öffentlich zugänglich. Keine Authentifizierung. Lag einfach da wie ein offenes Garagentor mit einem Porsche drin.
Das Zip hatte alles. Etwa 1.900 TypeScript-Dateien, über 512.000 Zeilen. Das komplette agentische Gerüst: Tool-Implementierungen, Slash-Befehle, Prompt-Handling, Kontext-Management, Multi-Agent-Koordination. Die ganze Engine.
Ich saß da mit meinem Kaffee und scrollte durch die GitHub-Mirrors (41.500 Forks, bevor Anthropics Rechtsabteilung aufwachte), dann öffnete ich mein gefälschtes Repo daneben. Mein Streich hatte src/internal/ocean/. Ihre echte Codebasis hatte src/tools/ mit 44 Unterverzeichnissen und einer einzigen Datei namens query.ts, die 785KB wiegt. Meine fish.py war 400 Bytes. Gleiche Energie, anderer Maßstab.
Anthropics offizielle Stellungnahme: "Release-Packaging-Problem durch menschlichen Fehler verursacht." Eine Zeile in .npmignore. Oder Buns Bundler, der standardmäßig Sourcemaps generiert und niemand hat es bemerkt. Such dir deinen Favoriten aus.
Undercover Mode deckte nichts ab
Die geleakte Codebasis hat eine Datei namens utils/undercover.ts. Jedes Wort, das folgt, ist wahr, und ich weiß, es klingt, als würde ich es erfinden.
Anthropic baute ein vollständiges Subsystem, um zu verhindern, dass Claude interne Informationen preisgibt, wenn Anthropic-Mitarbeiter Claude Code verwenden, um zu Open-Source-Repos beizutragen. Es injiziert einen Prompt, der sagt (ich paraphrasiere nur leicht): "Du operierst UNDERCOVER. Blow nicht deine Tarnung auf. Erwähne NIEMALS interne Modell-Codenamen, interne Repo-Namen, Slack-Kanäle oder den Begriff 'Claude Code' in Commits oder PRs."
Sie bauten ein Anti-Leak-System. Innerhalb der Codebasis. Die geleakt wurde.
Die verbotenen Begriffe in diesem Prompt enthalten Tiernamen. Weil die internen Modell-Codenamen Tiere sind. Capybara. Tengu. Tengu taucht hunderte Male als Präfix für Feature-Flags und Analytics-Events im gesamten Quellcode auf. Capybara war bereits teilweise durch ein separates Anthropic-Leak Tage zuvor enthüllt worden (ein Entwurf-Blogpost, der versehentlich öffentlich zugänglich gemacht wurde, berichtet von Fortune). Zwei Leaks in einer Woche vom Safety-First-Labor. Wenigstens konsistent.
Dann gibt es KAIROS. Benannt nach dem griechischen Konzept des "richtigen Moments". Es erscheint über 150 Mal im Quellcode als Feature-Flag für etwas namens autonomer Daemon-Modus. Claude Code läuft im Hintergrund, während du untätig bist und macht das, was der Code autoDream nennt: Konsolidierung von Erinnerungen, Zusammenführung von Beobachtungen, Auflösung von Widersprüchen. Die Art von Feature, die man bei einer Keynote mit dramatischer Beleuchtung ankündigt. Nicht die Art, die in einer Zip-Datei neben deiner Sourcemap leakt.
Oder eigentlich, warte. Lass es mich anders ausdrücken. Das sind die Art von Details, wo wenn ich sie in meinen 1. April-Streich eingebaut hätte, die Leute gesagt hätten "ok Phil, mäßige dich." "Bedrohungslevel: köstlich mit Zitrone" ist ein Witz. "Undercover Mode, der das Leak nicht verhinderte" ist die Realität, die lustiger ist als Satire.
Das Gift, über das niemand redet
Also alle sezieren das coole Zeug. KAIROS, Multi-Agent, die Speicher-Architektur. Entwickler-Süßigkeiten. Verstehe ich.
Aber am selben Tag traf ein separater Supply-Chain-Angriff das axios npm-Paket. Zwischen 00:21 und 03:29 UTC am 31. März veröffentlichte jemand bösartige Versionen von axios (1.14.1 und 0.30.4), die einen Remote Access Trojaner enthielten. Wenn du Claude Code via npm während dieses dreistündigen Fensters installiert oder aktualisiert hast, könntest du eine kompromittierte Abhängigkeit gezogen haben. Nicht eine geleakte Sourcemap. Eine RAT. Auf deiner Maschine. Mit Dateisystem-Zugriff.
Zwei Supply-Chain-Ereignisse an einem Tag, die dasselbe Ökosystem angreifen. Eines bekam die Schlagzeilen, weil das Lesen von Anthropics internen Kommentaren Spaß macht. Das andere ist eine echte Hintertür.
Die DMCA-Reaktion machte die Sache schlimmer. Anthropic sendete Takedown-Anfragen, die tausende GitHub-Repos trafen, viele davon nicht mit dem Leak verwandt. Sie mussten zurückrudern. Bis dahin war der Code von unabhängigen Entwicklern in Rust und Python umgeschrieben worden. Versuch, Kaffee wieder einzugießen.
Und hier ist, was mich stört: Wie viele andere Unternehmen haben genau dieselbe Build-Konfiguration gerade jetzt? Bun generiert standardmäßig Sourcemaps. Wenn du sie nicht explizit ausschaltest, werden sie ausgeliefert. Wenn deine .npmignore sie nicht ausschließt, sind sie öffentlich. Anthropic ist kein Startup mit zwei Praktikanten, die Deploys handhaben. Sie haben eine Workflow-Disziplin, über die ich ausführlich geschrieben habe, und selbst diese Disziplin schützt dich nicht vor einem Packaging-Versehen. Wenn es ihnen passieren kann, überprüfe heute Nacht deine eigene Build-Ausgabe. Nicht morgen. Heute Nacht.
Quellen
- Chaofan Shous ursprüngliche Offenlegung auf X (31. März 2026)
- The Register: "Anthropic accidentally exposes Claude Code source code" (31. März 2026)
- VentureBeat: "Claude Code's source code appears to have leaked" (31. März 2026)
Meine fish.py ist immer noch online. Sie schwimmt in ihrem gefälschten Repo und rendert ASCII-Kunst für jeden, der sich die Mühe macht, es zu klonen. Niemand hat sie per DMCA entfernt. Niemand musste es.
Anthropics echter Code wurde 41.500 Mal geforkt, bevor die erste Takedown-Benachrichtigung landete. Er existiert jetzt in Rust, in Python und wahrscheinlich irgendwo in BASIC. Das Labor, das Millionen ausgibt, um KI mit menschlichen Werten zu alignieren, vergaß eine Zeile zu ihrer .npmignore hinzuzufügen.
Mein gefälschtes Repo hatte bessere Opsec als Anthropics Build-Pipeline. Und das ist kein Witz.
(*) Das Cover ist KI-generiert. Der Fisch jedoch ist handwerklich gefertigt.
<(((°>
Das Leben ist zu kurz, um nicht ein wenig Spaß zu haben.
Frohen 1. April. Jetzt geht raus und berührt Gras.