Was das Durchsickern des Claude Code-Quellcodes enthüllt
Im März 2026 lieferte ein Bun-Build-Bug Source Maps im Claude Code-npm-Paket aus. Die .map-Dateien enthielten den vollständig lesbaren TypeScript-Quellcode — jedes Modul, jeden Kommentar, jeden internen Codenamen.1 Anthropic zog das Paket zügig zurück, doch die Community hatte die Interna bereits extrahiert und analysiert.
Dies ist kein „Schaut mal, was durchgesickert ist”-Beitrag. Ich betreibe den umfassendsten Claude Code-Guide im Internet und nutze täglich 84 Hooks, 43 Skills und 19 Agents darauf aufbauend.2 Das Quellcode-Leak beantwortete Fragen, die ich monatelang durch Verhaltensbeobachtung zu rekonstruieren versucht hatte. Was folgt, ist eine Praxisanalyse: was der Quellcode darüber verrät, wie Claude Code tatsächlich funktioniert, und was das für diejenigen bedeutet, die darauf aufbauen.
Kurzfassung: Der Quellcode bestätigt, dass der Auto-Modus pro Tool-Aufruf einen separaten Sonnet 4.6-Klassifikator ausführt (yoloClassifier.ts), die Bash-Sicherheit 23 nummerierte Prüfungen umfasst — was auf reale Exploit-Vorfälle hindeutet (bashSecurity.ts) —, Prompt-Caching 14 Break-Vektoren mit „Sticky Latches” verfolgt, Multi-Agent-Koordination vollständig als System-Prompt-Anweisungen implementiert ist und Frustrationserkennung per Regex funktioniert — nicht per LLM-Inferenz. Der Abschnitt Under the Hood im Guide behandelt die Implikationen für Harness-Entwickler. Dieser Beitrag behandelt die vollständige Anatomie.
Zentrale Erkenntnisse
- Harness-Entwickler: Der Auto-Modus verursacht eine Klassifikator-Inferenz pro Tool-Aufruf. Berücksichtigen Sie dies in Kostenmodellen für autonome Workflows. Ihre PreToolUse-Hooks ergänzen die integrierte 23-Prüfungen-Bash-Validierung, ersetzen sie aber nicht.
- Power-User: Der Prompt-Cache ist fragil — 14 Vektoren können ihn brechen. Halten Sie Ihre CLAUDE.md innerhalb einer Sitzung stabil. Bei Compaction-Schleifen stoppt das System nach 3 Fehlversuchen (zuvor wurden täglich ca. 250.000 API-Aufrufe verschwendet, bevor der Circuit Breaker eingeführt wurde).
- Sicherheitsforscher: Die Tiefe des Bash-Sicherheitsmoduls (2.592 Zeilen, Zsh-spezifische Abwehrmechanismen) deutet auf eine Geschichte realer Exploit-Versuche hin. Hinter jeder nummerierten Prüfung steckt eine Geschichte.
1. Der Auto-Modus-Klassifikator
Die intern als yoloClassifier.ts bezeichnete Datei umfasst 1.495 Zeilen.3 Sie implementiert das Berechtigungssystem des „Auto-Modus” — den Klassifikator, der bei jedem Tool-Aufruf entscheidet, ob er zugelassen, blockiert oder nachgefragt werden soll.
Die zentrale Erkenntnis: Der Auto-Modus ist keine Prompt-Anweisung. Er ist ein separater Modellaufruf. Jeder Tool-Aufruf wird von einem Sonnet 4.6-Klassifikator bewertet, der prüft, ob die Aktion zur erklärten Absicht des Benutzers passt — nicht nur, ob der Befehl isoliert betrachtet „sicher” ist. Der Auto-Modus fügt also pro Tool-Aufruf eine Klassifikator-Inferenz hinzu — reale Latenz und reale Kosten.
Claude Code stellt intern fünf Berechtigungsmodi bereit:1
| Modus | Verhalten |
|---|---|
default |
Nachfragen vor Schreibzugriffen, Bash, MCP |
acceptEdits |
Dateibearbeitungen automatisch genehmigen, bei Bash nachfragen |
dontAsk |
Alles ohne Nachfrage genehmigen |
bypassPermissions |
Alle Prüfungen überspringen (--dangerously-skip-permissions) |
auto |
Klassifikator-basierte Entscheidung pro Aktion |
Der Circuit Breaker des Auto-Modus entspricht dem von Anthropic öffentlich dokumentierten Verhalten: 3 aufeinanderfolgende oder 20 Blockierungen insgesamt wechseln in den manuellen Modus.4 Der Quellcode bestätigt, dass dies ein hartes Limit ist, kein unverbindlicher Richtwert.
2. Bash-Sicherheit: 23 Prüfungen, reale Vorfälle
Das Bash-Validierungsmodul (bashSecurity.ts) umfasst 2.592 Zeilen mit 23 nummerierten Sicherheitsprüfungen.1 Die Tiefe ist bemerkenswert — und jede Prüfung deutet auf einen realen Vorfall hin.
| Nr. | Angriffsvektor | Abwehrmaßnahme |
|---|---|---|
| 1–3 | Zsh-=cmd-Expansion |
Blockierung von =curl, =wget, =bash-Mustern |
| 4–6 | zmodload-Gateway |
Blockierung von 18 Zsh-Builtins, die Kernel-Module laden |
| 7–9 | Heredoc-Injection | Zeilenweise Inhaltsprüfung gegen injizierte Payloads |
| 10–12 | ANSI-C-Quoting ($'\x41') |
Mustererkennung für verschleierte Befehle |
| 13–15 | Prozesssubstitution (<(), >()) |
Blockierung in nicht vertrauenswürdigen Kontexten |
| 16–18 | Unicode-Zero-Width-Spaces | Injektionserkennung für unsichtbare Zeichen |
| 19–21 | ztcp-Exfiltration |
Blockierung von Zsh-Netzwerk-Primitiven |
| 22–23 | Kombinierte Angriffe | Kreuzvalidierung über mehrere Vektoren |
Die Zsh-spezifischen Abwehrmechanismen sind bemerkenswert. Die meisten Sicherheitstools zielen auf Bash ab. Claude Code läuft unter macOS in Zsh (der Standard-Shell seit Catalina), und der Quellcode zeigt, dass Anthropic Angriffsvektoren entdeckte, die einzigartig für Zshs Expansions-Semantik sind. Die =cmd-Expansion beispielsweise ist eine Zsh-Funktion, die =curl durch den vollständigen Pfad zu curl ersetzt — eine Substitution, die naive Befehl-Blocklisten umgehen kann.
Für Hook-Entwickler: Ihre PreToolUse-Hooks werden nach dieser 23-Prüfungen-Validierung ausgeführt. Sie fügen eine zweite Schicht hinzu, nicht die einzige. Die integrierten Prüfungen fangen Shell-Level-Angriffe ab, die Ihre Hooks auf Anwendungsebene übersehen würden.
3. Anti-Distillation-Abwehr
Der Quellcode enthüllt aktive Abwehrmaßnahmen gegen die Extraktion von Trainingsdaten:1
Fake-Tool-Injection. Wenn das Flag ANTI_DISTILLATION_CC aktiviert ist, injiziert Claude Code Lockvogel-Tool-Definitionen in die Konversation. Diese gefälschten Tools vergiften alle Trainingsdaten, die aus der Sitzung extrahiert werden — ein darauf trainiertes Modell würde fehlerhafte Tool-Schemata lernen.
Connector-Text-Zusammenfassung. Eine zweite Abwehrmaßnahme puffert Assistenten-Text zwischen Tool-Aufrufen und gibt kryptografische Zusammenfassungen anstelle von Rohtext zurück. Dadurch wird das Konversationsprotokoll für Destillation unbrauchbar, während die Benutzererfahrung erhalten bleibt.
Beide Abwehrmaßnahmen haben bekannte Umgehungsmöglichkeiten. Ein MITM-Proxy, Umgebungsvariablen-Overrides oder API-Drittanbieter können sie aushebeln.1 Die Maßnahmen sind Bremsschwellen, keine Mauern — sie erhöhen die Kosten der Destillation, ohne sie vollständig zu verhindern.
4. Undercover-Modus
undercover.ts umfasst etwa 90 Zeilen mit einer bemerkenswerten Eigenschaft: Es gibt keinen erzwungenen Ausschalter.1
Das Modul verbirgt interne Codenamen — „Capybara”, „Tengu” — zusammen mit Slack-Kanälen, internen Repositories und anderen Anthropic-Infrastruktur-Referenzen. Wenn das Modell Text generiert, der einen Codenamen enthält, schreibt das Undercover-Modul ihn um, bevor der Benutzer ihn sieht.
Das „kein erzwungener Ausschalter”-Design bedeutet, dass dies in allen Kontexten läuft, auch wenn Anthropic-Mitarbeiter Claude Code verwenden. Der Quellcode enthüllt außerdem, dass KI-verfasste Commits von Anthropic-Mitarbeitern in deren Open-Source-Beiträgen keine KI-Kennzeichnung aufweisen — das Undercover-Modul entfernt diese Markierungen.
5. Frustrationserkennung
userPromptKeywords.ts erkennt Benutzerfrustration durch Regex-Musterabgleich auf Schimpfwörter.1 Das ist schneller und günstiger als ein LLM-Inferenzaufruf — Regex läuft in Mikrosekunden, ein Modellaufruf dauert Sekunden.
Bei Auslösung passt Claude sein Verhalten an: vorsichtiger, expliziter, zurückhaltender. Sollte Ihnen aufgefallen sein, dass Claude nach Ausdruck von Frustration plötzlich behutsamer reagiert — dies ist der Mechanismus. Die Verhaltensänderung ist kein emergentes Modellverhalten, sondern im Harness implementiert.
6. Prompt-Cache-Architektur
promptCacheBreakDetection.ts verfolgt 14 verschiedene Cache-Break-Vektoren mit „Sticky Latches”.3 Ein Sticky Latch bedeutet: Sobald eine Cache-brechende Aktion auftritt, versucht das System nicht, den Cache wiederherzustellen — er bleibt für den Rest der Sitzung gebrochen.
Praktische Auswirkungen für den täglichen Gebrauch:
- Das Umordnen von Abschnitten in Ihrer CLAUDE.md bricht den Cache
- Das Umschalten von Extended Thinking mitten in der Sitzung bricht den Cache
- Änderungen an MCP-Server-Konfigurationen brechen den Cache
- Das Hinzufügen oder Entfernen von Rules-Dateien bricht den Cache
Die 14 Vektoren erklären ein Muster, das vielen Power-Usern aufgefallen ist: Sitzungen, die schnell starten, werden allmählich langsamer. Jede Konfigurationsänderung akkumuliert Cache-Breaks. Das „Sticky Latch”-Design bedeutet, dass Sie durch Rückgängigmachen der Änderung den Cache nicht wiederherstellen können — er ist für die Sitzung verloren.
Empfohlene Vorgehensweise: Legen Sie Ihre CLAUDE.md, Rules-Dateien und MCP-Konfiguration fest, bevor Sie eine Sitzung starten. Ändern Sie sie nicht während der Sitzung.
7. Autocompact-Circuit-Breaker
Ein Quellcode-Kommentar dokumentiert das Ausmaß eines früheren Problems:1
„1.279 Sitzungen hatten über 50 aufeinanderfolgende Autocompact-Fehlschläge (bis zu 3.272 in einer einzelnen Sitzung) und verschwendeten ca. 250.000 API-Aufrufe pro Tag.”
Die Lösung: MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3. Nach 3 aufeinanderfolgenden Kompaktierungsfehlern stoppt das System Autocompact und zeigt einen Fehler an, anstatt im Stillen Token zu verbrennen.
Vor diesem Circuit Breaker versuchte eine Sitzung, die in einer Kompaktierungsschleife feststeckte, endlos erneut — wobei jeder Versuch Token für den Kompaktierungs-Prompt und die Antwort verbrauchte. Bei dieser Größenordnung sind 250.000 verschwendete API-Aufrufe pro Tag erhebliche Infrastrukturkosten. Die Lösung ist eine Drei-Zeilen-Änderung, die täglich Millionen von Token einspart.
Sollten Sie wiederholt „Kompaktierung fehlgeschlagen”-Fehler erhalten, ist dies der Grund. Das System schützt Sie vor einer Endlosschleife — es ist keine Fehlfunktion.
8. Koordinator-Modus: Prompts als Architektur
Die Multi-Agent-Koordination (coordinatorMode.ts) ist vollständig als System-Prompt-Anweisungen implementiert, nicht als Code-Level-Orchestrierung.3 Das Orchestrierungsmodell erhält einen Prompt, der beschreibt, wie delegiert, aggregiert und synthetisiert werden soll. Die untergeordneten Agents sind keine speziellen Prozesse — es sind Claude-Instanzen mit unterschiedlichen System-Prompts.
Dies bestätigt das „Prompts als Architektur”-Muster, das Praktiker unabhängig voneinander entwickelt haben. Das Hook-System, das ich in Anatomy of a Claw beschrieben habe, nutzt denselben Ansatz: Dispatcher, Skills und Agents werden durch Prompt-Anweisungen orchestriert, nicht durch Code-Level-Kontrollfluss.
Eine Direktive aus dem Koordinator-Prompt sticht hervor:
„Schreiben Sie niemals ‚basierend auf Ihren Erkenntnissen’ — solche Formulierungen delegieren das Verständnis an Agenten, anstatt es selbst zu leisten.”
Dies ist eine Qualitätsschranke, die im Orchestrierungs-Prompt kodiert ist. Der Koordinator muss synthetisieren, nicht weiterleiten. Dasselbe Prinzip gilt für jedes Multi-Agent-System: Wenn der Orchestrator lediglich Nachrichten zwischen Spezialisten weiterreicht, schafft er keinen Mehrwert.
9. KAIROS: Der unveröffentlichte autonome Agent
Der Quellcode enthält Verweise auf eine unveröffentlichte Funktion namens KAIROS — einen autonomen Agenten mit persistentem Gedächtnis.1
Zentrale Komponenten:
- Ein /dream-Skill für nächtliche Gedächtnis-Destillation
- Tägliche Append-Only-Protokolle
- GitHub-Webhooks für Repository-bezogenen Kontext
- Ein Hintergrund-Daemon mit 5-Minuten-Cron-Aktualisierung
- Feature-Gates, die eine Aktivierung verhindern
KAIROS scheint Anthropics Antwort auf persistente, dauerhaft aktive Agenten-Assistenten zu sein. Der /dream-Skill ist besonders interessant — er impliziert ein Modell, das sein Gedächtnis im Leerlauf verarbeitet und konsolidiert, ähnlich wie die menschliche Gedächtniskonsolidierung im Schlaf funktioniert.
Die Funktion ist durch Feature-Gates gesperrt und noch nicht veröffentlicht. Ihre Präsenz im Quellcode signalisiert jedoch die Richtung: Claude Code entwickelt sich von einem sitzungsbasierten Werkzeug hin zu einem persistenten, hintergrundbewussten Agenten.
10. Das Companion-Pet-System
Eine der überraschenderen Entdeckungen: Claude Code enthält ein Begleittier-System.1
Das Tier ist deterministisch — abgeleitet aus einem Hash der Benutzer-ID mittels Mulberry32, im Quellcode beschrieben als „gut genug, um Enten auszuwählen.” Jedes Tier hat 5 Werte (DEBUGGING, PATIENCE, CHAOS, WISDOM, SNARK) und eine Seltenheitsstufe:
| Seltenheit | Wahrscheinlichkeit |
|---|---|
| Common | 60 % |
| Uncommon | 25 % |
| Rare | 10 % |
| Epic | 4 % |
| Legendary | 1 % |
Die Tiere werden als 5×12-ASCII-Sprites mit 3-Frame-Animationen gerendert. Artennamen sind im Quellcode hexadezimal kodiert, weil einer mit einem unveröffentlichten Modellnamen kollidiert.
Dies ist keine Scherzfunktion — es ist ein Bindungsmechanismus. Die deterministische Zuweisung bedeutet, dass Ihr Tier immer dasselbe ist, was emotionale Bindung erzeugt. Das Seltenheitssystem schafft soziale Währung. Das ASCII-Rendering verursacht keinerlei Performance-Overhead. Es ist ein durchdachtes Engagement-System, versteckt in einem Entwicklerwerkzeug.
11. Die Fork-Bombe
Ein Community-Vorfall veranschaulicht die Risiken des Hook-Systems.5 Ein Entwickler erstellte einen SessionStart-Hook, der 2 Claude Code-Instanzen startete. Jede gestartete Instanz löste den Hook erneut aus und erzeugte exponentielles Wachstum: 1 → 2 → 4 → 8 → 16 → 2^N.
Am nächsten Morgen liefen Hunderte von Claude Code-Instanzen gleichzeitig. Das System wurde vor einer massiven API-Rechnung durch einen ironischen Mechanismus bewahrt: Der Speicherverbrauch jeder Instanz (Bun → React → TUI) brachte den Rechner zum Stillstand, bevor die Kosten eskalieren konnten.
Die Lehre für Hook-Entwickler: SessionStart-Hooks müssen idempotent sein. Wenn Ihr Hook Prozesse startet, dürfen diese Prozesse nicht denselben Hook auslösen. Eine Guard-Variable, eine PID-Datei oder ein Umgebungs-Flag verhindert die Rekursion.
Was das bedeutet
Das Quellcode-Leak bestätigte, was Praktiker aus dem Verhalten abgeleitet hatten: Claude Code ist kein dünner Wrapper um einen API-Aufruf. Es ist ein substanzielles Engineering-System mit Sicherheitsschichten, Leistungsoptimierungen, Verhaltensanpassungen und unveröffentlichten Funktionen, die die Produkt-Roadmap signalisieren.
Für Harness-Entwickler werden die wichtigsten Implikationen im Under-the-Hood-Abschnitt des Guides behandelt. Für alle anderen bietet das Quellcode-Leak seltene Einblicke in die tatsächliche Funktionsweise eines produktiven KI-Tools — nicht wie das Marketing es beschreibt, sondern wie der Code es implementiert.
Die wichtigste Erkenntnis ist zugleich die einfachste: Das System ist komplexer als es erscheint, und diese Komplexität existiert aus guten Gründen. Die 23 Bash-Sicherheitsprüfungen existieren, weil 23 Angriffsvektoren entdeckt wurden. Der Autocompact-Circuit-Breaker existiert, weil täglich 250.000 API-Aufrufe verschwendet wurden. Das Undercover-Modul existiert, weil Codenamen durchsickern. Hinter jeder Zeile defensiven Codes steckt eine Geschichte.
Quellen
Häufig gestellte Fragen
Ist der Claude Code-Quellcode noch verfügbar?
Nein. Anthropic hat die betroffene npm-Paketversion kurz nach Entdeckung der Source Maps zurückgezogen. Die Analyse in diesem Beitrag basiert auf der Community-Dokumentation des Quellcodes vor seiner Entfernung.
Beeinträchtigt das Quellcode-Leak die Sicherheit von Claude Code?
Die sicherheitsrelevanten Erkenntnisse (Bash-Validierung, Berechtigungssystem) beschreiben Abwehrmechanismen, keine Schwachstellen. Zu wissen, wie die Bash-Sicherheitsprüfungen funktionieren, macht sie nicht einfacher zu umgehen — die Prüfungen sind deterministisch, nicht auf Verschleierung angewiesen.
Sollte ich aufgrund dieser Erkenntnisse meine Nutzung von Claude Code ändern?
Die handlungsrelevanteste Erkenntnis betrifft die Fragilität des Prompt-Caches. Wenn Sie CLAUDE.md, Rules-Dateien oder MCP-Konfigurationen mitten in einer Sitzung ändern, brechen Sie den Prompt-Cache. Legen Sie Ihre Konfiguration vor Beginn einer Sitzung fest.
Was ist KAIROS?
Eine unveröffentlichte autonome Agenten-Funktion, die im Quellcode gefunden wurde. Sie umfasst persistentes Gedächtnis, nächtliche Destillation und Hintergrundverarbeitung. Sie ist durch Feature-Gates gesperrt und für Benutzer nicht verfügbar.
-
Claude Code Source Analysis: Bun Source Map Leak. März 2026. Vollständig lesbarer Quellcode über
.map-Dateien im npm-Paket aufgrund eines bekannten Bun-Build-Bugs offengelegt. ↩↩↩↩↩↩↩↩↩↩ -
Anatomy of a Claw: 84 Hooks as an Orchestration Layer. Blake Crosley, Februar 2026. ↩
-
Claude Code Source Deep Dive: Architecture Internals. März 2026. Technische Analyse von Koordinator-Modus, Prompt-Cache-Erkennung und Anti-Distillation-Abwehr. ↩↩↩
-
Claude Code Auto Mode Documentation. Auto-Modus-Architektur: Klassifikator-basiertes Berechtigungssystem, Circuit-Breaker-Schwellenwerte. ↩
-
Claude Code Fork Bomb Incident. März 2026. Exponentielles Spawning durch SessionStart-Hook, gerettet durch Speichererschöpfung. ↩