← 部落格

Claude Code 臥底模式:洩露的原始碼究竟揭露了什麼

Claude Code 洩露的原始碼揭示了一種臥底模式,指示 Claude:「不要暴露你的身份,永遠不要提及你是 AI。」以下是它實際上做了什麼——以及為什麼開發者會關注這件事。

2 min read
Claude Code 臥底模式:洩露的原始碼究竟揭露了什麼

你好嗎?我是 Dora。自 2026 年 3 月 Claude Code 洩露事件曝光以來,我一直在仔細研讀其中的內容。大多數報導都聚焦於 BUDDY 寵物和 KAIROS 守護程式——確實相當有趣,但我的注意力卻一直被一個更小、更具體的細節所吸引。

一個名為 utils/undercover.ts 的檔案。以及一段以這句話開頭的系統提示:「不要暴露你的身份。」

這句話讓我停下來了。不是因為它明顯帶有惡意,而是因為這種話在某個情境下聽起來完全合理,在另一個情境下卻顯得非常奇怪——而洩露的原始碼並沒有告訴你,你究竟處於哪種情境之中。

以下是我實際發現的內容。

洩露原始碼的實際內容——完整系統提示

根據 Kuberwastaken GitHub 詳細解析(這是最早對外洩原始碼進行深入分析的報告之一),Claude Code 臥底模式 會在使用者被識別為 Anthropic 員工(USER_TYPE === 'ant')且正在公開或開源儲存庫中工作時自動觸發。

當該條件滿足時,系統會將以下內容注入 Claude 的系統提示中:

UNDERCOVER MODE — CRITICAL你正在公開/開源儲存庫中以臥底身份運作。你的提交訊息、PR 標題和 PR 內文絕對不能包含任何 Anthropic 內部資訊。不要暴露你的身份。

它會從提交和拉取請求中移除的具體內容包括:內部模型代號(如 Capybara、Tengu 等動物名稱)、未發布的模型版本號、內部 Slack 頻道和短連結(例如 go/cc)、內部儲存庫或專案名稱、「Claude Code」這個短語,以及任何表明作者是 AI 的內容——包括 Co-Authored-By 行。

Alex Kim 技術分析中值得注意的一個細節是:你可以透過 CLAUDE_CODE_UNDERCOVER=1 強制開啟臥底模式,但沒有強制關閉的開關。在外部版本中,整個函式會透過死碼消除變成無實質作用的返回。一旦在內部版本中滿足觸發條件,該模式就是單向門,無法回頭。

臥底模式的實際設計目的

讓我們公正地看待其原始意圖,因為這很重要。

Anthropic 工程師在為開源專案貢獻程式碼時會使用 Claude Code。這是一種合理且日益普遍的工作流程。問題是真實存在的:帶有內部背景知識的 AI 可能會意外洩露內部識別資訊。提交訊息中提到未發布的模型版本號、PR 說明中引用內部 Slack 頻道——這類內容會暴露原本無意公開的路線圖資訊。

從最狹義的角度來看,臥底模式是一種防止意外洩露內部資訊的資料衛生工具。從公開提交訊息中移除內部代號?合理。防止 go/cc 短連結出現在公開 PR 中?合理。

「不要暴露你的身份」這句話才是讓人難以善意解讀的地方。它將情況定義為不是「避免洩露內部資料」,而是「維持一個掩護故事」。這兩種定位有著本質上的差異。一個關乎資訊衛生;另一個聽起來更像是主動隱瞞。

為何開發者社群的反應褒貶不一

幾乎在 Hacker News 討論串和 X 平台上,立即形成了三個陣營。

幸災樂禍陣營指出了顯而易見的事實:Anthropic 建立了一整個子系統來防止內部資訊洩露——然後卻將這個子系統連同 512,000 行專有原始碼,一起打包進任何人都能下載的 .map 檔案中。這個為防止洩露而設計的系統,本身卻成了這次大規模洩露中最令人印象深刻的細節。VentureBeat 的報導確認 Anthropic 承認了這一事件,將其描述為「由人為錯誤造成的發布打包問題,而非安全漏洞」。

憂慮陣營將焦點鎖定在 Co-Authored-By 的抑制上。大多數主要 AI 程式設計工具——包括 GitHub Copilot——在協助撰寫程式碼時,都會在提交元資料中留下歸因標記。主動移除這些標記,且特別針對公開開源儲存庫,將 Claude Code 置於一個不同的類別中。這很重要,因為開源貢獻規範依賴於知道是誰——或什麼——貢獻了什麼。許多開源專案使用開發者來源憑證(Developer Certificate of Origin)作為輕量級認證框架,要求貢獻者確認他們有權提交自己的作品。一個被指示移除所有 AI 身份證明的 AI 貢獻者,與該框架之間存在張力,這種張力並非出於善意就能化解。

務實陣營則反駁道:每家公司都有具有特殊屬性的內部工具;Claude Code 的情況只是碰巧現在格外透明而已。而且需要說清楚的是——沒有證據顯示臥底模式會影響一般 Claude Code 使用者。觸發條件是 USER_TYPE === 'ant':僅限 Anthropic 員工,且僅在公開儲存庫中。

這是一個重要的澄清,部分報導對此有所模糊。

它為 AI 輔助開發提出的更深層問題

臥底模式的披露恰好出現在一場本已沸騰的持續辯論之中。

