Claude Code 原始碼洩漏事件全梳理:從 npm source map 到 claw-code 現象
一個 .npmignore 設定沒寫好,512,000 行 TypeScript 就這樣全部攤在陽光下。
2026 年 3 月 31 日凌晨,Anthropic 把 @anthropic-ai/claude-code v2.1.88 推上 npm。包裹裡面多了一個 59.8MB 的 JavaScript source map——這個 .map 檔能完整還原壓縮前的原始碼,1,900 個檔案,一個不漏。研究者 Chaofan Shou 凌晨 4:23 把下載連結丟到 X 上,16 小時後累積 1,600 萬次瀏覽。Anthropic 緊急下架套件,但網路的記憶比公司的反應速度快太多了。
這是 Anthropic 五天內的第二次洩漏。上一次是內部代號 Mythos 的 CMS 洩漏。做 AI 安全起家的公司,連自己的 CI/CD pipeline 都管不好——有一說一,這 narrative 不太好看。
怎麼漏的
Anthropic 官方聲明說這是「人為失誤的打包問題,非安全漏洞」。
翻譯成白話:package.json 的 files 欄位或 .npmignore 配置寫錯了,source map 被塞進發布套件。就這樣。沒有駭客、沒有內鬼、沒有零日漏洞,是最平凡的那種失誤——但造成的影響一點都不平凡。
任何寫過 npm 套件的人看到這裡應該都會有點冷汗。你的 .npmignore 有沒有寫好?你上次 npm pack --dry-run 看打包內容是什麼時候?
原始碼裡面有什麼
44 個 Feature Flags
整個 codebase 裡面埋了 44 個 feature flag,全部都是建好但沒對外開放的功能。其中最引人注目的:
KAIROS — 被提及超過 150 次。這是一個自主 daemon 模式,讓 Claude Code 作為永久背景 agent 運行。不需要你開終端機、不需要你下指令,它自己在背景持續跑。這個功能名稱本身就是資訊外洩——KAIROS 一看就知道是什麼等級的東西。
Computer Use — 完整的電腦操控功能,讓 Claude 直接控制你的螢幕、鍵盤、滑鼠。這個後來在 3/30 正式宣布了,但在洩漏的時候它還是未公開的。
Messaging Integration — 訊息平台整合,後來也以 Channels 的形式發布了。
Undercover Mode
這個最有爭議。原始碼裡面有一個模式,啟動後會告訴 Claude:
「你正在臥底行動。不要暴露你的身分。」
在這個模式下,AI 生成的 commit 不會標註 AI 參與,寫作風格也會模仿人類開發者。Reddit 上 r/ClaudeAI 的討論串直接炸了——3,667 個 upvote,最高票留言:「讓我覺得自己的工作程式碼品質太高了 lmao」。
笑歸笑,但 Undercover Mode 帶出的問題很實際:如果 AI 寫的 code 刻意偽裝成人寫的,code review 的信任基礎還在嗎?open source 專案的貢獻歷史還可信嗎?
內部架構全暴露
除了功能面,整個 Claude Code 的架構設計也被看光了:
- 權限系統跟安全邊界怎麼實作的
- MCP Server 整合機制的內部細節
- Hook 系統和 Skill 載入架構
- Token 管理、rate limiting 策略
對 Anthropic 來說這是商業機密外洩。對社群來說——嗯,有人開始照著架構圖造輪子了。
claw-code:史上最快破萬星的 repo
洩漏發生幾小時後,韓國開發者 Sigrid Jin 凌晨 4 點看到消息,用 AI 工具 oh-my-codex 把核心架構從 TypeScript 重寫成 Python,推出 claw-code。
| 指標 | 數據 |
|---|---|
| GitHub Stars | 數小時內破 60,000 |
| Forks | 超過 41,500 |
| 破萬星速度 | 史上最快 |
為什麼用 Python 重寫而不是直接 fork TypeScript?因為 clean-room 重寫不構成著作權侵害。技術評論者 Gergely Orosz 說得很直接:「它用 Python 重寫了程式碼,所以無法被 DMCA 下架。」
那些直接 mirror TypeScript 原始碼的 repo 呢?陸續收到 DMCA takedown。懂的都懂——想留著的人早就知道該怎麼做了。
真正該擔心的:Supply Chain Attack
洩漏本身已經夠糟,但後續發生的事更危險。
有人開始搶註 Anthropic 內部 package 名稱。原始碼裡面引用了很多內部依賴(internal packages),這些名稱在公開的 npm registry 上是空的。攻擊者搶先註冊這些名稱,上傳惡意套件。
如果有人拿到洩漏的原始碼想自己編譯,跑 npm install 的時候就會從 npm 拉到這些假冒的內部依賴——恭喜,你的開發環境被滲透了。這是經典的 dependency confusion attack,而且執行門檻極低。
所以再說一次:不要嘗試編譯洩漏的原始碼。看看就好,手不要癢。
社群怎麼看
Reddit — 81 個討論串,約 15,000 upvotes
r/ClaudeAI、r/cybersecurity、r/LocalLLaMA、r/tech_x 同步爆量討論。主要分三派:覺得 Anthropic 丟臉的、覺得這等於事實開源很讚的、擔心 supply chain 風險的。三派各有各的道理。
X/Twitter — 42 篇貼文,約 500 likes
兩極化明顯。樂觀派覺得社群會因此受益;批評派翻出 Anthropic CEO Dario Amodei 曾經說開源是「red herring」的發言,認為這次洩漏充滿諷刺。
YouTube — 15 支影片,約 160,000 views
Chase AI(36K views)、freeCodeCamp(27K views)、Ray Amjad(11K views)都出了分析影片,速度非常快。
對開發者的啟示
這件事最有價值的地方不是八卦,是教訓。
npm 發布安全
第一,package.json 的 files 欄位要明確列出要包含的檔案,或者 .npmignore 要列出要排除的。兩者都沒設的話,npm 預設會把幾乎所有東西都打包進去。
第二,發布前跑 npm pack --dry-run,看一眼打包清單。59.8MB 的 source map 混在裡面,dry-run 一跑就看到了。
第三,CI/CD pipeline 裡面加套件大小檢查。套件突然從 5MB 變 65MB,pipeline 應該要自動擋下來。
Source Map 管理
生產環境的 source map 不應該出現在 npm 套件裡。Build script 最後加一行 rm -f *.map,或者在 .npmignore 裡排除 *.map。如果你需要 source map 做錯誤追蹤,上傳到 Sentry 之類的服務,不要隨套件一起發。
Feature Flag 命名
KAIROS 這個名字太有暗示性了。敏感的 feature flag 不應該用能推斷功能內容的名稱。FLAG_A7X2 比 KAIROS_DAEMON_MODE 安全得多——雖然可讀性差,但這本來就不是給外人讀的。
更好的做法是在 build 階段直接把未啟用的 feature flag 相關程式碼整段移除。程式碼不存在就不會被洩漏。
事件影響一覽
| 面向 | 影響 |
|---|---|
| Anthropic 商譽 | 五天兩次洩漏,AI 安全公司的資安形象受損 |
| 社群生態 | claw-code 帶動 Python 版 Claude Code 生態 |
| 安全風險 | 內部依賴名稱被搶註,supply chain attack 風險升高 |
| 產業討論 | Undercover Mode 引發 AI 貢獻透明度辯論 |
| 開發者意識 | npm 發布安全被重新審視 |
Anthropic 那句「不是安全漏洞,是打包失誤」說得沒錯。但對一間估值超過千億、主打 AI safety 的公司來說,連 .npmignore 都能出包,某種程度上比真正的安全漏洞更讓人不安——因為這代表最基本的東西都沒到位。
今天的新聞摘要有簡短提到這件事。這篇是完整版的事件梳理,把技術細節、社群反應、安全風險全部拉出來看。
資料來源:
- Anthropic’s Claude Code source code leaked via npm package — VentureBeat
- Claude Code’s leaked source reveals hidden features — The Register
- Anthropic suffers second leak in five days — Fortune
- Reddit(r/ClaudeAI, r/cybersecurity, r/LocalLLaMA — 81 threads, ~15,000 upvotes)
- Hacker News(28 stories, ~950 points)








