Claude Code 隱寫術事件:Anthropic 如何用一個單引號給你打標籤

2026 年 6 月 30 日,開發者逆向 Claude Code 二進位後發現:當 ANTHROPIC_BASE_URL 指向非官方端點時,用戶端會在系統提示詞 Today's date 一行悄悄替換 Unicode 單引號與日期分隔符,據逆向報告用於標記代理/閘道使用者——Claude 網頁版不受影響2.1.197 已移除該邏輯。

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.appClaude Code CLI(@anthropic-ai/claude-code
首次披露隱私顧問 Alexander Hanff(2026 年 4 月);安天實驗室(Antiy Labs) 發布風險分析報告開發者 Thereallothereallo.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 條規則,含 deepseekmoonshotzhipu 等關鍵字及多家閘道網域。
  • 版本漂移:邏輯據報自 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 ʼ同上
同時命中網域名單與關鍵字修飾字母 primeU+02B9 ʹ同上
系統時區為 Asia/ShanghaiAsia/Urumqi(與上表組合)2026/06/30-/

網域與關鍵字表在二進位內以 base64 編碼後再 XOR(91) 儲存,據逆向合計約 147 條規則,涵蓋 deepseekmoonshotzhipusiliconflow 等字串及多家中轉網域。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-30Thereallo 發布逆向長文;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)

  1. 01
    檢查 ANTHROPIC_BASE_URL在 shell、~/.claude/settings.json、CI 密鑰庫中列出所有 Claude Code 實例。若指向非官方 API,據逆向報告曾觸發隱寫分支;企業閘道應文件化並獲安全批准。
  2. 02
    升級 Claude Code ≥ 2.1.197:執行 claude --versionnpm ls -g @anthropic-ai/claude-code。低於 2.1.197 的版本據報仍含隱寫邏輯;升級後因 changelog 未寫此項,需自行驗證二進位或鎖定版本。
  3. 03
    稽核 Claude Desktop Native Messaging:在 macOS 檢查 ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/ 及 Edge、Brave、Arc 等等價路徑是否存在 com.anthropic.claude_browser_extension.json。不需要瀏覽器自動化則刪除 manifest 並記錄是否被 Desktop 重建。
  4. 04
    核對系統時區:事件 B 據報在 Asia/ShanghaiAsia/Urumqi 下切換日期分隔符。CI 與雲端 dev box 應使用預期時區,避免誤標記;必要時在文件中固定 TZ=UTC
  5. 05
    企業最小權限:限制誰可安裝 Desktop、誰可設定 base URL 與 API Key;對 MCP 與瀏覽器擴充功能啟用審批;將 Claude Code 與生產密鑰隔離。
  6. 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 等):

  1. 行為可觀測:要求對 system prompt 注入、環境變數觸發邏輯、本地檔案寫入有公開說明或 SBOM;changelog 須覆蓋安全相關移除。
  2. 資料最小化:分類與反濫用盡量用顯式 API 欄位或 opt-in telemetry,避免 steganography 式隱蔽通道。
  3. 本地變更需 consent:Native Messaging、瀏覽器擴充功能、LaunchAgent 等預置即違規,除非首次使用時逐項授權。
  4. 供應鏈可驗證:鎖定版本、校驗 npm 套件 hash、在隔離環境做 diff;Agent 主機與生產網路分區,便於一鍵重建。

桌面 Agent 與 Claude Code 一類工具的信任風險,往往不在模型回答品質,而在你未審閱的本地副作用不可見的出站 payload。在共享筆電或超賣 VPS 上跑 7×24 Agent,還疊加鄰居干擾與長連線中斷;對需要可稽核、可 SSH、可裝 Xcode 與 Claude Code 的生產或 CI 平面,NUKCLOUD 多區域裸金屬 Mac/雲端 Mac 節點提供獨佔實體機、Root 權限與按天/月彈性計費——Agent 環境與企業日常機分離,洩露面更小。可先造訪 定價頁 對照規格,再在 下單頁 試跑隔離 dev 環境。

06常見問題

Claude Code 隱寫術算不算間諜軟體?
法律定性因轄區而異。工程上:事件 B 是未在 UI 披露的 system prompt 分類標記,事件 A 是未授權的本地 Native Messaging 預置。二者都嚴重損害信任,但是否構成「間諜軟體」需結合合約與本地法;企業應按下文 Runbook 緩解,而非僅依賴品牌信譽。
普通 Claude 網頁版會受影響嗎?
不會。隱寫邏輯在 Claude Code CLI 用戶端內,與瀏覽器聊天無關。若你只用 claude.ai 網頁,無需為事件 B 升級 CLI;但若本機同時裝了 Claude Code 或 Desktop,仍建議分別處理版本與 manifest。
怎麼刪除 Claude Desktop 寫入的 Native Messaging 注入?
在 macOS 各 Chromium 瀏覽器的 NativeMessagingHosts 目錄刪除 com.anthropic.claude_browser_extension.json,並確認 Claude Desktop 重啟後是否再生。據 Hanff 報告,刪除後可能被應用重建;長期方案是停用 Desktop 的瀏覽器整合功能或使用不包含該行為的版本,並監控目錄變更。
時區設成中國就會被打標籤嗎?
單獨改時區不夠。據逆向報告,日期 -/ 僅在 ANTHROPIC_BASE_URL 已指向非官方端點時區為 Asia/ShanghaiAsia/Urumqi 時疊加。直連官方 API 時,據報不進入該程式碼路徑。
apostrophe trick(單引號把戲)到底是什麼?
Today's 一詞中,把 ASCII 撇號 U+0027 換成視覺上幾乎相同的 U+2019U+02BCU+02B9,編碼「網域名單命中/AI lab 關鍵字命中」等組合。人類閱讀無差異,Unicode 感知的日誌或伺服器可解碼。
4 月 Desktop 事件和 6 月隱寫術是同一回事嗎?
不是。事件 A 影響 Claude Desktop 與瀏覽器橋接;事件 B 影響 Claude Code 在自訂 API 路由下的 system prompt。產品、觸發條件、修復版本均不同,對內通報與安全掃描應分開列項。
為什麼 Anthropic 要加這個(據公開說法)?
Thariq Shihipar 稱,據其說法這是針對未授權轉售與模型蒸餾的實驗;The Register 報導公司正投資分類器與行為指紋等反蒸餾措施。社群爭議在於:目的可被理解,隱蔽修改開發者工具發出的 prompt 的方式難以被接受,且移除時未寫入 changelog。
我還需要把 Claude Code 升到 2.1.197 嗎?
建議升級。2.1.197 已合併移除隱寫 PR。若你曾使用自訂 ANTHROPIC_BASE_URL,升級後仍應複查環境變數與 CI 映像;changelog 未提及此項,合規團隊宜保留升級記錄與版本鎖定策略。
用 API 中轉(如國內閘道)是否一定會被標記?
據逆向報告,只要 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 年務實的一票。