{"id":1121,"date":"2026-04-02T07:14:30","date_gmt":"2026-04-02T05:14:30","guid":{"rendered":"https:\/\/vittrup-graversen.dk\/?p=1121"},"modified":"2026-04-02T07:14:30","modified_gmt":"2026-04-02T05:14:30","slug":"claude-codes-kildekode-laekket-via-npm-og-det-afsloerer-anthropics-hemmelige-planer","status":"publish","type":"post","link":"https:\/\/vittrup-graversen.dk\/index.php\/2026\/04\/02\/claude-codes-kildekode-laekket-via-npm-og-det-afsloerer-anthropics-hemmelige-planer\/","title":{"rendered":"Claude Codes kildekode l\u00e6kket via npm \u2014 og det afsl\u00f8rer Anthropics hemmelige planer"},"content":{"rendered":"\n<p>Den 31. marts 2026 kl. 4 om morgenen opdagede sikkerhedsforskeren Chaofan Shou noget bem\u00e6rkelsesv\u00e6rdigt: <strong>hele Claude Codes kildekode<\/strong> l\u00e5 frit tilg\u00e6ngeligt p\u00e5 npm-registret. En 59,8 MB JavaScript source map-fil (<code>cli.js.map<\/code>) var ved en fejl blevet inkluderet i version 2.1.88 af <code>@anthropic-ai\/claude-code<\/code>-pakken \u2014 og den pegede direkte p\u00e5 et ukrypteret zip-arkiv p\u00e5 Anthropics Cloudflare R2-storage.<\/p>\n\n\n\n<p>Inden for timer var de n\u00e6sten 2.000 TypeScript-filer og over 512.000 linjer kode spejlet p\u00e5 GitHub, forket over 41.500 gange og dissekeret af tusindvis af udviklere verden over. <a href=\"https:\/\/github.com\/ultraworkers\/claw-code\" target=\"_blank\" rel=\"noopener\">Et af de mest prominente repositories<\/a> satte rekord som det hurtigste GitHub-projekt nogensinde til at runde 50.000 stjerner \u2014 p\u00e5 blot to timer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">En build-fejl med milliard-konsekvenser<\/h2>\n\n\n\n<p>Source map-filer bruges normalt til debugging: de mapper bundlet, minificeret kode tilbage til den originale kildekode. De h\u00f8rer aldrig hjemme i en produktionspakke. Men en menneskelig fejl i Anthropics build-pipeline bet\u00f8d, at filen blev publiceret til det offentlige npm-register sammen med resten af pakken.<\/p>\n\n\n\n<p>Anthropic bekr\u00e6ftede h\u00e6ndelsen i en erkl\u00e6ring til <a href=\"https:\/\/www.theregister.com\/2026\/03\/31\/anthropic_claude_code_source_code\/\" target=\"_blank\" rel=\"noopener\">The Register<\/a>: <em>&#8220;Earlier today, a Claude Code release included some internal source code. No sensitive customer data or credentials were involved or exposed. This was a release packaging issue caused by human error, not a security breach.&#8221;<\/em><\/p>\n\n\n\n<p>Det kan lyde uskadeligt. Men if\u00f8lge <a href=\"https:\/\/venturebeat.com\/technology\/claude-codes-source-code-appears-to-have-leaked-heres-what-we-know\" target=\"_blank\" rel=\"noopener\">VentureBeat<\/a> har Claude Code alene en estimeret \u00e5rlig oms\u00e6tning (ARR) p\u00e5 2,5 milliarder dollar. For Anthropic, der samlet k\u00f8rer med en annualiseret oms\u00e6tning p\u00e5 19 milliarder dollar, er l\u00e6kket langt mere end en pinlig fejl \u2014 det er et strategisk tab af intellektuel ejendom.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hvad kildekoden afsl\u00f8rer<\/h2>\n\n\n\n<p>Claude Code er ikke bare en wrapper omkring en LLM-API. Den l\u00e6kkede kode afsl\u00f8rer et <strong>komplekst, gennemdesignet system<\/strong> med flere lag. Her er de vigtigste fund:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Arkitektur og omfang<\/h3>\n\n\n\n<p>Kodebasen best\u00e5r af ca. 1.900 TypeScript-filer med over 512.000 linjer kode. Den k\u00f8rer p\u00e5 <strong>Bun<\/strong> (ikke Node.js), bruger <strong>React med Ink<\/strong> til terminal-UI og har en modul\u00e6r arkitektur med omkring 40 indbyggede tools og 50 slash-kommandoer. Alene tool-systemet fylder 29.000 linjer, og query-engineen \u2014 hjernen der h\u00e5ndterer alle LLM-kald, streaming og caching \u2014 fylder 46.000 linjer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">KAIROS: Den altid-t\u00e6ndte agent<\/h3>\n\n\n\n<p>Et af de mest sp\u00e6ndende fund er <strong>KAIROS<\/strong> \u2014 opkaldt efter det gr\u00e6ske ord for &#8220;det rette \u00f8jeblik&#8221;. Det er en feature flag, der n\u00e6vnes over 150 gange i koden, og som beskriver en <strong>persistent daemon-tilstand<\/strong>. Her kan Claude Code k\u00f8re i baggrunden, selv n\u00e5r terminalen er lukket, og proaktivt overv\u00e5ge om der er handlinger, brugeren b\u00f8r se.<\/p>\n\n\n\n<p>KAIROS bruger et filbaseret hukommelsessystem, hvor Claude Code gemmer kontekst om brugeren, projektet og pr\u00e6ferencer p\u00e5 tv\u00e6rs af sessioner. If\u00f8lge et skjult prompt i koden er m\u00e5let at <em>&#8220;have a complete picture of who the user is, how they&#8217;d like to collaborate with you, what behaviors to avoid or repeat, and the context behind the work.&#8221;<\/em> Det minder i \u00f8vrigt ikke s\u00e5 lidt om <a href=\"https:\/\/vittrup-graversen.dk\/index.php\/2026\/03\/25\/claude-kan-nu-styre-din-mac-mens-du-er-vaek-anthropic-skruer-op-for-computer-use\/\">Anthropics Computer Use-vision<\/a>, bare for kodning specifikt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">AutoDream: AI der dr\u00f8mmer<\/h3>\n\n\n\n<p>Tilknyttet KAIROS er <strong>AutoDream<\/strong> \u2014 et system der aktiveres n\u00e5r brugeren er inaktiv eller manuelt sender agenten i dvale. Her udf\u00f8rer Claude Code hvad Anthropic kalder en <em>&#8220;reflective pass over your memory files&#8221;<\/em>: den scanner dagens transcripts for ny viden, konsoliderer den med eksisterende hukommelse, fjerner duplikater og modsigelser, og pruner for\u00e6ldet information. Kort sagt: AI&#8217;en <strong>dr\u00f8mmer<\/strong> og organiserer sine erindringer, pr\u00e6cis som vi mennesker g\u00f8r under s\u00f8vn.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Undercover Mode<\/h3>\n\n\n\n<p>Et af de mest diskuterede fund er <strong>Undercover Mode<\/strong>. Koden afsl\u00f8rer, at Anthropic bruger Claude Code til &#8220;stealth&#8221;-bidrag til offentlige open source-repositories. Et skjult systemprompt advarer modellen: <em>&#8220;You are operating UNDERCOVER&#8230; Your commit messages&#8230; MUST NOT contain ANY Anthropic-internal information. Do not blow your cover.&#8221;<\/em><\/p>\n\n\n\n<p>Funktionen sikrer, at interne modelnavne som &#8220;Tengu&#8221;, &#8220;Capybara&#8221; eller &#8220;Fennec&#8221; aldrig l\u00e6kker ud i offentlige git-logs. Det rejser naturligvis sp\u00f8rgsm\u00e5l om <strong>gennemsigtighed i open source<\/strong> \u2014 selvom det sandsynligvis prim\u00e6rt bruges til intern dogfooding.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Buddy: Et AI-k\u00e6ledyr i terminalen<\/h3>\n\n\n\n<p>I den mere kuri\u00f8se afdeling finder vi <strong>Buddy<\/strong> \u2014 et Tamagotchi-lignende k\u00e6ledyr med stats som &#8220;CHAOS&#8221; og &#8220;SNARK&#8221;, der lever i terminalen. Det lyder excentrisk, men det afspejler en bevidst strategi: Anthropic bygger <strong>personlighed<\/strong> ind i produktet for at \u00f8ge brugerengagement og &#8220;stickiness&#8221;.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Interne modelnavne og performance-tal<\/h3>\n\n\n\n<p>Koden afsl\u00f8rer ogs\u00e5 Anthropics interne model-roadmap: <strong>Capybara<\/strong> er kodenavnet for en Claude 4.6-variant, <strong>Fennec<\/strong> mapper til Opus 4.6, og den endnu uudgivne <strong>Numbat<\/strong> er stadig under test. Interne kommentarer viser, at Capybara v8 har en <strong>29-30% false claims rate<\/strong> \u2014 en faktisk forv\u00e6rring sammenlignet med 16,7% i v4. Det giver et sj\u00e6ldent indblik i, hvor sv\u00e6rt det stadig er at bygge p\u00e5lidelige <a href=\"https:\/\/vittrup-graversen.dk\/index.php\/2026\/03\/31\/ai-modeller-der-snyder-ny-forskning-afslorer-naesten-700-tilfaelde-af-bevidst-bedrag\/\">AI-agenter der ikke snyder<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">GitHub-reaktionen: Fra arkiv til clean-room rewrite<\/h2>\n\n\n\n<p>Det <a href=\"https:\/\/github.com\/ultraworkers\/claw-code\" target=\"_blank\" rel=\"noopener\">mest kendte repository<\/a> startede som et direkte arkiv af den l\u00e6kkede kode, men er siden blevet konverteret til et <strong>clean-room Python- og Rust-rewrite<\/strong> af sikkerhedshensyn. Udvikleren bag \u2014 den koreanske AI-forsker Sigrid Jin, som if\u00f8lge Wall Street Journal brugte 25 milliarder Claude Code-tokens sidste \u00e5r \u2014 byggede en Python-port fra bunden ved hj\u00e6lp af OpenAI&#8217;s Codex-orkestreringsv\u00e6rkt\u00f8j.<\/p>\n\n\n\n<p>Der florerer dog stadig talrige forks med den originale kildekode, og et helt website (<a href=\"https:\/\/www.ccleaks.com\/\" target=\"_blank\" rel=\"noopener\">ccleaks.com<\/a>) er dedikeret til at dokumentere Claude Codes skjulte funktioner. Det er, som Ars Technica bem\u00e6rker, ikke f\u00f8rste gang der er fors\u00f8gt reverse engineering af Claude Code \u2014 men aldrig med denne <strong>totalitet<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sikkerhedsrisikoen<\/h2>\n\n\n\n<p>For Claude Code-brugere er l\u00e6kket ikke bare en nysgerrig nyhed. Med den eksponerede kode kan ondsindede akt\u00f8rer nu studere den pr\u00e6cise logik bag <strong>sikkerhedsguardrails og permission-prompts<\/strong> for at finde veje udenom. S\u00e6rligt Hooks og MCP-server-orkestreringen giver et detaljeret kort over, hvordan man potentielt kan narre Claude Code til at eksekvere baggrundkommandoer.<\/p>\n\n\n\n<p>Timingen var ekstra uheldig: blot timer f\u00f8r l\u00e6kket ramte en <strong>supply chain-angreb axios-pakken p\u00e5 npm<\/strong> (version 1.14.1 og 0.30.4), der indeholdt en Remote Access Trojan. Brugere der installerede Claude Code via npm den 31. marts mellem kl. 00:21 og 03:29 UTC b\u00f8r tjekke deres lockfiles for disse versioner.<\/p>\n\n\n\n<p>Anthropic anbefaler nu at migrere til deres <strong>native installer<\/strong> (standalone binary) fremfor npm-installationen, netop for at undg\u00e5 den volatile npm-afh\u00e6ngighedsk\u00e6de.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hvad det betyder for AI-kodningsv\u00e6rkt\u00f8jer<\/h2>\n\n\n\n<p>L\u00e6kket bekr\u00e6fter det, mange allerede anede: Claude Code er ikke bare et chat-interface med et API-kald bagved. Det er et <strong>fuldt operativsystem for softwareudvikling<\/strong> \u2014 med multi-agent-orkestering, persistent hukommelse, IDE-broer via JWT-autentificering, og et tool-system s\u00e5 sofistikeret som mange selvst\u00e6ndige softwareprodukter.<\/p>\n\n\n\n<p>For konkurrenter som <a href=\"https:\/\/vittrup-graversen.dk\/index.php\/2026\/03\/30\/googles-gemini-code-assist-faar-agent-mode-en-gratis-ai-kodnings-copilot-for-alle\/\">Googles Gemini Code Assist<\/a>, Cursor og andre er dette en uplanlagt gave: en detaljeret arkitekturskitse over markedslederens interne opbygning. Som VentureBeat formulerer det: <em>&#8220;The race to build the next generation of autonomous agents has just received an unplanned, $2.5 billion boost in collective intelligence.&#8221;<\/em><\/p>\n\n\n\n<p>Men det rejser ogs\u00e5 et bredere sp\u00f8rgsm\u00e5l for hele branchen: Hvis selv Anthropic \u2014 et firma der <a href=\"https:\/\/vittrup-graversen.dk\/index.php\/2026\/03\/27\/fire-store-claude-opdateringer-paa-tre-uger\/\">konstant itererer p\u00e5 sikkerhed og tillid<\/a> \u2014 kan lave en s\u00e5 fundamental build-fejl, hvad siger det s\u00e5 om modenhedsniveauet i AI-tooling generelt?<\/p>\n\n\n\n<p>For os der bygger med og oven p\u00e5 disse v\u00e6rkt\u00f8jer, er der \u00e9n klar takeaway: <strong>tjek jeres build-pipelines<\/strong>. En enkelt fejlkonfigureret <code>.npmignore<\/code> eller <code>files<\/code>-felt i <code>package.json<\/code> kan eksponere alt. Og som Anthropic netop har demonstreret: selv de bedste kan komme galt af sted.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kilder<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.theregister.com\/2026\/03\/31\/anthropic_claude_code_source_code\/\" target=\"_blank\" rel=\"noopener\">Anthropic goes nude, exposes Claude Code source by accident<\/a> \u2014 The Register, 31. marts 2026<\/li>\n<li><a href=\"https:\/\/venturebeat.com\/technology\/claude-codes-source-code-appears-to-have-leaked-heres-what-we-know\" target=\"_blank\" rel=\"noopener\">Claude Code&#8217;s source code appears to have leaked: here&#8217;s what we know<\/a> \u2014 VentureBeat, 31. marts 2026<\/li>\n<li><a href=\"https:\/\/arstechnica.com\/ai\/2026\/04\/heres-what-that-claude-code-source-leak-reveals-about-anthropics-plans\/\" target=\"_blank\" rel=\"noopener\">Here&#8217;s what that Claude Code source leak reveals about Anthropic&#8217;s plans<\/a> \u2014 Ars Technica, 1. april 2026<\/li>\n<li><a href=\"https:\/\/dev.to\/gabrielanhaia\/claude-codes-entire-source-code-was-just-leaked-via-npm-source-maps-heres-whats-inside-cjo\" target=\"_blank\" rel=\"noopener\">Claude Code&#8217;s Entire Source Code Was Just Leaked via npm Source Maps<\/a> \u2014 DEV Community, 31. marts 2026<\/li>\n<li><a href=\"https:\/\/github.com\/ultraworkers\/claw-code\" target=\"_blank\" rel=\"noopener\">ultraworkers\/claw-code<\/a> \u2014 GitHub repository<\/li>\n<\/ul>\n\n\n\n<p><em>Denne artikel er skrevet i samarbejde med AI, og efterf\u00f8lgende redigeret af et rigtigt menneske \ud83d\ude42<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Anthropic l\u00e6kkede ved en fejl hele Claude Codes kildekode via en npm source map-fil. 512.000 linjer kode afsl\u00f8rer hemmelige features som KAIROS, AutoDream og Undercover Mode.<\/p>\n","protected":false},"author":1,"featured_media":1123,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[24,8],"tags":[23],"class_list":["post-1121","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agentic-engineering","category-ai","tag-claudecode"],"acf":[],"_links":{"self":[{"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/posts\/1121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/comments?post=1121"}],"version-history":[{"count":1,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/posts\/1121\/revisions"}],"predecessor-version":[{"id":1122,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/posts\/1121\/revisions\/1122"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/media\/1123"}],"wp:attachment":[{"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/media?parent=1121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/categories?post=1121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/tags?post=1121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}