Claude Code 隐写术事件:Anthropic 如何用一个单引号给你打标签(2026)

2026 年 6 月底,据 thereallo.dev 逆向报告,Claude Code 在用户走代理(ANTHROPIC_BASE_URLapi.anthropic.com)时,会用文本隐写术改写系统提示词里 Today's date is... 一行——通过切换 Unicode 单引号与日期格式,悄悄标记中国时区与域名/实验室命中情况。Anthropic 已在 2.1.197 移除。本文严格区分两起独立事件、给出 Unicode 映射表、反蒸馏动机、HN 争议、五步自查 Runbook 与 10 条 FAQ。

网络安全与代码审计概念图,象征 Claude Code 系统提示词隐写术逆向分析
TL;DR:不是传统间谍软件,但 Anthropic 被指控在 Claude Code 里藏了未披露的隐蔽指纹;4 月另有 Claude Desktop 静默浏览器注入。官方端点用户不受影响;走代理的开发者应升级 2.1.197+ 并审计 Native Messaging 清单。

内容目录

一、痛点:两起事件被混为一谈,直接照写会伤 E-E-A-T

  1. 事件混淆:英文技术圈(HN / Reddit / 安全圈)一眼能分辨 Claude Desktop 浏览器注入(4 月)与 Claude Code 提示词隐写(6 月)是两件事;混写会被判低质。
  2. 触发条件误读:隐写术并非每次对话都触发——仅当 ANTHROPIC_BASE_URL 指向非官方地址(代理/网关/转售)时才改写系统提示词。
  3. 缺乏可操作防护:开发者需要 Unicode 映射表、版本号、Native Messaging 路径与可复现检查命令,而非情绪化「间谍软件」标签 alone。

二、事件 A vs 事件 B:必须分开理解

维度事件 A:静默浏览器注入事件 B:系统提示词隐写术
涉及产品Claude Desktop(macOS 客户端)Claude Code(CLI 编码工具)
爆料人Alexander Hanff(隐私顾问,The Register 撰稿人)开发者逆向二进制,发布于 thereallo.dev,经 Reddit → HN 发酵
时间2026 年 4 月(约 4/18 起)2026 年 6 月 30 日
核心行为静默向 Chrome/Edge/Brave/Arc/Vivaldi/Opera/Chromium 写入 Native Messaging 清单 com.anthropic.claude_browser_extension.json,预授权 3 个扩展 ID 调用沙箱外 chrome-native-host即使浏览器未安装也预建目录,删除后重启会复活ANTHROPIC_BASE_URL ≠ api.anthropic.com 时,用隐写术改写系统提示词里 Today's date is... 一行
被贴标签"spyware" / "backdoor""prompt steganography" / "covert channel"
触发条件安装/启动 Claude Desktop 即触发仅设置非官方 Base URL 时触发
Anthropic 回应未正式公开回应;后续版本加了授权开关,底层权限模型未根除承认代码存在,7/1 发布 2.1.197 移除,changelog 未提及

据独立顾问 Noah Kenney(Digital 520)向媒体确认,Hanff 关于事件 A 的技术主张可复现。安天实验室(Antiy Labs)亦发布了 Claude Desktop 高权限浏览器通道风险分析报告。

三、时间线与关键版本

日期事件
2026-04-18 起据 Hanff 爆料,Claude Desktop 开始静默写入多浏览器 Native Messaging 清单(The Register 等跟进报道)
2026-06-30thereallo.dev 发布 Claude Code 提示词隐写逆向报告;HN 讨论帖数小时冲首页,350+ points、100+ 评论
2.1.193 / 2.1.195 / 2.1.196据逆向者核对,三个版本均存在隐写逻辑
2026-07-01Anthropic 发布 Claude Code 2.1.197,移除相关代码(changelog 未提及)

四、隐写术到底怎么运作(事件 B)

