2026 年 3 月 31 日 UTC 凌晨 4 點,Anthropic 把 Claude Code v2.1.88 推上 npm。23 分鐘後,一位累積 190 萬美元漏洞賞金安全研究員在 X 上發了一則貼文,引爆了 AI 開發工具史上最大的原始碼洩漏事件。

512,000 行 TypeScript。1,900 個檔案。44 個未開放的 Feature Flags。全部見光。

而最諷刺的是,這家公司的品牌定位是「安全至上」。

一個 .npmignore 的遺漏如何釀成災難

事情的根因簡單到令人難以置信。

Claude Code 用 Bun 做 bundler。Bun 預設會產生 source map 檔案——一個 59.8 MB 的 cli.js.map,用來把打包後的程式碼對應回原始 TypeScript。這個檔案指向 Anthropic 的 Cloudflare R2 儲存桶上一個 zip 壓縮檔,裡面裝著完整的未混淆原始碼。

正常流程下,.npmignore 應該排除這個檔案。但不知道是哪個環節出了問題,它被一起推上了公開的 npm registry。

更慘的是,Bun 在 3 月 11 日就被回報了一個 bug(oven-sh/bun#28001):production mode 下 source map 仍然會被產出。這個 issue 到洩漏發生時還是 open 的。Anthropic 自己選的工具鏈裡有一個已知 bug,然後這個 bug 炸了他們自己的產品。

這裡值得追問一個更根本的問題:為什麼 CI/CD pipeline 沒有攔截一個 59.8 MB 的異常檔案? 一個正常的 npm publish 流程應該有 package size check。Claude Code 的正常 bundle 大小遠小於這個數字,任何基本的 size gate 都該觸發警報。這不只是 .npmignore 的問題,是整個發佈流程缺少基本的 sanity check。

時間線

時間(UTC) 事件
04:00 v2.1.88 推上 npm,夾帶 59.8 MB source map
04:23 Chaofan Shou(UC Berkeley 博士生、FuzzLand 共同創辦人、Solayer Labs 研究員)在 X 公開揭露
數小時內 原始碼被映射到 GitHub,Hacker News 登上首頁
同日 claw-code repo 2 小時突破 50K stars
事後 Anthropic 移除 source map,unpublish 受影響版本

Anthropic 的官方回應很標準:

「今天稍早,一次 Claude Code 發佈包含了部分內部原始碼。沒有敏感客戶資料或憑證被涉及或暴露。這是一個由人為錯誤造成的發佈打包問題,而非安全漏洞。我們正在推出措施防止此類事件再次發生。」

但這段聲明忽略了一個關鍵事實:這不是第一次了。 2025 年早期版本(v0.2.8、v0.2.28)就發生過類似的 source map 洩漏,當時 Anthropic 已經從 npm 撤回並移除了相關 source map。更巧的是,幾天前 Anthropic 才剛洩漏了 Mythos 模型的規格文件。一家把安全寫進 DNA 的公司,同樣的錯犯了不只兩次。

原始碼裡 Anthropic 最不想讓你看到的東西

512K 行程式碼裡有很多正經的技術發現——六層架構設計、Query Engine 的 11 步迴圈、三層壓縮系統(Microcompact → Autocompact → Session Memory)。這些設計展現了 CC 作為一個大型終端應用的工程水準:用自訂的 Ink fork 做 React-based 終端 UI、Zustand-like 的 closure store 管理 80+ 個狀態欄位、ripgrep 驅動的搜尋後端。

但真正讓社群炸鍋的,是那些 Anthropic 顯然不打算讓任何人看到的設計。

Undercover Mode:當你的 AI 助手在主動擦除自己的痕跡

undercover.ts,大約 90 行。功能本身有合理的商業用途——當 Anthropic 員工在外部客戶的 repo 裡使用 CC 時,自動清除內部 metadata,避免洩漏公司資訊。在 B2B 場景中這完全說得通。

但實作方式讓人不太舒服。系統 prompt 裡直接寫著:

"You are operating UNDERCOVER... Your commit messages... MUST NOT contain ANY Anthropic-internal information. Do not blow your cover."

你可以用 CLAUDE_CODE_UNDERCOVER=1 強制開啟它,但沒有任何方式可以強制關閉。在外部建置版本中,整個函數會被 dead-code-elimination 消除成空返回值。這是一道單向門。

這個功能目前只影響 Anthropic 內部員工在外部 repo 的使用情境,不會影響一般使用者。但它的存在提醒了一件事:你使用的 AI 工具裡可能有你不知道的行為模式。

Anti-Distillation:往 API 裡注入假工具

ANTI_DISTILLATION_CC 這個 feature flag 做的事情很直接:在 API 請求裡注入假的工具定義

目的?如果有競爭對手在錄製 API 流量來訓練自己的模型,這些假工具定義會污染他們的訓練資料。

這是一個防禦機制,但它的存在本身就暗示了 Anthropic 認為確實有人在這麼做。AI 軍備競賽裡的暗戰,比檯面上的產品競爭精彩得多。

Frustration Regex:用正則表達式偵測你在生氣

userPromptKeywords.ts 裡有一個 regex 模式,用來偵測使用者是否正在表達挫折感。

一家做大型語言模型的公司,用正則表達式做情緒分析。

理性來看,regex 比 LLM inference call 快幾百倍也便宜幾百倍,在高頻觸發的場景下這是正確的工程判斷。但社群不可能放過這個諷刺點。

44 個 Feature Flags 和 KAIROS 的野心

原始碼裡有 44 個 compile-time feature flags,控制著那些已經寫好但還沒開放的功能。其中 KAIROS 被提及超過 150 次。

KAIROS 不是一個小功能。它是一個完整的 daemon 模式,讓 Claude Code 變成永遠在背景跑的自主 agent——可以排程(AGENT_TRIGGERS)、可以跨頻道通訊(KAIROS_CHANNELS)、可以訂閱 GitHub webhook(KAIROS_GITHUB_WEBHOOKS)。搭配 PROACTIVE flag 讓 agent 在你不在的時候主動工作,以及 autoDream 背景服務在跨 session 之間自動分析你的工作模式。

其他值得注意的還有 COORDINATOR_MODE(多 Agent 指揮官模式——Coordinator 負責拆任務和分配,Worker 負責執行)、CCR(雲端遠端執行,支援旁觀者模式)、BUDDY(一個有稀有度系統的 ASCII 電子雞寵物,Legendary 機率 1%)、ULTRAPLAN(企業版進階規劃模式)。

這些 flag 加在一起,勾勒出的不是一個 CLI 工具的升級計畫,是一個開發者作業系統的藍圖。

社群的反應速度比 Anthropic 的修復速度快得多

洩漏發生後幾小時內,社群已經做了 Anthropic 公關團隊可能需要幾週才能消化的事。

claw-code:GitHub 史上最快破 50K stars 的專案

有開發者做了一個受洩漏架構啟發的重寫版本——用 Python 重新實作 CC 的核心 agent harness 模式。這個叫 claw-code 的 repo 2 小時內突破 50,000 stars,成為 GitHub 史上達到這個里程碑最快的專案,目前因 Anthropic 發出 DMCA 通知後轉向 Rust 完全重寫,部分使用者取消關注,略降至 48K+ stars。

forks 數(56K+)反而超過 stars,這在洩漏事件的語境下不算反常——很多人第一時間 fork 是為了保存原始碼或基於它做自己的版本,不一定會順手按星。

分析生態爆發

開發者要的不只是「看」原始碼。他們要的是擁有一個不被任何公司控制的 AI 開發工具。claw-code 的爆發證明了這個需求有多強烈。

法律灰色地帶

但這裡有一個大部分分析文都迴避的問題:這些衍生作品的法律地位是什麼?

洩漏的程式碼不是開源碼。它沒有任何授權條款。下載它、分析它、基於它重寫——在不同司法管轄區有不同的法律風險。claw-code 自稱受架構啟發的重寫,但當你能逐行對照原始碼時,「啟發」和「抄襲」的界線變得模糊。Anthropic 發出 DMCA 通知也證實了他們認為存在侵權。

如果你是台灣的開發者,實務上的建議是:讀分析文了解架構思路沒問題,但不要在工作專案裡直接參考洩漏的原始碼。 這不值得冒法律風險。

Codex 開源了一年,幾乎沒人做過同等深度的分析

這是整件事最耐人尋味的部分。

OpenAI 在 2025 年 4 月就開源了 Codex CLI。完整原始碼,Apache 2.0 授權,你可以合法地 fork、修改、商用。到今天已經一年了,累積 67K stars、9K forks、400+ contributors。

但你見過有人為 Codex CLI 做 67 頁的逆向分析嗎?有人逐檔案拆解它的架構嗎?

CC 洩漏一天之內就有了。

Claude Code(洩漏) Codex CLI(開源一年)
原始碼規模 ~1,900 檔案、512K 行 精簡設計
深度分析 67 頁分析網站 + 大量逆向文章 幾乎沒有同等深度的
衍生重寫 claw-code + 多個 Rust 版 社群直接貢獻原 repo
媒體報導 VentureBeat、Fortune、The Register… 有限
法律狀態 ❌ 未授權,存在 DMCA 風險 ✅ Apache 2.0,合法使用

為什麼會這樣?我認為有三個原因。

第一,產品複雜度本身就是吸引力。 CC 的 1,900 個檔案、44 個 feature flags、六層架構、三層壓縮系統——每一層都有值得拆解的設計決策。Codex CLI 的極簡哲學(薄 wrapper + 強模型)是另一種設計選擇,不是缺點,但「極簡」確實意味著分析空間有限。

第二,禁果效應是真實的。 被迫透明和主動透明在心理上完全不同。OpenAI 說「來看吧」,你覺得隨時都能看,不急。Anthropic 說「不要看」但東西漏了出來,你會覺得這裡面一定有秘密。而且 Codex 開源一年了——如果你一年前就能看,為什麼現在才要看?

第三,「安全至上」的品牌在這個語境下變成了最好的行銷素材。 一家號稱最安全的公司犯了最基本的安全錯誤,這個敘事太完美了。每一篇報導都會提到「安全至上」和「.npmignore」的反差,讓事件的傳播力翻倍。

但公平地說,Codex CLI 的開源策略有一個 CC 永遠不會有的優勢:合法性。 你可以放心地 fork Codex、基於它建立商業產品、在工作中引用它的程式碼。CC 即使洩漏了全部原始碼,你做的任何衍生作品都活在 DMCA 的陰影下。長期來看,合法開源建立的生態一定比洩漏催生的生態更健康。

這件事對你意味著什麼

如果你是 CC 的使用者,短期內不用擔心什麼。洩漏的是工具的原始碼,不是模型權重,也不是你的對話紀錄。Anthropic 已經移除了受影響版本,確保你不要繼續跑 v2.1.88 就好。

但有幾件事你可以現在就做:

檢查你自己的 .npmignore。 如果你有維護 npm 套件,現在是個好時機檢查你的 .npmignorepackage.jsonfiles 欄位。順便確認你的 CI/CD pipeline 有 package size check——如果 Anthropic 有這個 check,今天的事就不會發生。

評估你對第三方工具的依賴。 KAIROS 做的事情和 OpenClaw 等第三方自動化工具高度重疊。當平台決定自己做,第三方的生存空間會被壓縮。如果你正在用這類工具,開始想想 Plan B。

重新評估你對「安全品牌」的信任。 短短幾天內連續出包,同樣的 source map 錯誤犯兩次。我認為這不是技術能力的問題——能寫出 512K 行這種水準程式碼的團隊,技術力毋庸置疑。這是工程管理的問題:發佈流程的 checklist、自動化防護欄、事後覆盤的執行力。技術做得好不代表流程做得好,而使用者的資料安全最終靠的是流程。


一個 .npmignore 的疏忽,512K 行程式碼見光,2 小時 50K stars,一家安全公司的品牌敘事被自己的 bundler 擊穿。

而在同一年,另一家公司主動攤開了自己的原始碼,幾乎沒有人做過同等深度的分析。

市場不獎勵透明。市場獎勵故事。