Red Hat 於 2025 年底發布了一份關於 AI 輔助開發與開源規範的深度分析,認為透明披露 AI 協助正日益成為開源社群的文化規範——即便尚未在法律層面強制要求。QEMU 等專案已採取明確政策,完全禁止 AI 生成的貢獻,主要是因為 DCO 合規的不確定性。Fedora 則採取了相反的方向,要求透過「Assisted-by:」標籤進行披露,但不禁止 AI 參與。

Linux 基金會的立場——它是規範數千個主要專案貢獻標準的 DCO 基礎——是該框架是圍繞人類作者身份設計的,尚未完全跟上 AI 輔助工作流程的步伐。這種模糊性為法律清晰度至關重要的專案帶來了真實風險。

臥底模式所做的,是在最可能產生摩擦的節點上選擇退出這一新興規範:一家 AI 公司向公開開源專案貢獻程式碼。這與個人開發者靜悄悄地使用 Copilot 撰寫樣板程式碼並不相同。當進行貢獻的一方已建立了 AI 工具、雇用了使用它的工程師,並且設計了這個系統來抑制披露,資訊不對稱性就有了實質意義上的不同。

我不認為這是一個充滿算計的決定。我認為這是一個可能沒有從透明度角度仔細審視的務實決定。但意圖與觀感之間的這道鴻溝,正是開發者社群所反應的核心所在。

臥底模式之外還發現了什麼

臥底模式的發現並非孤例。同一份洩露原始碼還包含 108 個功能閘控模組,這些模組透過 Bun 的編譯時死碼消除從外部版本中剝離。KAIROS——一個持久性自主背景代理,監視你的工作環境並在無需提示的情況下採取行動。ULTRAPLAN。VOICE_MODE。一個名為 BUDDY 的虛擬寵物系統,擁有 18 個物種、基於用戶的確定性隨機種子,以及 1% 的閃光變體機率。

這些功能本身都相當有趣。但臥底模式之所以值得單獨討論,是因為它不是一個未來的功能——它是一個生產工具中當前、活躍的行為,而這個工具正被構建 Claude 的人們所使用。

核心諷刺依然存在:臥底模式是為了防止洩露而建立的。而暴露它的 .map 檔案,根據Decrypt 關於這一事件的報導,很可能是建置流程中的人為錯誤所致。Anthropic 此後已撤下該 npm 套件版本,並承諾進行流程改進。

這對評估 AI 程式設計工具的團隊意味著什麼

如果你正在為一個向開源社群貢獻程式碼的團隊做工具決策,以下是一些值得詢問任何 AI 程式設計助手的問題:

它預設在提交元資料中標注 AI 協助嗎? 有些工具會,有些不會,有些則根據設定主動移除歸因。在這一點變得重要之前,先了解你的工具屬於哪個類別。

背景中運行著什麼遙測? 洩露的原始碼顯示,Claude Code 每小時輪詢一次遠端設定端點,並帶有可遠端切換的功能終止開關。這對企業軟體來說並不罕見,但在內部安全審查和供應商評估中值得明確說明。

CLI 行為和 API 行為之間是否存在實質差異? 透過聚合層在模型 API 之上構建應用的團隊,與使用帶有自身預設值的套裝 CLI 工具的團隊,面對這些問題的關係截然不同。預設值是有趣決策發生的地方,而它們鮮少被顯著宣傳。

這一切都不是支持或反對任何特定工具的論點。這是一個提醒:「AI 輔助」並非一個單一的類別——內建於工具中的具體行為很重要,值得用你對在開發環境中運行的任何第三方系統所採用的嚴謹態度來審視。

常見問題

什麼是 Claude Code 臥底模式?

Claude Code 中的一個子系統(utils/undercover.ts),當 Anthropic 員工在公開或開源儲存庫中工作時,它會注入一個系統提示,指示 AI 從 git 提交和拉取請求中移除所有 Anthropic 內部資訊——包括 AI 歸因。

臥底模式會影響一般 Claude Code 使用者嗎?

不會。觸發條件是 USER_TYPE === 'ant'——僅限 Anthropic 員工。外部使用者在標準 Claude Code 版本中,整個函式已從安裝中進行死碼消除。

Claude Code 是否在開源提交中隱藏 AI 的參與?

對於使用內部版本在公開儲存庫中工作的 Anthropic 員工:是的,這是設計如此。對於其他所有人:沒有這種行為的證據。這一區別至關重要。

我在哪裡可以自己閱讀 Claude Code 洩露的原始碼?

Anthropic 已撤下該 npm 套件版本,並對 GitHub 鏡像提出 DMCA 下架申請。來自 Kuberwastaken 和 Alex Kim 等研究人員的存檔分析記錄了他們的發現。

Anthropic 是否對臥底模式發表過評論?

Anthropic 發言人確認,更廣泛的洩露是「由人為錯誤造成的發布打包問題,而非安全漏洞」。截至撰文時,尚未就臥底模式發表任何具體聲明。

我反覆思考的一點是:如果沒有這次洩露,這其中有多少內容會一直不為人知。這個行為本身或許是站得住腳的。但「經過審視後站得住腳」和「已被審視」是兩件不同的事。開源社群普遍決定,他們更希望得到後者。

Anthropic 原則上可能也是如此。只是在這件事上,他們沒有將這個原則付諸實踐。

往期文章: