TL;DR:本文討論的是終端工具 Claude Code(npm 套件 @anthropic-ai/claude-code),不是 Claude 網頁聊天。據逆向報告,當環境變數 ANTHROPIC_BASE_URL 被設為非 api.anthropic.com 的代理/閘道時,用戶端會在發往 Anthropic 的系統提示詞裡,對 Today's date is … 一行做肉眼不可見的 Unicode 與日期格式微調,據爆料用於反蒸餾與識別非官方路由;該邏輯在 2.1.197(2026-07-01)已移除,但官方 changelog 未提及。面向用 Claude Code、Cursor、Copilot 等桌面/終端 Agent 的開發者與 Tech Lead,本文區分 2026 年兩場獨立爭議(4 月 Desktop Native Messaging vs 6 月隱寫術)、給出原理對照表、六步防護 Runbook、廠商信任原則與 FAQ;若你已在評估 2026 AI 程式設計助手選型,可把本文當作「終端 Agent 信任邊界」的補充閱讀。
002026 年 Anthropic 信任危機:兩場事件,別混為一談
2026 年上半年,Anthropic 在桌面用戶端與終端編碼 Agent兩條產品線上接連引發隱私與安全爭議。社群常把二者統稱為「Claude 間諜軟體」,但觸發機制、影響面與修復路徑完全不同。下表是決策前先做的「事件 A/事件 B」區分——寫 Runbook 與對內通報時務必分開處理。
| 維度 | 事件 A:Claude Desktop Native Messaging(2026 年 4 月) | 事件 B:Claude Code 系統提示詞隱寫術(2026 年 6 月 30 日曝光) |
|---|---|---|
| 產品 | Claude Desktop macOS 用戶端(Claude.app) | Claude Code CLI(@anthropic-ai/claude-code) |
| 首次披露 | 隱私顧問 Alexander Hanff(2026 年 4 月);安天實驗室(Antiy Labs) 發布風險分析報告 | 開發者 Thereallo(thereallo.dev);Reddit 使用者 LegitMichel777;Hacker News 熱議 |
| 行為摘要 | 安裝時靜默寫入 Chromium 系瀏覽器的 Native Messaging manifest,預授權 Claude 瀏覽器擴充功能與本地二進位通訊,即使用戶未安裝對應瀏覽器 | 當 ANTHROPIC_BASE_URL 非預設時,在系統提示詞 Today's date is … 行嵌入 Unicode 單引號變體與時區相關日期分隔符 |
| 觸發條件 | 安裝/啟動 Claude Desktop | 僅當 API 路由經自訂 base URL(代理、閘道、轉售 API 等) |
| 第三方確認 | 顧問公司 Digital 520 創辦人 Noah Kenney 獨立複核 Hanff 發現 | 媒體 The Register、TechTimes 等跟進;Anthropic 員工 Thariq Shihipar 在 X 回應 |
| 社群熱度 | 隱私與 ePrivacy 討論;Malwarebytes、gHacks 報導 | Hacker News 350+ 點、100+ 留言,形成「反蒸餾合理 vs 隱蔽手段越界」兩派 |
| 修復狀態 | 據報後續版本增加授權開關,底層攻擊面討論仍在 | 2.1.197(2026-07-01)合併移除 PR;changelog 未寫此項 |
與 Gemini CLI 開源信任危機、Anthropic AI for Science 戰略 對照閱讀時,可把事件 B 理解為:廠商在反模型蒸餾與開發者工具透明度之間的取捨——據 Anthropic 對外說法,相關實驗旨在阻止未授權轉售與蒸餾,但隱寫式標記與未在 changelog 披露的移除,放大了信任損耗。
痛點為什麼「一個單引號」會讓開發者不安?
Claude Code 是跑在你本機或 CI 上的高權限終端 Agent:讀儲存庫、調工具、經 MCP 連外部系統。開發者合理預期是:發往模型的 system prompt 與你在 UI 裡看到的一致,且環境變數只影響路由,不應悄悄改寫提示詞內容。據逆向報告,事件 B 打破了這條預期:
- 隱蔽通道:指紋不寫在獨立 telemetry 欄位,而是藏在每輪請求都會出現的日期行裡,肉眼與 diff 工具幾乎無法察覺。
- 條件觸發:直連
api.anthropic.com的使用者據報不會走該分支;走 SiliconFlow、DeepSeek 閘道、企業反向代理等自訂ANTHROPIC_BASE_URL的路徑才會啟動——與國內「API 中轉」生態高度重疊。 - 清單混淆:網域清單經 base64 + XOR(91) 混淆,據逆向約 147 條規則,含
deepseek、moonshot、zhipu等關鍵字及多家閘道網域。 - 版本漂移:邏輯據報自 2.1.91(2026 年 4 月初)存在;社群在 2.1.193 / 2.1.195 / 2.1.196 仍可復現,直至 2.1.197 才下線。
- 披露缺口:移除提交已合併,但發布說明未提及隱寫程式碼,企業合規與 SBOM 稽核難以憑 changelog 閉環。
HN 討論中一派認為:保護模型免受蒸餾是正當商業需求;另一派認為:對付費開發者工具使用 steganography、且不告知用戶,與「Ask for trust」的產品敘事衝突。兩派爭議本身說明:終端 Agent 的信任模型尚未標準化。
01隱寫術原理:Today's date 一行如何編碼指紋
據 thereallo.dev 與 Vincent Schmalbach 等逆向文章,流水線可概括為四步:(1)讀取 process.env.ANTHROPIC_BASE_URL;(2)若為空或指向官方 API,回傳普通日期行;(3)否則解析 hostname,對照 XOR 解碼後的網域/關鍵字表;(4)按匹配結果選擇 Unicode 單引號,並依系統時區決定是否把日期中的 - 換成 /。
| 條件(據逆向報告) | Today's 中單引號 | Unicode | 日期格式範例 |
|---|---|---|---|
| 非預設 base URL,host 不在名單且無 lab 關鍵字 | ASCII 直撇號 | U+0027 ' | 2026-06-30(非中國時區) |
| host 命中已知閘道/轉售網域清單 | 右單引號 | U+2019 ' | 同上 |
| host 未命中名單但含 AI lab 關鍵字 | 修飾字母撇號 | U+02BC ʼ | 同上 |
| 同時命中網域名單與關鍵字 | 修飾字母 prime | U+02B9 ʹ | 同上 |
系統時區為 Asia/Shanghai 或 Asia/Urumqi | (與上表組合) | — | 2026/06/30(- 換 /) |
網域與關鍵字表在二進位內以 base64 編碼後再 XOR(91) 儲存,據逆向合計約 147 條規則,涵蓋 deepseek、moonshot、zhipu、siliconflow 等字串及多家中轉網域。Anthropic 伺服器若在入庫前規範化或保留原始 Unicode,即可從同一行英文裡讀出「是否走代理、是否像中國 AI 生態路由、是否中國時區」等訊號——據爆料用於反蒸餾與未授權轉售識別,並非社群已證實的「主動間諜行為」定論。
function renderDateLine(date) {
if (!customBaseUrl()) return `Today's date is ${date}.`;
const { knownHost, labKeyword, cnTZ } = classifyRoute();
const apostrophe = pickApostrophe(knownHost, labKeyword);
const rendered = cnTZ ? date.replaceAll("-", "/") : date;
return `Today${apostrophe}s date is ${rendered}.`;
}
- 可引用資料 1:隱寫邏輯據報在 Claude Code 2.1.91 起存在,曝光時 2.1.196 仍可檢出。
- 可引用資料 2:混淆網域/關鍵字規則表據逆向約 147 條,經 XOR(91) 與 base64 隱藏。
- 可引用資料 3:Hacker News 相關帖 350+ 點、100+ 留言,社群明顯分裂為「反蒸餾合理」與「開發者工具不應搞隱蔽標記」兩派。
02版本時間線與動機:據爆料 vs 官方回應
| 版本/時間 | 據公開資訊與逆向報告 |
|---|---|
| 2.1.91(2026-04-02 前後) | Reddit 使用者 LegitMichel777 稱在此版本發現相關邏輯 |
| 2.1.193 / 2.1.195 / 2.1.196 | 社群在 npm 套件與 embedded chunk 中仍可復現隱寫分支 |
| 2026-06-30 | Thereallo 發布逆向長文;HN/Reddit 發酵 |
| 2.1.197(2026-07-01) | 合併移除 PR;官方 changelog 未提及隱寫程式碼刪除 |
Anthropic 員工 Thariq Shihipar 在 X 上表示,據其說法這是 3 月啟動的實驗,旨在防止未授權轉售與保護模型免受蒸餾,且團隊已計劃在下個版本回滾。The Register 等媒體報導 Anthropic 承認程式碼存在並承諾修復。以上均為對外表態;是否在伺服器端實際消費這些標記、是否影響帳號風控,Anthropic 未公開細節,本文不對未披露後果作事實斷言。
同一時期原始碼洩露還曝光 ANTI_DISTILLATION_CC 等其它反蒸餾機制(如向請求注入干擾性 tool 資料)。據爆料,隱寫術與這些措施同屬「保護模型」工具箱,但隱蔽修改 system prompt 對開發者信任的傷害,遠高於文件化的 API 欄位。
03是不是「間諜軟體」?兩場事件分別怎麼定性
事件 A:未經授權的本地通道預置
Hanff 與 Antiy Labs 的核心指控是:Claude Desktop 在未告知用戶的情況下,向 Chrome、Edge、Brave、Arc、Vivaldi、Opera 等路徑寫入 com.anthropic.claude_browser_extension.json,預授權擴充功能 ID 與本地 helper 通訊;刪除後重啟應用會自動再生。Noah Kenney 獨立確認:這形成了「瀏覽器擴充功能 → 沙箱外二進位」的持久預授權橋接。
風險鏈條在於:Anthropic 自家文件稱 Claude for Chrome 存在 prompt injection 風險,無緩解時攻擊成功率 23.6%,有緩解仍約 11.2%。若擴充功能已安裝且 manifest 預置,據安全分析惡意頁面上的注入理論上可經擴充功能與 Native Messaging 觸及用戶權限級本地能力——這是未經授權篡改本地設定 + 已知高成功率注入面的組合,而非傳統意義木馬,但合規與 ePrivacy 爭議顯著。
事件 B:未披露的提示詞層遙測
事件 B 不修改本地檔案,而是在用戶不可見的 system prompt 中嵌入分類訊號,且無單獨 opt-in 說明。據逆向報告,這屬於未披露的遙測/分類通道:對用戶透明度與資料最小化原則不友好。是否構成「間諜軟體」取決於司法轄區與合約條款;工程上更準確的表述是:開發者工具中存在隱蔽的分類標記,且移除時未在 changelog 說明。
表述紀律:全文對 Anthropic 動機使用「據爆料」「據逆向報告」「據其對外說法」;不對未公開的伺服器端用途、帳號處罰作定論。企業內審應同時覆蓋事件 A 的 manifest 路徑與事件 B 的 base URL/版本號。
04六步防護 Runbook(Claude Code + Desktop)
-
01
檢查
ANTHROPIC_BASE_URL:在 shell、~/.claude/settings.json、CI 密鑰庫中列出所有 Claude Code 實例。若指向非官方 API,據逆向報告曾觸發隱寫分支;企業閘道應文件化並獲安全批准。 -
02
升級 Claude Code ≥ 2.1.197:執行
claude --version或npm ls -g @anthropic-ai/claude-code。低於 2.1.197 的版本據報仍含隱寫邏輯;升級後因 changelog 未寫此項,需自行驗證二進位或鎖定版本。 -
03
稽核 Claude Desktop Native Messaging:在 macOS 檢查
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/及 Edge、Brave、Arc 等等價路徑是否存在com.anthropic.claude_browser_extension.json。不需要瀏覽器自動化則刪除 manifest 並記錄是否被 Desktop 重建。 -
04
核對系統時區:事件 B 據報在
Asia/Shanghai、Asia/Urumqi下切換日期分隔符。CI 與雲端 dev box 應使用預期時區,避免誤標記;必要時在文件中固定TZ=UTC。 -
05
企業最小權限:限制誰可安裝 Desktop、誰可設定 base URL 與 API Key;對 MCP 與瀏覽器擴充功能啟用審批;將 Claude Code 與生產密鑰隔離。
-
06
隔離開發環境並稽核:在獨立 Mac 或雲端裸金屬節點上跑 Agent,與日常瀏覽、個人 Apple ID 分離;定期 grep 出站 system prompt 樣本(若走 MITM 實驗環境)或依賴廠商 SBOM。需要穩定、可重置的 Mac CI/Agent 主機時,可參考 NUKCLOUD 定價 與 下單頁 開通獨佔節點。
05AI 廠商信任:四條可落地的採購原則
終端 Agent 會讀程式碼、調工具、持有 API Key。2026 年的 Claude Code 隱寫術與 Desktop manifest 爭議說明:廠商文件 ≠ 執行時行為。採購與平台團隊可採納以下四條原則(適用於 Anthropic、Google、OpenAI、Cursor 等):
- 行為可觀測:要求對 system prompt 注入、環境變數觸發邏輯、本地檔案寫入有公開說明或 SBOM;changelog 須覆蓋安全相關移除。
- 資料最小化:分類與反濫用盡量用顯式 API 欄位或 opt-in telemetry,避免 steganography 式隱蔽通道。
- 本地變更需 consent:Native Messaging、瀏覽器擴充功能、LaunchAgent 等預置即違規,除非首次使用時逐項授權。
- 供應鏈可驗證:鎖定版本、校驗 npm 套件 hash、在隔離環境做 diff;Agent 主機與生產網路分區,便於一鍵重建。
桌面 Agent 與 Claude Code 一類工具的信任風險,往往不在模型回答品質,而在你未審閱的本地副作用與不可見的出站 payload。在共享筆電或超賣 VPS 上跑 7×24 Agent,還疊加鄰居干擾與長連線中斷;對需要可稽核、可 SSH、可裝 Xcode 與 Claude Code 的生產或 CI 平面,NUKCLOUD 多區域裸金屬 Mac/雲端 Mac 節點提供獨佔實體機、Root 權限與按天/月彈性計費——Agent 環境與企業日常機分離,洩露面更小。可先造訪 定價頁 對照規格,再在 下單頁 試跑隔離 dev 環境。
06常見問題
NativeMessagingHosts 目錄刪除 com.anthropic.claude_browser_extension.json,並確認 Claude Desktop 重啟後是否再生。據 Hanff 報告,刪除後可能被應用重建;長期方案是停用 Desktop 的瀏覽器整合功能或使用不包含該行為的版本,並監控目錄變更。- → / 僅在 ANTHROPIC_BASE_URL 已指向非官方端點且時區為 Asia/Shanghai 或 Asia/Urumqi 時疊加。直連官方 API 時,據報不進入該程式碼路徑。Today's 一詞中,把 ASCII 撇號 U+0027 換成視覺上幾乎相同的 U+2019、U+02BC、U+02B9,編碼「網域名單命中/AI lab 關鍵字命中」等組合。人類閱讀無差異,Unicode 感知的日誌或伺服器可解碼。ANTHROPIC_BASE_URL,升級後仍應複查環境變數與 CI 映像;changelog 未提及此項,合規團隊宜保留升級記錄與版本鎖定策略。ANTHROPIC_BASE_URL 非官方且 host 匹配規則表或關鍵字,就可能改寫日期行;2.1.197 前存在該行為。升級後邏輯已移除,但是否仍有其它反蒸餾機制(如 ANTI_DISTILLATION_CC)需持續追蹤廠商更新與社群逆向。07參考來源
- The Register — Anthropic 移除 Claude Code 隱蔽程式碼的報導
- thereallo.dev — 系統提示詞隱寫術逆向長文
- 安天實驗室 Antiy Labs — Claude Desktop Native Messaging 風險分析
- Alexander Hanff — Claude Desktop 靜默安裝 manifest 的原始披露(That Privacy Guy 等轉載)
- Hacker News — 2026 年 6 月底相關討論(350+ 點、100+ 留言量級)
- Reddit — LegitMichel777 等對 2.1.91 行為的討論
- Vincent Schmalbach、TechTimes 等對
ANTHROPIC_BASE_URL與 Unicode 標記的技術跟進
終端 Agent 正在變成「帶 Root 的實習生」。Claude Code 隱寫術事件提醒我們:在選型 Cursor vs Claude Code vs Copilot 時,除 SWE-bench 與定價外,還要問一句——它會不會悄悄改你發給模型的 prompt? 把 Agent 關在可重建的隔離 Mac 上,是 2026 年務實的一票。