19 Punkte von GN⁺ 29 일 전 | 3 Kommentare | Auf WhatsApp teilen
  • Nachdem Anthropic ein npm-Paket mit enthaltenen Source Maps ausgeliefert hatte, wurde der gesamte Code von Claude Code offengelegt, wodurch alle internen Funktionen und experimentellen Flags sichtbar wurden
  • Der Code enthält unter anderem das Einfügen gefälschter Tools zur Verhinderung von Modellnachahmung (anti-distillation), einen Undercover-Modus zum Verbergen der KI-Identität sowie eine Frustration-Regex zur Erkennung von Beschimpfungen
  • Es gibt eine Struktur für Native-Client-Attestierung und Hash-Prüfung auf DRM-Niveau, die so ausgelegt ist, dass inoffizielle Tools am API-Zugriff gehindert werden
  • Interne Kommentare zeigen verschiedene experimentelle Funktionen, darunter 250.000 fehlgeschlagene API-Aufrufe pro Tag, einen unvollständigen autonomen Agentenmodus KAIROS und ein Tamagotchi-artiges Begleitersystem
  • Das Leck gilt als Offenlegung der Kernproduktstruktur und Roadmap von Anthropic; als mögliche Ursache wird ein Source-Map-Bug in der Bun-Runtime vermutet

Interne Struktur von Claude Code durch Source-Map-Leck sichtbar

  • Nachdem Anthropic ein npm-Paket mit enthaltenen Source Maps ausgeliefert hatte, wurde der komplette Quellcode von Claude Code offengelegt
    • Das Paket wurde später gelöscht, doch der Code wurde an mehreren Orten gespiegelt und damit zum Analyseobjekt
    • Es war das zweite Leck innerhalb einer Woche; zuvor war bereits ein Modellspezifikationsdokument offengelegt worden
    • Der Vorfall geschah kurz nachdem Anthropic die Nutzung interner APIs durch Drittanbieter-Tools juristisch untersagt hatte
  • Anti-distillation: Einfügen gefälschter Tools zur Verhinderung von Nachahmung

    • In claude.ts gibt es das Flag ANTI_DISTILLATION_CC; wenn es aktiv ist, wird API-Anfragen anti_distillation: ['fake_tools'] hinzugefügt, um gefälschte Tool-Definitionen in den System-Prompt einzuschleusen
      • Ziel ist es, Versuche zu verunreinigen, den API-Traffic abzugreifen und damit das Modell nachzubilden
      • Es funktioniert nur in primären CLI-Sitzungen, in denen das GrowthBook-Flag tengu_anti_distill_fake_tool_injection aktiviert ist
    • In betas.ts gibt es als zweiten Mechanismus einen serverseitigen Schutz auf Basis von Zusammenfassungen
      • Text zwischen Tool-Aufrufen wird zusammengefasst und zusammen mit einer kryptografischen Signatur zurückgegeben, sodass er später wiederhergestellt werden kann
      • Selbst wenn externer Traffic aufgezeichnet wird, ist der vollständige Inferenzprozess nicht sichtbar
    • Diese Funktion erfordert das gleichzeitige Erfüllen mehrerer Bedingungen und kann durch Entfernen von Feldern über einen MITM-Proxy neutralisiert werden
      • Sie kann über die Umgebungsvariable CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS deaktiviert werden
      • Wegen der Bedingung USER_TYPE === 'ant' ist sie nur für interne Anthropic-Nutzer gedacht
    • In der Praxis ähnelt die Schutzmaßnahme eher einer rechtlichen Einschränkung als einer technischen Abwehr
  • Undercover mode: Modus zum Verbergen der KI-Identität

    • undercover.ts entfernt bei Verwendung in externen Repositories interne Anthropic-Codenamen, Slack-Kanäle und die Formulierung „Claude Code“
      • Mit der Formulierung "There is NO force-OFF" ist er nicht deaktivierbar
      • Er kann über die Umgebungsvariable CLAUDE_CODE_UNDERCOVER=1 zwangsweise aktiviert werden
    • In externen Builds wird die Funktion durch eine bedeutungslose Rückgabe entfernt, was eine Einwegstruktur erzeugt
    • Dadurch wird bei Beiträgen von Anthropic-Mitarbeitern zu Open Source nicht ausgewiesen, dass der Code von einer KI geschrieben wurde
      • Das Verschleiern interner Informationen ist nachvollziehbar, erzeugt aber zugleich den Effekt, dass sich die KI als Mensch tarnt
  • Frustration regex: Regex zur Erkennung von Beschimpfungen

    • In userPromptKeywords.ts sind Regex-Muster enthalten, die Unzufriedenheit und Beschimpfungen von Nutzern erkennen
      • Erkannt werden verschiedene Ausdrücke wie „wtf“, „this sucks“ oder „fuck you“
    • Das zeigt die Ironie, dass ein LLM-Unternehmen für Stimmungsanalyse reguläre Ausdrücke einsetzt,
      • zugleich ist es bei Kosten und Geschwindigkeit effizienter als ein LLM-Aufruf
  • Native client attestation: Client-Attestierung unterhalb der JS-Runtime

    • In system.ts ist bei API-Anfragen der Platzhalter cch=00000 enthalten,
      • den der auf Zig basierende native HTTP-Stack von Bun durch einen Hash ersetzt
      • Der Server prüft diesen Hash, um festzustellen, ob es sich um ein offizielles Claude-Code-Binary handelt
    • Das ist die technische Grundlage im Rechtsstreit um OpenCode,
      • denn es wird eine Prüfung auf DRM-Niveau durchgeführt, damit Drittanbieter-Tools die API nicht direkt aufrufen können
    • Allerdings funktioniert dies nicht, wenn das Flag NATIVE_CLIENT_ATTESTATION deaktiviert ist oder
      • CLAUDE_CODE_ATTRIBUTION_HEADER abgeschaltet wird
      • Der Zig-basierte Hash-Ersatz funktioniert nur im offiziellen Bun-Binary, in einer Node-Umgebung nicht
    • Ob der Server falsche Hashes tatsächlich ablehnt, ist unklar,
      • ein Kommentar besagt, dass _parse_cc_header „unknown extra fields“ zulässt
  • 250.000 verschwendete API-Aufrufe

    • Laut einem Kommentar in autoCompact.ts
      • wurden pro Tag rund 250.000 API-Aufrufe in fehlgeschlagenen Schleifen verschwendet
      • In 1.279 Sitzungen traten mehr als 50 aufeinanderfolgende Fehlschläge auf, maximal 3.272
    • Die Korrektur bestand aus nur drei Zeilen: Mit MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3
      • wird die Auto-Compact-Funktion nach drei aufeinanderfolgenden Fehlschlägen deaktiviert
  • KAIROS: Nicht veröffentlichter autonomer Agentenmodus

    • Im gesamten Code gibt es einen Feature-Gate-Modus namens KAIROS
      • Ausgehend von main.tsx wird vermutet, dass es sich um eine Funktion für autonome Agenten handelt
      • Enthalten sind der Skill /dream (nächtliche Speicherdestillation), GitHub-Webhooks, ein Hintergrund-Daemon und ein Cron-Refresh im Fünf-Minuten-Takt
    • Die Implementierung ist unvollständig, doch es gibt bereits eine Struktur auf Basis ständig laufender Hintergrundagenten
  • Weitere Erkenntnisse

    • Aprilscherz-Easter-Egg: In buddy/companion.ts existiert ein Begleitersystem im Tamagotchi-Stil
      • Mit 18 Kreaturenarten, Seltenheitsgraden, RPG-Stats und einer „shiny“-Version mit 1-%-Wahrscheinlichkeit
      • Die Auswahl wird über einen PRNG auf Basis der Nutzer-ID bestimmt; Zeichenkettenkodierung dient dazu, Build-Prüfungen zu umgehen
    • Die Terminal-Rendering-Engine (ink/screen.ts, ink/optimizer.ts)
      • implementiert einen ASCII-Puffer auf Basis von Int32Array, Stilmetadaten per Bitmaske und einen Cache mit 50-facher Leistungssteigerung
    • Die Sicherheitsprüfung (bashSecurity.ts) besteht aus 23 Stufen,
      • darunter das Blockieren von Zsh-Built-ins, das Verhindern der Umgehung via =curl sowie das Unterbinden von Unicode-Zero-Width- und Nullbyte-Injektionen
      • ein seltener Fall mit einem spezifisch auf Zsh ausgerichteten Bedrohungsmodell
    • Das Prompt-Cache-Management (promptCacheBreakDetection.ts)
      • verfolgt 14 Vektoren für Cache-Beschädigungen und verwendet beim Moduswechsel eine „sticky latch“, um den Cache beizubehalten
      • Es gibt einen Kommentar zu DANGEROUS_uncachedSystemPromptSection()
      • was eine auf Senkung der Tokenkosten ausgerichtete Designphilosophie widerspiegelt
    • Der Multi-Agent-Koordinator (coordinatorMode.ts)
      • verwendet keinen Code, sondern einen promptbasierten Orchestrierungsalgorithmus
      • mit Richtlinien wie „keine Genehmigung schwacher Arbeit“ und „keine Delegation ohne Verständnis“
    • Es gibt auch Probleme mit der Codequalität
      • print.ts umfasst 5.594 Zeilen, eine einzelne Funktion darin sogar 3.167 Zeilen
      • Für HTTP-Anfragen wird Axios verwendet, zeitlich nahe am jüngsten Vorfall mit einer bösartigen npm-Version
  • Bedeutung und Auswirkungen

    • Anders als bei den öffentlichen SDKs von Google Gemini CLI oder OpenAI Codex
      • legt dieses Leck die vollständige interne Struktur von Anthropics Kernprodukt offen
    • Der größte Schaden liegt weniger im Code selbst als in der Offenlegung von Feature Flags und der Roadmap
      • Strategische Funktionen wie KAIROS und Anti-distillation wurden für Wettbewerber sichtbar
    • Anthropic hat im vergangenen Jahr Bun übernommen, und Claude Code läuft auf Bun
      • Als mögliche Ursache gilt ein Source-Map-Bug von Bun (oven-sh/bun#28001)
      • Das Problem, dass Source Maps selbst im Produktionsmodus offengelegt werden, ist bislang ungelöst
    • Letztlich hat Anthropic damit durch einen Fehler in der eigenen Toolchain das eigene Produkt geleakt
      • wie es eine Reaktion auf Twitter formulierte: ein ironischer Vorfall, bei dem „beim Ausliefern von KI-generiertem Code der von einer KI verursachte Bug den Code nach außen dringen ließ“

3 Kommentare

 
kaydash 27 일 전

Klug.

 
bbulbum 28 일 전

War das ein Problem, das beim Committen mit KI entstanden ist..?!

 
GN⁺ 29 일 전
Hacker-News-Kommentare
  • Es gibt viele Kommentare, die missverstehen, dass „Undercover mode“ nur eine Funktion zum Verbergen interner Informationen sei
    Im eigentlichen Prompt steht jedoch ausdrücklich, dass in Commit-Messages oder PR-Beschreibungen niemals „Claude Code“ oder Hinweise auf AI enthalten sein dürfen
    Es wirkt also wie eine Funktion, die sich wie ein Mensch verhält und ihre Identität verbirgt
    Besonders bedenklich ist, dass solche Anweisungen offenbar beim Beitragen zu öffentlichen Repositories gelten
    Link zum betreffenden Code

    • Jedes Mal, wenn Claude als Mitautor eines Commits auftaucht, empfinde ich das als peinlich
      Die Git-Historie dient dazu, Verantwortung und Eigentümerschaft nachzuverfolgen, nicht als Ort, um eine Liste verwendeter Tools festzuhalten
      Dann müsste ich mich ja auch fragen, ob ich Linter oder meine IDE als Mitautoren in meine PRs eintragen sollte
    • Ich denke, es gibt sicher Leute wie mich, die solche Anweisungen bereits in die Datei CLAUDE.md aufgenommen haben
      Im Grunde ist das ein Problem, das sich mit einer einzigen kleinen Konfigurationszeile lösen lässt
    • Es geht wohl weniger darum, sich als Mensch auszugeben, sondern eher darum, zu verhindern, dass Claude verspottet wird, wenn die Code-Qualität schlecht ist
      Letztlich liegt die Verantwortung ohnehin beim menschlichen Entwickler
    • Das Ziel des Codes ist zwar, Informationslecks zu verhindern, aber die tatsächliche Implementierung ist breiter angelegt als das
      Vielleicht wurde sie bewusst so weit gefasst, um das Ziel zu erreichen, oder es gibt eine verborgene Absicht
      Trotzdem ist es sinnvoller, den Wortlaut „wie ein menschlicher Entwickler schreiben“ genau so zu lesen, statt sofort zu behaupten, man wolle sich „als Mensch ausgeben“
      Gerade wenn man skeptisch ist, wirkt faktenbasierte Kritik überzeugender
    • Ich habe in PRs auch schon den Hinweis „coauthored by Claude Code“ gesehen
      Ehrlich gesagt will ich so etwas nicht
  • Durch die jüngsten Mythos-Leaks und die Offenlegung der gesamten Claude-Code-Codebasis wächst das Vertrauensproblem weiter
    Jeder einzelne Vorfall ist für sich interessant, aber in Serie wirkt es wie ein Muster
    Am Ende führt das zur Frage: „Kann man solchen Tools im eigenen Codebestand weiterhin vertrauen?“

    • Ich halte diese Sorge für übertrieben
      Ich zahle weiterhin 140 Dollar und nutze CC
      Eher sehe ich solche Leaks als etwas, das mit Anthropics ethischem Modell zusammenhängt — als würde das Unternehmen durch Fehler wachsen
    • Ich glaube nicht, dass es große Auswirkungen hat
      Der eigentliche Wert steckt nicht im Code, sondern im Zugang zum Modell
      Die Codebasis ist chaotisch, aber der abonnierbare Modellzugang bleibt attraktiv, deshalb nutze ich Claude Code jeden Tag
    • Ehrlich gesagt wirkt Claude selbst wie vibe-coded slop
      Sowohl im Web-UI als auch in CC gibt es viel zu viele kleine Fehler
      Selbst die tmux-Steuerung funktioniert nicht wie dokumentiert, und Sessions werden auch nicht aufgeräumt
      Trotzdem mag ich das Produkt weiterhin — schlampig, aber charmant
  • Mein Fork von anthropics/claude-code auf GitHub wurde per DMCA entfernt
    Obwohl er den geleakten Code gar nicht enthielt, wurde das gesamte Netzwerk mit 8,1K Repositories pauschal blockiert
    Link zur DMCA-Mitteilung
    Dass Anthropic glaubt, die Glocke läuten und dann wieder anhalten zu können, ist töricht

    • Die Anwaltskosten laufen ohnehin schon auf, also nutzt man eben das Legal-Team
      Den Leak kann man nicht rückgängig machen, daher wäre es realistischer, ihn gleich in die Produkt-Roadmap einzupreisen
  • Ich war überrascht zu sehen, dass Dinge, die Unternehmen früher als Geschäftsgeheimnisse bezeichnet hätten, direkt im Quellcode stehen
    Sogar geschäftlicher Hintergrund ist in Kommentaren festgehalten
    Zum Beispiel werden operative Daten wie „250.000 verschwendete API-Aufrufe pro Tag“ offen genannt

    • Kommentare sind faktisch der zentrale Hack für Agent Coding
      Agenten lesen Kommentare besser als Dokumentation und können sie daher fast wie Langzeitgedächtnis nutzen
    • Die meisten großen privaten Codebasen sehen ähnlich aus
      Anthropic hat nur nicht damit gerechnet, dass sie geleakt werden
    • Das sind gute Kommentare, die erklären, warum eine Konfiguration existiert
      Für Wettbewerber ist das kaum wertvolle Information
    • Es ist praktisch, möglichst viele Informationen direkt in den Code zu schreiben
      Man hat vermutlich schlicht nicht mit einem Leak gerechnet
    • Den gesamten Kontext in den Code zu packen, wirkt wie der Endpunkt agentenfreundlichen Designs
      Dann braucht man keine separate Dokumentation mehr
  • Einige Funktionen sind hinter der Bedingung process.env.USER_TYPE === 'ant' verborgen
    Das heißt, Anweisungen für Anthropic-Mitarbeiter sind strenger und ehrlicher — eine interessante Struktur

  • Der HN-Originalpost ist ohnehin schon populär, daher stellt sich die Frage, ob man wirklich noch zusätzlich einen Blog mit HN-Kommentarzusammenfassungen veröffentlichen muss

    • In diesem Blog sieht man Spuren, dass Teile von AI geschrieben wurden
    • Andere meinen, eine Zusammenfassung sei nötig gewesen, weil der Originalpost unübersichtlich war
    • Die HN-Kultur neigt dazu, selbstreferenziell zu werden
  • Ich halte Claude Code immer noch für großartig
    Es gibt für mich keinen Grund, zu OpenAI oder Gemini zu wechseln

    • Ich war von Claude Code enttäuscht und zu Codex gewechselt, aber für Web- und Mobile-Entwicklung funktioniert es fast genauso gut
  • Der Name „Undercover mode“ und die Formulierung „Claude Code nicht erwähnen“ klingen unheimlich, aber wenn man sich den tatsächlichen Code ansieht, scheint es stärker um den Schutz interner Codenamen zu gehen
    Quellcode-Link

    • Codenamen zu schützen ist nachvollziehbar, aber Spuren AI-generierter Inhalte zu entfernen ist etwas anderes
      Das wirkt wie eine ziemlich wichtige Veränderung
    • Entscheidend ist die Formulierung: „Schreibe Commit-Messages wie ein menschlicher Entwickler“
    • Dass Claude-bezogene Formulierungen als „BAD example“ verboten werden, zeigt klar, dass die Absicht darin besteht, AI-Exposition zu verhindern
    • Vermutlich sollen Entwickler AI-Nutzung in Unternehmensprojekten weniger auffällig machen
    • Bei Open-Source-Beiträgen scheint es so konzipiert zu sein, dass Claude seine Identität nicht automatisch preisgibt
  • Die Idee von „Anti-distillation: gefälschte Tools einbauen, um Kopieren zu verhindern“ ist interessant
    Es wäre eine ironische Wendung, wenn chinesische Wettbewerber diese gefälschten Tools am Ende tatsächlich implementieren würden

    • Bald wird es wahrscheinlich Klonversionen wie zAI, Qwen, Minimax CC geben
      Heute liegen die Wettbewerbsvorteile eher bei Daten und Inferenzkosten als bei den Modellen selbst
      Darüber würde ich gern noch weiter diskutieren
    • Diese ganze Distillation-Debatte wirkt an sich schon hohl
      Schließlich haben auch diese Unternehmen ihre Imperien mit fremden Daten aufgebaut
    • Tatsächlich destillieren (kopieren) inzwischen beide Seiten voneinander
      Die Qualität stagniert, und der wirkliche Unterschied liegt in der Reife des Toolings
      Durch diesen Leak könnte sich dieser Abstand verringern
    • Gefälschte Tools sind letztlich nur Köder, die sich per Regex herausfiltern lassen
      Außerdem nimmt Distillation derzeit ohnehin eher ab
    • Diese Haltung nach dem Motto „Wir haben die Werke anderer gestohlen, aber ihr dürft unsere nicht stehlen“ ist schon ziemlich ironisch
  • Ich teile einen visuellen Guide, den ich erstellt habe
    ccunpacked.dev