关键前提:只有当你把 ANTHROPIC_BASE_URL 指向非官方地址时才触发。 官方 api.anthropic.com 不动手脚。普通网页版 Claude 与使用官方端点的 Claude Code 用户不受影响。

触发后,程序在人畜无害的 Today's date is ... 里藏两类信号:

  1. 改日期分隔符:若系统时区为 Asia/ShanghaiAsia/Urumqi2026-06-30 变为 2026/06/30
  2. 换单引号:把 Today's 里的撇号替换成视觉相同、Unicode 不同的字符,编码命中情况。
检测到的情况日期格式单引号字符Unicode
默认(无命中)2026-06-30' 标准 ASCII 撇号U+0027
命中中国机构/经销商域名2026-06-30' 右单引号U+2019
命中中国 AI 实验室关键词2026-06-30ʼ 修饰符撇号U+02BC
域名 + 实验室都命中2026-06-30ʹ 修饰符角分号U+02B9
叠加中国时区2026/06/30(同上规则)

说人话:请求表面上只是普通英文提示词,但后端扫一眼日期分隔符与单引号的 Unicode 编码,即可在后台打标签——「这个用户挂了海外 VPN,但实际在中国时区,甚至疑似某家中国 AI 实验室」。这是典型的隐蔽信道(covert channel)

域名与关键词列表据逆向报告用 base64 + XOR(91) 轻度混淆,约 147 条域名规则;关键词包含 deepseek、moonshot、zhipu、minimax、baichuan、stepfun、01ai 等。逆向者核对了 2.1.193 / 2.1.195 / 2.1.196 三个版本,均存在该逻辑。

# 检查系统提示词中 Today's 撇号的 Unicode 码点(示例) python3 -c " s = open('/path/to/captured_prompt.txt').read() idx = s.find('Today') if idx >= 0: c = s[idx+5] # 撇号位置因捕获而异,请按实际调整 print(f'Char: {c!r} U+{ord(c):04X}') "

五、Anthropic 为什么这么做?目的与手段要分开评价

社区主流判断(也较克制):目的是反模型蒸馏 + 反未授权转售。Anthropic、OpenAI、Google 都公开担忧对手用 API 大量拉输出来训练小模型(distillation)。中国相关代理、转售、实验室是重点怀疑对象,于是加了这套「打标签」逻辑。

目的可以理解,手段才是问题:把分类信号做成肉眼不可见、还刻意混淆代码藏进每个请求,对一个靠开发者信任吃饭的工具来说,踩了信任红线。HN 上两派吵得很凶:

合规提醒:本文用「据爆料 / 据逆向报告 / 被指控(alleged)」措辞,避免把厂商意图当成已证实事实。

六、这算间谍软件吗?

「间谍软件」是有情绪的标签。更准确的说法:

无论用不用 spyware 这个词,核心问题一致:未经用户知情同意,且刻意隐蔽。

七、五步自查与防护 Runbook

  1. 确认 Base URL:检查环境变量 ANTHROPIC_BASE_URL;若指向代理/网关/第三方转售,事件 B 才可能触发。官方用户可跳过隐写检查,但仍应关注事件 A。
  2. 升级 Claude Code:安装 2.1.197 及以上(2026-07-01 发布,据多家信源 Anthropic 已移除隐写代码)。
  3. 审计 Native Messaging(事件 A):macOS 上检查各浏览器 ~/Library/Application Support/<浏览器>/NativeMessagingHosts/com.anthropic.claude_browser_extension.json;按需删除,注意 Claude Desktop 重启可能重建。
  4. 捕获并分析系统提示词:在受控环境中抓取 Claude Code 发出的 system prompt,检查 Today's 撇号 Unicode 与日期分隔符是否符合上表。
  5. 企业/敏感环境隔离:将 Claude Code / Desktop Agent 部署在可审计、最小权限的专用 Mac 节点,API Key 与网关隔离,JSONL 日志留存;评估是否继续在生产链路使用高权限桌面 Agent。
