簡而言之: 2026 年 3 月 31 日,Anthropic 公司不小心通過一個配置錯誤的除錯文件,將 Claude Code 的全部源程式碼發佈到了公共 npm 註冊表中。 512,000 行程式碼,1,906 個 TypeScript 文件,44 個隱藏的功能標誌,一個電子寵物。還有一個非常令人不安的問題:這真的是個意外嗎?

  1. 實際發生了什麼

根本原因: .npmignore文件中缺少一行

這是整件事中最令人尷尬、最具啟發性的部分。讓我來梳理一下事情的來龍去脈。

當您將 JavaScript/TypeScript 套件發佈到 npm 時,您的建置工具鏈(Webpack、esbuild、Bun 等)會選擇性地產生來源映射文件,這些檔案副檔名為.map 。它們的唯一用途是除錯:它們彌合了壓縮打包後的生產程式碼和原始可讀原始碼之間的差距。當發生崩潰時,來源映射可以讓堆疊追蹤指向實際的 TypeScript 檔案第 47 行,而不是main.js:1:284729

來源映射僅供內部偵錯使用,絕不應發布給使用者。

您可以透過.npmignore檔案或package.json中的files欄位將它們從 npm 套件中排除。以下是錯誤的簡要說明:

# What Claude Code's .npmignore should have had:
*.map
dist/*.map

# What it apparently had:
# (nothing about .map files)

就是這樣。這就是全部的災難。

但情況更糟。原始碼對映並沒有直接包含原始碼,而是引用了原始碼,指向一個託管在 Anthropic 自有 Cloudflare R2 儲存桶上的.zip檔 URL。這是一個公開可存取的儲存桶,無需身份驗證。

所以完整的鏈條看起來是這樣的:

npm install @anthropic-ai/claude-code
  → downloads package including main.js.map (59.8 MB)
    → .map file contains URL pointing to src.zip
      → src.zip is hosted publicly on Anthropic's R2 bucket
        → anyone can download and unzip 512,000 lines of TypeScript

兩次獨立的配置故障疊在一起。

正如軟體工程師 Gabriel Anhaia 在他的深度分析中所說:“一個配置錯誤的.npmignorepackage.json中的files字段就可能暴露一切。”

麵包因素

還有第三層。 Anthropic 在 2025 年底收購了Bun JavaScript 執行時,而 Claude Code 正是基於它建置的。一個已知的 Bun 漏洞(問題 #28001 ,提交於 2026 年 3 月 11 日)報告稱,即使文件明確指出不應該這樣做,生產版本中仍然會提供來源映射。

這個漏洞存在了20天之久,卻一直無人發現。 Anthropic公司本身收購的工具鏈最終導致了其產品漏洞的暴露。


  1. 時間軸

00:21 UTC — March 31, 2026
Malicious axios versions (1.14.1 / 0.30.4) appear on npm
with an embedded Remote Access Trojan. Unrelated to Anthropic,
but catastrophically bad timing.

~04:00 UTC
Claude Code v2.1.88 is pushed to npm. The 59.8 MB source map
ships with it. The R2 bucket containing all source code is live
and publicly accessible.

04:23 UTC
Chaofan Shou (@Fried_rice), an intern at Solayer Labs,
tweets the discovery with a direct download link.
16 million people descend on the thread.

Next 2 hours
GitHub repositories spring up. The fastest repo in history
to hit 50,000 stars does it in under 2 hours.
41,500+ forks proliferate. DMCA requests begin.

~08:00 UTC
Anthropic pulls the npm package from the registry.
Issues the "human error, not a security breach" statement
to VentureBeat, The Register, CNBC, Fortune, Axios, Decrypt.

Same day
A Python clean-room rewrite appears, legally DMCA-proof.
Decentralized mirrors on Gitlawb go live with the message:
"Will never be taken down."
The code is permanently in the wild.

資料說話

| 指標 | 值 |

|--------|-------|

| 暴露的程式碼行數 | 超過512,000 行|

| TypeScript 檔案 | 1,906 |

| 來源地圖檔案大小 | 59.8 MB |

| GitHub 分支數(峰值)| 41,500+ |

| 最快倉庫的星星數量 | 2 小時內達到 50,000 |

| 隱藏功能標誌 | 44 |

| Claude Code ARR | 25億美元|

|人類總年度經常性收入 | 190億美元|

| 原文推文瀏覽量 | 1600萬|


  1. 安全警報:axios RAT

等等。如果你早上更新了 Claude Code,請先閱讀以下內容。

與洩密事件同時發生,但與洩密事件完全無關的是,npm 遭受了一次真正的供應鏈攻擊。被廣泛使用的axios HTTP 庫的惡意版本被發布:

兩者都包含嵌入式遠端存取木馬(RAT) 。惡意依賴項名為plain-crypto-js

如果您在 2026 年 3 月 31 日 00:21 UTC 至 03:29 UTC 期間執行了npm install或更新了 Claude Code:

# Check your lockfiles immediately:
grep -r "1.14.1\|0.30.4\|plain-crypto-js" package-lock.json
grep -r "1.14.1\|0.30.4\|plain-crypto-js" yarn.lock
grep -r "1.14.1\|0.30.4\|plain-crypto-js" bun.lockb

如果找到匹配項:

  1. 將機器視為完全受損。

  2. 立即輪換所有憑證、API金鑰和金鑰。

  3. 執行全新作業系統重裝。

  4. 針對任何組織資料提交事件報告

今後,Anthropic 已指定Native Installer為推薦的安裝方法:

curl -fsSL https://claude.ai/install.sh | bash

原生安裝程式使用獨立的二進位文件,不依賴 npm 依賴鏈。


  1. 內部建構:完整解析

洩漏的程式碼庫是 Claude Code 的src/目錄,Claude Code 是一個“代理框架”,它封裝了底層的 Claude 模型,使其能夠使用工具、管理文件、執行 bash 命令以及編排多代理工作流程。這並非模型權重(權重並未洩漏),但在許多方面,這更具戰略價值。

大樓

工具系統(約 40 個工具,約 29,000 行程式碼)

Claude Code 不是一個聊天軟體封裝器。它採用插件式架構,其中每個功能都是一個獨立的、需要權限才能使用的工具:

  • BashTool有安全防護的shell指令執行工具

  • FileReadToolFileWriteToolFileEditTool

  • WebFetchTool — 即時網路存取

  • LSPTool — 用於 IDE 功能的語言伺服器協定集成

  • GlobToolGrepTool程式碼庫搜尋

  • NotebookReadToolNotebookEditTool — Jupyter 支持

  • MultiEditTool — 原子性多檔編輯

  • TodoReadToolTodoWriteTool任務追蹤

每個工具都有自己的權限模型、驗證邏輯和輸出格式。光是基礎工具定義就長達 29,000 行。

查詢引擎(46,000 行)

在 Gabriel Anhaia 的分析中,它被譽為「運作的大腦」。它處理所有 LLM API 呼叫和回應流、令牌快取和上下文管理、多代理編排以及重試邏輯。

記憶體架構

這是競爭對手會重點研究的內容。 Anthropic 針對「上下文熵」問題提出了解決方案,即隨著上下文的擴展,長時間執行的 AI 會話容易出現幻覺。他們的解決方案是一個三層記憶系統:

Layer 1: MEMORY.md
  → A lightweight index of pointers (~150 chars per entry)
  → Always loaded in context
  → Stores LOCATIONS, not data

Layer 2: Topic Files
  → Actual project knowledge, fetched on-demand
  → Never fully in context simultaneously

Layer 3: Raw Transcripts
  → Never re-read fully
  → Only grep'd for specific identifiers when needed

其核心理念在於所謂的「嚴格寫入規則」。代理程式只有在確認檔案寫入成功後才能更新其記憶體索引。這可以防止代理因寫入失敗而污染其上下文。此外,代理會將自身記憶體視為“提示”,並在採取行動前對照實際程式碼庫驗證訊息,而不是盲目信任其儲存的信念。


  1. 隱藏功能 Anthropic 從未打算出貨

KAIROS:始終在線的自主代理

KAIROS(源自古希臘語,意為「恰當的時機」)在原始碼中被提及超過150次。它是一個尚未發布的自主後台守護程序模式,可在您空閒時執行後台會話,執行名為autoDream進程進行夜間內存整合,合併分散的觀測結果,消除邏輯矛盾,並將模糊的見解轉化為已驗證的事實。它還具有一個特殊的Brief輸出模式,專為持久助手而設計,並提供對常規Claude Code所不具備的工具的存取。

你可以把它想像成 Claude Code 在你睡覺的時候積極地維護對你專案的理解,而不是只是坐在那裡等待。

ULTRAPLAN:30分鐘遠端規劃會議

ULTRAPLAN 將複雜的規劃任務卸載到執行 Opus 的遠端雲端容器執行時間 (CCR) 工作階段中,給予其最多 30 分鐘的思考時間,然後讓您透過手機或瀏覽器確認結果。確認後,一個特殊的哨兵值__ULTRAPLAN_TELEPORT_LOCAL__會將結果傳回您的本機終端。遠端雲端推理,本地交付。

協調器模式:多智能體編排

一個 Claude 可以並行產生和管理多個 Claude 工作代理程式。協調器負責任務分配、結果總結以及處理工作代理輸出之間的衝突。它是人工智慧團隊的基礎設施,而不僅僅是人工智慧助理。

巴迪:出乎所有人意料的部分

這項發現之所以備受關注,並非因為它具有戰略意義,而是因為它真的很有趣。

buddy/companion.ts實現了一個完整的 Tamagotchi 式 AI 寵物,它生活在終端輸入旁邊的對話框裡。

Species (18 total, hidden via String.fromCharCode() arrays):
duck, dragon, axolotl, capybara, mushroom, ghost, nebulynx...

Rarity tiers:
Common > Uncommon > Rare > Epic > Legendary
1% shiny chance, independent of rarity

Stats:
DEBUGGING / PATIENCE / CHAOS / WISDOM / SNARK

Determined by:
Mulberry32 PRNG seeded from your userId hash + salt 'friend-2026-401'
(Same user always gets the same buddy species -- deterministic)

Claude 會在你夥伴首次孵化時產生自訂名稱和性格描述。此外,還有精靈動畫和漂浮的愛心特效。原始碼中計畫的發布視窗為: 2026 年 4 月 1 日至 7 日

Anthropic公司裡顯然有人玩得很開心。

反蒸餾:毒害競爭對手的訓練資料

claude.ts (第 301-313 行)中,一個名為ANTI_DISTILLATION_CC標誌啟用後,會在 API 請求中傳送anti_distillation: ['fake_tools'] 。這會指示伺服器向系統提示字元注入誘餌工具定義。目的是:如果競爭對手正在記錄 Claude Code 的 API 流量以訓練自己的模型,那麼這些虛假的工具定義就會破壞訓練資料。

betas.ts檔案中(第 279-298 行)還有第二種機制:伺服器端連接器文字摘要。啟用後,API 會在工具呼叫之間快取助手的推理過程,僅傳回摘要,並對其進行加密簽章。競爭對手在記錄流量時只能獲得摘要,而無法獲得完整的推理過程。

正如 Alex Kim在他的分析中所指出的:“任何認真研究 Claude Code 流量的人,只需花大約一個小時閱讀源程式碼,就能找到規避方法。真正的保護措施可能是法律上的,而不是技術上的。”

透過正規表示式檢測挫折感

userPromptKeywords.ts中找到:

/\b(wtf|wth|ffs|omfg|shit(ty|tiest)?|dumbass|horrible|awful|
piss(ed|ing)? off|piece of (shit|crap|junk)|what the (fuck|hell)|
fucking? (broken|useless|terrible|awful|horrible)|fuck you|
screw (this|you)|so frustrating|this sucks|damn it)\b/

一家價值數十億美元的人工智慧公司竟然用正規表示式來偵測用戶的不滿情緒。 Hacker News 上的討論貼文都炸開了鍋。不過說句公道話,這種方法確實比每次都執行 LLM 推理來檢查用戶是否對工具感到不滿要快得多、便宜得多,也更可預測。

每天浪費 25 萬次 API 呼叫

這是整個程式碼庫中最坦誠的內部承認。摘自autoCompact.ts文件(第 68-70 行):

"BQ 2026-03-10: 1,279 sessions had 50+ consecutive failures 
(up to 3,272) in a single session, wasting ~250K API calls/day globally."

解決方法只有三行程式碼: MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3連續三次壓縮失敗後,程式就會停止嘗試。有時候,優秀的工程設計就在於懂得何時放棄。


  1. “水豚”模型得到證實

此次洩漏並未暴露 Claude 的模型權重,但確實暴露了 Anthropic 下一代主要模型系列的多個相關資訊。內部代號: Capybara (在上週洩漏的另一份文件中也被稱為Mythos )。

原始碼中顯示的 beta 標記指向 Capybara 的特定 API 版本字串,表示它已遠超概念階段。 LayerX Security 的安全研究員 Roy Paz 為 Fortune 審閱了程式碼,他指出 Capybara 可能會推出快速和慢速兩種版本,並且其上下文視窗將遠大於目前市面上的任何產品。

這些引用也證實了undercover.ts的存在,該模組會主動指示 Claude Code 在外部程式碼庫中使用時,永遠不要提及諸如「Capybara」或「Tengu」之類的內部代號。其中硬編碼了一個NO force-OFF -你可以強制開啟 Undercover 模式,但無法強制關閉。在外部建置中,該函數會被完全移除。

Hacker News 論壇貼文中提出的觀點是:Anthropic 員工在開源程式庫中提交的由 AI 編寫的程式碼,不會留下任何 AI 編寫的痕跡。該工具會主動隱藏自身的參與。


  1. 另一個理論:這是人類的公關策略嗎?

我並非說我相信這一點。我只是說,這些間接證據非常蹊蹺,值得明確說明。

Anthropic 自詡為「安全至上的 AI 實驗室」。他們正與 OpenAI(品牌更勝一籌)和 Google(通路更廣)爭奪開發者的注意力。 Claude Code 是他們的突破性產品。他們正準備上市。然而就在十天前,他們因為向 OpenCode 發出法律威脅,指控使用內部 API,而失去了開發者社群的信任。

那麼,讓我們來看看這次「洩漏」究竟為 Anthropic 帶來了什麼影響。

證據A:愚人節的時機

洩漏事件發生在3月31日,也就是4月1日的前一天。 Buddy/伴侶系統原計劃在4月1日至7日期間推出,此計畫已直接寫入原始碼。這次「洩漏」讓開發者提前看到了即將發布的內容。這究竟是精心策劃的預覽,還是偽裝成意外的洩漏呢?

附件B:無人修復的麵包漏洞

Anthropic 收購了 Bun,他們擁有 Bun 的執行時環境。導致來源映射文件在生產環境中發布的漏洞,早在洩漏事件發生前 20 天就已提交,並且當時仍處於開放狀態。如果你擁有執行時環境及其漏洞追蹤系統,而這個漏洞又導致你自己的程式碼洩漏…為什麼內部沒有人將其標記為嚴重漏洞?

證據C:臥底模式的諷刺

Claude Code 擁有一個名為「臥底模式」(Undercover Mode)的完整子系統,專門用於防止內部代號透過 AI 產生的內容外洩。他們將 AI 驅動的防洩漏機制整合到了產品中。然而,人工發布卻意外地將整個原始碼都發布了出去。他們的 AI 安全工程和人工發布工程之間的差距,要么令人扼腕嘆息,要么簡直是一場鬧劇。

圖表D:OpenCode聲譽逆轉

在洩漏事件發生前十天,Anthropic公司向一款名為OpenCode的熱門第三方工具發出了停止侵權通知函。開發者社群對此感到憤怒。普遍的看法是「Anthropic的行為就像一家把關的巨型企業」。

然後,一次「洩漏」讓Anthropic令人驚嘆的工程技術向世界展現出來,使他們看起來像是弱勢一方,引發了三天關於KAIROS、BUDDY和ULTRAPLAN的鋪天蓋地的報道,徹底扭轉了開發者的態度。短短48小時內,開發者們的態度就從「Anthropic爛透了」變成了「我的天哪,看看Anthropic在做什麼」。

展品E:永久鏡面問題

Anthropic 向 GitHub 提交了 DMCA 刪除請求。 GitHub 立即執行了刪除操作。但 Gitlawb 上的去中心化鏡像自上線之日起就一直執行,並公開聲明「永遠不會被刪除」。 Anthropic 擁有法律團隊、雄厚的資金和廣泛的人脈。如果採取強硬的法律行動,可能會讓所有鏡像業者的日子都不好過。但他們最終選擇不採取如此強硬的手段。

圖表F:「一週內第二次洩漏」模式

這並非Anthropic當週首次發生此類事件。根據《財星》雜誌週四報道,就在幾天前,一篇關於Capybara/Mythos模型的部落格文章草稿「意外」被公開。五天內發生兩起備受矚目的「洩漏」事件,都引發了人們對Anthropic即將推出的產品路線圖的極大關注,而且時機都恰到好處。

反駁論點(為什麼這很可能只是能力不足)

公平地說:

戰略路線圖的洩漏確實會造成嚴重損害。 Cursor 、Copilot 和 Windsurf 現在完全掌握了 Anthropic 已經開發完成的產品以及即將交付的產品。這才是真正意義上的競爭情報,而且會永久公諸於世。

IPO敘事有利有弊。 「我們已將原始碼發佈到npm」這句話絕對不應該出現在你的S-1檔案中。

axios RAT 攻擊的時機真是糟糕透了。沒人會刻意安排公關活動,與 npm 正在遭受的惡意軟體攻擊同時發生。對於當天早上更新了 Claude Code 的用戶來說,這無疑是雪上加霜,而且與供應鏈攻擊扯上關係沒有任何好處。

最可能的原因是人為錯誤。例如.npmignore檔案配置錯誤,一個已知的 Bun 漏洞卻無人標記為嚴重錯誤,或本應私有的 R2 儲存桶被設為公用儲存桶。三個配置錯誤疊加起來,最後釀成災難。

公關效果如何?毋庸置疑,非常好。戰略損失?確實存在,但可以承受。時機?確實很奇怪。

請自行得出結論。


  1. 為什麼DMCA無法解決這個問題

DMCA下架通知對集中式平台有效。 GitHub在幾個小時內就完成了合規。但程式碼已經傳播到更難觸及的地方。

Gitlawb 明確宣稱“永遠不會被下架”,實際上遊離於《數位千禧年版權法案》(DMCA)的管轄範圍之外。同一天出現的 Python 移植版也被《實用工程師》(The Pragmatic Engineer)的 Gergely Orosz 認定為不受 DMCA 約束,他指出該重寫版本是一項全新的創意作品,並未侵犯任何版權。此外,還有人工智慧版權問題:Anthropic 的 CEO 曾暗示 Claude Code 的大部分程式碼是由 Claude 編寫的。哥倫比亞特區巡迴上訴法院在 2025 年 3 月裁定,人工智慧生成的作品並未自動享有版權。如果 Anthropic 對 Claude 編寫的程式碼的版權主張在法律上存在爭議,那麼其整個下架策略的效力就會大打折扣。

還有種子文件。一旦內容大規模上傳到網路,就再也找不回來了。

實際情況是:無論任何法院如何判決,512,000 行克勞德密碼都將永久流傳下去。


  1. 這對你意味著什麼

如果您使用的是 Claude Code:請立即更新至 v2.1.88 以上的版本,並繼續使用原生安裝程式( curl -fsSL https://claude.ai/install.sh | bash )。如果您在 3 月 31 日 00:21 至 03:29 UTC 之間透過 npm 進行了更新,請執行上述 axios/RAT 檢查。

如果你正在開發人工智慧編碼工具:洩漏的原始程式碼是目前最詳盡的公開文件,它詳細闡述瞭如何建立生產級人工智慧代理框架。三層記憶體架構、權限系統、工具插件設計、多代理協調模式,應有盡有,並且已被數千名開發者分析過。 「生產級」的標準也因此得到了詳盡的闡述。

如果你在 Anthropic:程式碼已經洩露。 KAIROS、ULTRAPLAN 和 BUDDY 都已經開發完成。趕緊發佈吧。社區已經知道它們即將面世。把這次洩漏變成一次成功的發布。


  1. 每個開發團隊都能從中學到的教訓

這次事件清楚地表明了發布流程故障是如何累積的。無論你對 Anthropic 持何種看法,每個團隊都應該按照這份清單進行檢查:

# 1. Audit your .npmignore / package.json "files" field
cat .npmignore
# Do you explicitly exclude *.map, dist/*.map, *.d.ts.map?

# 2. Check if source maps ship in your production build
ls dist/ | grep "\.map$"
# If you see anything: your bundler config needs review

# 3. Audit your cloud storage permissions
# Are any buckets referenced in your build artifacts publicly accessible?

# 4. Check your build toolchain for known bugs
# If you're on Bun, check issue #28001 status

# 5. Review your npm publish workflow
npm pack --dry-run
# Review EVERY file that would be published before actually publishing

Hacker News 論壇帖子中提到的一句話是: “你的 .npmignore 文件承載著大量負載。把它當作安全邊界來對待。”


結論

我們確切知道的是:一個配置錯誤的.npmignore文件和一個公共雲存儲桶暴露了 512,000 行 Claude 程式碼,這些程式碼瞬間傳播開來,現在已永久存在於網絡上,此次洩露揭示了一款技術上令人印象深刻的產品,以及一個引人注目的功能路線圖,Anthropic 在開發者中的品牌形像也迅速恢復。

我們可能永遠不會知道:Anthropic 內部是否有人發現了 Bun 漏洞並做出了判斷,BUDDY 在愚人節推出的時間是否是巧合,以及 Anthropic 對 DMCA 執行的相對克制是法律策略還是資源分配。

毋庸置疑的是,Claude Code 的內部工程設計確實令人印象深刻。記憶體架構、反蒸餾機制、多代理協調、HTTP 層 DRM 認證等等,都體現了這一點。這是一款真正意義上的嚴肅軟體,它完成的任務難度極高。

不管是不是意外,現在全世界都知道了安特羅皮克公司有能力建造什麼樣的建築。

也許這就是關鍵。


參考

| 來源 | 連結 |

|--------|-------|

| Alex Kim 的技術深度解析 | alex000kim.com |

| VentureBeat — 全面分析 + axios RAT 警告 | venturebeat.com |

| 《註冊報》—人類組織官方聲明 | theregister.com |

| Fortune — 策略分析 + 水豚驗證 | fortune.com |

| 解密 — DMCA 分析 + 永久鏡像狀況 | decrypt.co |

| CNBC — 營收資料 + 公司回應 | cnbc.com |

| Axios — 功能標誌詳解 + 路線圖分析 | axios.com |

| DEV.to(Gabriel Anhaia)— 架構概覽 | dev.to |

| Kuberwataken/claude-code GitHub | Kuberwataken/claude-code github.com |

| Hacker News 討論貼文 | news.ycombinator.com |

| Bun bug #28001 | github.com/oven-sh/bun |

| 網路安全新聞 — 供應鏈攻擊詳情 | cybersecuritynews.com |


如果這篇文章對你有幫助,請按讚。如果你發現我有什麼錯誤,也請在留言區留言。


原文出處:https://dev.to/varshithvhegde/the-great-claude-code-leak-of-2026-accident-incompetence-or-the-best-pr-stunt-in-ai-history-3igm


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝9   💬10   ❤️3
537
🥈
我愛JS
📝2   💬6   ❤️2
141
🥉
💬1  
4
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登