Claude Code 隱寫術事件:Anthropic 如何用一個單引號給你打標籤(2026)
2026 年 6 月,開發者社群炸開鍋:據 thereallo.dev 逆向分析,Claude Code 會在系統提示詞 Today's date is … 這一行嵌入肉眼不可見的 Unicode 隱寫標記——但僅當你將 ANTHROPIC_BASE_URL 指向代理時才觸發。本文面向使用 Claude Code / Claude Desktop 的開發者與技術決策者,釐清事件 A(Desktop 未授權篡改)與事件 B(CLI 隱寫遙測)的差異,附 Unicode 對照表、XOR(91) 混淆機制、HN 350+ 分辯論、Anthropic 2.1.197 回滾、五步防護 Runbook 與十題 FAQ。
TL;DR 三句話摘要
- 2026 年 6 月:據逆向,Claude Code 在
ANTHROPIC_BASE_URL指向代理(非api.anthropic.com)時,於系統提示詞Today's date is …行嵌入 Unicode 撇號指紋與日期格式變體,對人類不可見、伺服器可解析。 - 目的與移除:Anthropic 承認此為 3 月啟動的反蒸餾/防轉售實驗,但採隱蔽實作;已在 2.1.197(2026 年 7 月 2 日)回滾,changelog 卻隻字未提。
- 別混淆:4 月事件 A(Claude Desktop + Alexander Hanff + Native Messaging)與 6 月事件 B(Claude Code + thereallo.dev + 提示詞隱寫)是兩起獨立但互強的信任危機。
內容目錄
一、三大痛點:為什麼開發者該警惕
- 透明度崩塌:Claude Code 要求 shell 存取、檔案讀寫與完整開發環境信任,卻據爆料在 2.1.91 起(2026 年 4 月 2 日)悄悄嵌入環境指紋邏輯,release notes 隻字未提——這與「負責任 AI」品牌敘事直接衝突。
- 事件混淆:媒體常把 4 月 Claude Desktop 的 Native Messaging 爭議與 6 月 Claude Code 隱寫術混為一談;兩者產品、攻擊面與修復路徑完全不同,決策者需要一張對照表才能正確評估風險。
- 繞過成本極低、傷害卻真實:據逆向,改時區、換域名或 patch 二進位即可繞過標記;但對被標記的帳號,可能觸發限速、審查或封禁。更根本的問題是:你無法審計一個你不確定是否還在偷偷上報的 CLI 工具。
二、事件 A vs 事件 B 對照矩陣
在深入技術細節前,必須先區分兩起獨立事件——它們時間相近、品牌相同,但產品與機制截然不同。
| 維度 | 事件 A:Claude Desktop 未授權篡改 | 事件 B:Claude Code 提示詞隱寫術 |
|---|---|---|
| 時間 | 2026 年 4 月(3 月 21 日日志已有安裝記錄) | 2026 年 6 月 30 日 thereallo.dev 公開逆向;邏輯最早可追溯 2.1.91 |
| 產品 | Claude Desktop(Electron macOS 客戶端,com.anthropic.claudefordesktop) | Claude Code(CLI 開發者工具,npm 全域安裝) |
| 爆料者 | 隱私顧問 Alexander Hanff | 開發者 thereallo.dev(Reddit 用戶 LegitMichel777 率先質疑) |
| 核心機制 | 靜默寫入 com.anthropic.claude_browser_extension.json Native Messaging 清單,預授權 3 個 Chrome 擴展 ID 呼叫本機 chrome-native-host 二進位 | 在 API 請求系統提示詞的 Today's date is … 行嵌入 Unicode 撇號指紋與日期格式變體 |
| 觸發條件 | 安裝或啟動 Claude Desktop 即自動執行,無需用戶操作 | 僅當 ANTHROPIC_BASE_URL ≠ api.anthropic.com 時啟動後續檢查 |
| 爭議定性 | 未授權系統篡改、跨信任邊界預授權 | 隱蔽遙測(covert telemetry)、提示詞隱寫通道 |
| 覆蓋範圍 | Chrome、Edge、Brave、Arc、Vivaldi、Opera、Chromium——即使瀏覽器尚未安裝也預建目錄 | 所有將 Claude Code 指向自訂 API 代理/閘道器的開發者 |
| 持久性 | 刪除後重啟 Claude Desktop 會自動重建(日志記錄 31+ 次安裝事件) | 每次符合條件的 API 請求均攜帶標記,直至 2.1.197 回滾 |
事件 A 的關鍵檔案路徑範例:~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json——據 Hanff 爆料,用戶從未安裝任何 Anthropic 瀏覽器擴展,卻被預先授權。
三、事件 B 技術拆解:Unicode、XOR 與觸發條件
3.1 觸發鏈:只有代理用戶才會被標記
據逆向,整條檢測鏈的入口是環境變數 ANTHROPIC_BASE_URL:
- 若未設定,或仍指向官方預設
api.anthropic.com→ 直接返回,不觸發任何隱寫邏輯。 - 若指向自訂代理/閘道器 → 解析 hostname,與內建名單比對。
- 同時讀取系統時區,檢查是否為
Asia/Shanghai或Asia/Urumqi。 - 將比對結果編碼進
Today's date is …這一行,隨正常 API 請求發送——無額外網路請求、無獨立 telemetry 欄位。
3.2 域名名單:base64 + XOR(91) 雙重混淆
據逆向,約 147 條域名規則以 base64 編碼後再經 XOR 金鑰 91 混淆,藏在 Claude Code 二進位中,避免被簡單 strings 命令提取。解碼後涵蓋:
- 中國科技巨頭域名(百度、阿里、螞蟻、字節等)
- AI 實驗室與閘道器:deepseek、moonshot、minimax、zhipu(智譜)、baichuan、stepfun、01ai 等 11 條關鍵詞規則
- 大量 Claude API 鏡像站與帳號轉售商域名
硬核數據:147 條域名規則 + 11 條 AI 實驗室關鍵詞 × 4 種撇號狀態 × 2 種日期格式 = 理論上可編碼 3 bit 環境分類資訊。
3.3 Unicode 撇號對照表(核心隱寫通道)
據 thereallo.dev 與社群逆向,四種視覺上幾乎相同的撇號承載四種偵測狀態:
| 字符 | Unicode | 觸發條件(known / labKw) | 示例字串 |
|---|---|---|---|
' | U+0027 | 基線:未命中域名且未命中關鍵詞 | Today's date is 2026-06-30. |
' | U+2019(右單引號) | 命中已知域名(known=true, labKw=false) | Today's date is 2026-06-30. |
ʼ | U+02BC(修飾符撇號) | 命中 AI 實驗室關鍵詞(known=false, labKw=true) | Todayʼs date is 2026-06-30. |
ʹ | U+02B9(修飾符角分號) | 域名與關鍵詞皆命中(known=true, labKw=true) | Todayʹs date is 2026-06-30. |
3.4 日期分隔符:時區的第二條通道
| 時區狀態 | 日期格式 | 示例 |
|---|---|---|
非 Asia/Shanghai / Asia/Urumqi | 連字號 - | Today's date is 2026-06-30. |
| 命中中國時區 | 斜線 / | Today's date is 2026/06/30. |
組合後,伺服器收到看似完全正常的自然語言句子,卻能從碼點差異還原:此用戶是否掛代理、是否在中國時區、代理是否指向已知轉售商或 AI 實驗室。
四、動機、HN 辯論與反蒸餾背景
4.1 為什麼 Anthropic 要這樣做?
Anthropic 工程師 Thariq Shihipar(Claude Code 團隊)在 X 上承認:這是 3 月啟動的實驗,旨在「防止未授權轉售商濫用帳號與模型蒸餾(model distillation)」。背景脈絡包括:
- 2026 年 2 月,Anthropic 公開指控 DeepSeek、Moonshot AI、MiniMax、阿里巴巴等未經授權提取 Claude 模型能力
- Claude Code 源碼外洩後,社群發現
ANTI_DISTILLATION_CC旗標可在 API 請求中注入假工具資料,使輸出對模型訓練「有毒」 - 隱寫標記是同一反蒸餾戰略的隱蔽分支——但選擇不告知用戶,引發更大信任反噬
4.2 Hacker News 350+ 分辯論
thereallo.dev 文章在 Hacker News 引發激烈討論,帖文累積 350+ 分。主要分歧:
| 立場 | 論點 |
|---|---|
| 理解派 | 反蒸餾是合理商業利益;中國開發者本就不在官方服務區,透過轉售商繞過地理限制本身就有風險 |
| 反對派 | 開發者工具不應含未披露的指紋機制;隱蔽實作比公開 ToS 限制更惡劣;繞過成本極低說明投資回報可疑 |
| 技術派 | Unicode 隱寫作為分類通道設計精巧,但違反最小披露原則;應在請求 header 明示 X-Client-Classification 而非藏進自然語言 |
五、間諜軟體爭議:未授權篡改 vs 隱蔽遙測
「間諜軟體(spyware)」一詞在兩起事件中被頻繁使用,但技術本質不同:
- 事件 A — 未授權篡改(unauthorized tampering):Hanff 稱 Claude Desktop 在未告知、未徵得同意的情況下,修改第三方瀏覽器的 Native Messaging 配置,預授權高權限本機二進位。這違反 Chromium 生態「用戶明確授權後才啟用」的行業慣例,也可能觸及歐盟 ePrivacy 指令第 5(3) 條。
- 事件 B — 隱蔽遙測(covert telemetry):Claude Code 不新增獨立上報接口,而是將環境分類編碼進每次 API 請求的系統提示詞。用戶與抓包工具看到的仍是「正常模型呼叫」,但 Anthropic 伺服器可從碼點差異讀取標記。
獨立評論者 Noah Kenney 審閱 Hanff 的事件 A 發現後表示認同,並指出預授權橋接「持久且難以被一般用戶發現或移除」,大幅擴大瀏覽器攻擊面。資安廠商 安天(Antiy Labs) 亦發布專題報告《Claude Desktop 未授權預配置高權限瀏覽器通信通道風險分析》,從 MCP / Native Messaging 架構角度論證此設計具備遠端入侵的理論前置條件。
六、第三方驗證與 Anthropic 回應
6.1 多方驗證鏈
- thereallo.dev(2026-06-30):完整逆向 2.1.196 二進位,還原 Unicode 編碼函數與 XOR 混淆邏輯
- Reddit / GitHub:LegitMichel777 率先質疑;Adnane Khan 等發布 2.1.193–2.1.196 版本交叉驗證
- Noah Kenney:獨立確認 Hanff 事件 A 的 Native Messaging 發現
- 安天 Antiy Labs:發布 Claude Desktop 未授權通道風險分析報告,並在社群呼籲關注桌面 Agent 供應鏈安全
6.2 Anthropic 官方回應與沉默的 changelog
Thariq Shihipar 2026 年 7 月 1 日在 X 承認代碼存在,稱「團隊早已打算下架,PR 已合併,明日版本完全回滾」。然而:
- 2.1.91(2026-04-02)引入時,release notes 隻字未提
- 2.1.197(2026-07-02)移除時,changelog 同樣 未說明回滾原因
- 對事件 A(Claude Desktop Native Messaging),截至本文撰寫時尚無公開正式回應
硬核數據補充:受影響版本跨度 2.1.91 → 2.1.196,隱藏約 3 個月;HN 討論帖 350+ 分;域名規則 147 條;XOR 金鑰 91(與 2.1.91 版本號呼應,據社群推演)。
七、Claude for Chrome 提示注入信任背景
兩起事件並非孤立——它們發生在 Anthropic 積極擴展「AI 控制瀏覽器」能力的同一時期。Claude for Chrome 擴展在內部紅隊測試中:
| 測試場景 | 攻擊成功率 |
|---|---|
| 自主模式,無安全緩解(123 個對抗案例) | 23.6% |
| 自主模式,加安全緩解後 | 11.2% |
| 瀏覽器專項四類攻擊(隱藏表單、URL 操控等) | 35.7% → 0%(專項緩解後) |
AI 研究者 Simon Willison 稱 11.2% 仍是「災難性」失敗率。事件 A 預授權的 Native Messaging 橋接,正是 Claude for Chrome 取得頁面 DOM、Cookie 與表單資料的高權限通道——在提示注入成功率尚未降至可接受水平時,靜默預裝此通道加劇了信任赤字。
八、五步防護 Runbook
- 立即升級並鎖版本:將 Claude Code 升級至 2.1.197 或以上,並用
npm list -g @anthropic-ai/claude-code確認版本;考慮 pin 版本避免自動升級回含爭議邏輯的舊版。 - 審計 API 端點配置:檢查
ANTHROPIC_BASE_URL是否指向非官方代理;若必須使用中繼,優先選擇可審計、有 SLA 的企業閘道器,並記錄所有路由變更。 - 掃描 Claude Desktop Native Messaging 殘留:在 macOS 執行
find ~/Library/Application\ Support -name "com.anthropic.claude_browser_extension.json" 2>/dev/null,審查是否仍存在預授權清單;不需要 Claude for Chrome 功能則手動移除並監控是否被重建。 - 建立請求可觀測性:在閘道器層記錄出站 system prompt 的 hex dump,抽樣檢查
Today後撇號碼點是否為 U+0027;配置 JSONL 日誌留存所有 Claude API 呼叫以供事後審計。 - 遷移至可審計的隔離執行環境:將 Claude Code / Cursor Agent 遷移至專用 Mac 節點,隔離 API Key、固定時區與網路出口,避免與個人桌面環境混用。
九、FAQ(10 題)
Q1:Claude Code 隱寫術(steganography)是什麼?
據逆向分析,當 ANTHROPIC_BASE_URL 指向非官方代理時,Claude Code 會將環境分類結果編碼進系統提示詞 Today's date is … 這一行——透過 Unicode 撇號變體與日期分隔符的細微差異傳遞資訊,對人類不可見,伺服器可解析。
Q2:事件 A 和事件 B 有什麼區別?
事件 A(4 月)是 Claude Desktop 未經同意寫入瀏覽器 Native Messaging 清單,屬未授權系統篡改。事件 B(6 月 30 日)是 Claude Code CLI 在 API 請求中嵌入隱寫標記,屬隱蔽遙測。產品、機制與修復路徑完全不同。
Q3:只有使用 API 代理才會被標記嗎?
據逆向,是的。若 ANTHROPIC_BASE_URL 未設定或指向 api.anthropic.com,隱寫邏輯不會觸發。使用官方端點的直連用戶不受此機制影響。
Q4:Unicode 撇號如何編碼環境資訊?
四種狀態:U+0027(基線)、U+2019(命中域名)、U+02BC(命中 AI 實驗室關鍵詞如 deepseek/moonshot/zhipu)、U+02B9(兩者皆命中)。中國時區則額外將日期 - 改為 /。
Q5:這算不算間諜軟體(spyware)?
社群意見分裂。事件 A 被批評為未授權篡改;事件 B 被批評為隱蔽遙測。Anthropic 稱為反蒸餾實驗,但隱蔽實作方式普遍被認為損害開發者信任,而非 proportionate 的商業防護。
Q6:哪些版本受影響?何時移除?
據爆料,邏輯最早出現在 2.1.91(2026-04-02),在 2.1.193–2.1.196 被廣泛驗證。Anthropic 確認已於 2.1.197(2026-07-02)完全回滾,但 changelog 未提及。
Q7:Anthropic 為什麼要嵌入隱寫標記?
官方承認目的是防止未授權轉售商濫用帳號與模型蒸餾。2026 年 2 月 Anthropic 曾公開指控多家中國 AI 實驗室未經授權提取 Claude 能力,隱寫標記是同一戰略的隱蔽分支。
Q8:如何檢查自己是否曾被標記?
升級至 2.1.197+;審計 ANTHROPIC_BASE_URL;在閘道器層對 system prompt 做 hex dump,檢查 Today 後字節是否偏離 U+0027;對照本文 Unicode 對照表。
Q9:Claude for Chrome 的提示注入風險跟這件事有關嗎?
屬同一信任生態。Anthropic 測試顯示 Claude for Chrome 提示注入成功率從 23.6% 降至 11.2%(加緩解後),事件 A 的 Native Messaging 橋接正是 Chrome 擴展的高權限通道,兩者共同反映 AI 工具鏈透明度不足。
Q10:我還能安全使用 Claude Code 嗎?
可以,但需主動治理:升級、鎖定官方端點、隔離 API Key、審計 Native Messaging 殘留,並在可審計的隔離環境運行 Agent。詳見上文五步 Runbook。
十、參考來源
- thereallo.dev — Claude Code Prompt Steganography(2026-06-30 原始逆向分析)
- The Register — Anthropic is removing its covert code for catching Chinese competitors(2026-07-01)
- The Decoder — Hidden code in Claude Code secretly flagged Chinese users
- The Register — Claude Desktop changes software permissions without consent(Alexander Hanff,2026-04-20)
- Antiy Labs — Risk Analysis of Unauthorized Pre-Configuration of High-Privilege Browser Communication Channels in Claude Desktop
- Thariq Shihipar(@Anthropic Claude Code 工程師)— X 平台官方回應(2026-07-01)
- Anthropic Research — Mitigating the risk of prompt injections in browser use(Claude for Chrome 23.6% / 11.2% 數據)
- Hacker News — thereallo.dev 討論帖(350+ points)
- gm7.org 資安知識庫 — Claude Code Unicode 隱寫技術分析
- Malwarebytes / gHacks — Claude Desktop Native Messaging 報導
結語:AI 供應商信任時代,開發者需要可審計的執行環境
Claude Code 隱寫術事件的核心教訓不是「Anthropic 邪惡」或「代理用戶活該」——而是任何要求 shell 存取與檔案讀寫的 AI 工具,都必須以可驗證的透明度換取信任。隱蔽的 Unicode 指紋、沉默的 changelog、靜默預裝的 Native Messaging 橋接,三者疊加出一個危險訊號:供應商在「用戶不知情」與「商業防護」之間,反覆選擇了前者。
對多數開發者而言,在個人 Mac 或 Linux VPS 上直接跑 Claude Code 看似零成本,但實際上面臨三重長期風險:供應商行為不可審計(你不知道下一版又會悄悄加什麼)、API Key 與個人環境混用(時區、代理、瀏覽器殘留互相污染)、以及 Agent 7×24 運行缺乏隔離(一次提示注入或帳號封禁即可癱瘓整個工作流)。在 Linux GPU VPS 上自建閘道則伴隨 CUDA 驅動排障與 Apple 工具鏈缺失;純依賴公有雲 API 又無法控制出站請求的 system prompt 內容。
若你需要在 Claude Code 信任危機後建立可預期、可審計、與 Apple 工具鏈天然共存的 Agent 生產環境,租賃 VPSMAC 的 M4 Mac 雲主機是更優解:專用節點隔離 API Key 與網路出口,launchd 7×24 守護無需 Docker 抽象層,JSONL 日誌可留存每次 API 呼叫以供事後 hex 審計,且與 Xcode CI、Cursor Agent、LiteLLM 多模型路由無縫銜接——把「信任供應商」變成「審計自己的基礎設施」。