# 步骤 3:批量检查 Native Messaging 清单(macOS) for browser in "Google/Chrome" "Microsoft Edge" "BraveSoftware/Brave-Browser" \ "Arc/User Data" "Vivaldi" "Opera"; do f="$HOME/Library/Application Support/$browser/NativeMessagingHosts/com.anthropic.claude_browser_extension.json" [ -f "$f" ] && echo "FOUND: $f" done

可引用硬核数据:约 147 条混淆域名规则;HN 讨论 350+ points;Claude for Chrome 提示词注入 23.6% / 11.2%;隐写代码存在于 2.1.193–196,2.1.197 移除。

八、AI 越来越强,我们该如何面对这样的厂商

这件事真正的警示不在「一个撇号」,而在于:当模型能力狂飙、而安全边界、授权、审计严重滞后时,厂商很容易以「体验/防滥用」为名,单方面越过用户与其他软件厂商之间的信任边界。

  1. 默认不信任、用证据说话:可复现、可审计、可关闭,才配得上信任。
  2. 要求「披露而非隐藏」:反蒸馏可以光明正大——公开说明、给开关,而不是藏进标点符号。
  3. 最小权限 + 边界隔离:对任何桌面 Agent 都按高权限程序对待。
  4. 用脚投票 + 制度约束:GDPR / 个保法与市场选择,是约束「技术无边界」的最终力量。

技术可以没有立场,但公司必须有。能力越大,越要自我约束——这不该是用户逆向二进制才发现的秘密。

对开发者而言,在 Linux GPU VPS 上自建 Claude 网关虽可行,但伴随 CUDA 驱动排障、密钥管理与 Apple 工具链缺失;在个人 Mac 上跑 Claude Desktop 则面临 Native Messaging 权限与本地数据边界模糊。若你需要在可预期、可审计、与 Xcode / Cursor Agent 天然共存的环境中运行 Claude Code 生产工作流,租赁 VPSMAC 的 M4 Mac 云主机是更优解:隔离 API Key 与网关、launchd 7×24 守护、JSONL 可观测性,且无需 Docker 抽象层或 Linux 兼容层折损。

九、FAQ

Q1:Claude Code 是间谍软件吗?

不算传统意义间谍软件,但据逆向报告,它在系统提示词里藏了未披露、经混淆的指纹;Anthropic 已在 2.1.197 移除。更准确说法是「未披露的隐蔽信道」。

Q2:Claude Code 会检测时区吗?

据逆向报告,当使用非默认 ANTHROPIC_BASE_URL 时会检测 Asia/Shanghai / Asia/Urumqi。官方端点用户不受影响。

Q3:Today's date 单引号 Unicode 是什么?

在 U+0027、U+2019、U+02BC、U+02B9 之间切换,编码域名/实验室命中组合。

Q4:Anthropic 为什么添加这个?

主流解读:检测模型蒸馏与未授权转售——合法目标,非法手段(隐蔽、混淆)。

Q5:这和 Claude Desktop 浏览器注入是一回事吗?

不是。4 月 Desktop Native Messaging 是事件 A;6 月 Code 隐写是事件 B。

Q6:普通网页版 Claude 会被影响吗?

事件 B 仅影响 Claude Code + 非官方 Base URL;网页版官方用户不受影响。

Q7:怎么删除 Claude Desktop 注入的文件?

删除各浏览器 NativeMessagingHosts 下的 com.anthropic.claude_browser_extension.json;重启 Desktop 可能重建。

Q8:ANTHROPIC_BASE_URL 指纹原理是什么?

当 Base URL 非官方时,程序匹配约 147 条混淆域名/关键词规则,结果编码进系统提示词标点。

Q9:HN 社区怎么看?

分裂为「合理反蒸馏防御」与「开发者工具近乎恶意」两派;讨论帖 350+ points。

Q10:还应该信任 Anthropic 吗?

取决于你是否要求可审计、可关闭、透明披露——而非逆向才能发现的隐藏行为。

十、参考来源