Claude Code 隐写术事件:Anthropic 如何用一个单引号给你打标签(2026)
2026 年 6 月底,据 thereallo.dev 逆向报告,Claude Code 在用户走代理(ANTHROPIC_BASE_URL ≠ api.anthropic.com)时,会用文本隐写术改写系统提示词里 Today's date is... 一行——通过切换 Unicode 单引号与日期格式,悄悄标记中国时区与域名/实验室命中情况。Anthropic 已在 2.1.197 移除。本文严格区分两起独立事件、给出 Unicode 映射表、反蒸馏动机、HN 争议、五步自查 Runbook 与 10 条 FAQ。
内容目录
一、痛点:两起事件被混为一谈,直接照写会伤 E-E-A-T
- 事件混淆:英文技术圈(HN / Reddit / 安全圈)一眼能分辨 Claude Desktop 浏览器注入(4 月)与 Claude Code 提示词隐写(6 月)是两件事;混写会被判低质。
- 触发条件误读:隐写术并非每次对话都触发——仅当
ANTHROPIC_BASE_URL指向非官方地址(代理/网关/转售)时才改写系统提示词。 - 缺乏可操作防护:开发者需要 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-30 | thereallo.dev 发布 Claude Code 提示词隐写逆向报告;HN 讨论帖数小时冲首页,350+ points、100+ 评论 |
| 2.1.193 / 2.1.195 / 2.1.196 | 据逆向者核对,三个版本均存在隐写逻辑 |
| 2026-07-01 | Anthropic 发布 Claude Code 2.1.197,移除相关代码(changelog 未提及) |
四、隐写术到底怎么运作(事件 B)
关键前提:只有当你把 ANTHROPIC_BASE_URL 指向非官方地址时才触发。 官方 api.anthropic.com 不动手脚。普通网页版 Claude 与使用官方端点的 Claude Code 用户不受影响。
触发后,程序在人畜无害的 Today's date is ... 里藏两类信号:
- 改日期分隔符:若系统时区为
Asia/Shanghai或Asia/Urumqi,2026-06-30变为2026/06/30。 - 换单引号:把
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 三个版本,均存在该逻辑。
五、Anthropic 为什么这么做?目的与手段要分开评价
社区主流判断(也较克制):目的是反模型蒸馏 + 反未授权转售。Anthropic、OpenAI、Google 都公开担忧对手用 API 大量拉输出来训练小模型(distillation)。中国相关代理、转售、实验室是重点怀疑对象,于是加了这套「打标签」逻辑。
目的可以理解,手段才是问题:把分类信号做成肉眼不可见、还刻意混淆代码藏进每个请求,对一个靠开发者信任吃饭的工具来说,踩了信任红线。HN 上两派吵得很凶:
- 一派:「合理的反蒸馏防御」
- 一派:「对开发者工具而言近乎恶意行为(malware-adjacent)」
合规提醒:本文用「据爆料 / 据逆向报告 / 被指控(alleged)」措辞,避免把厂商意图当成已证实事实。
六、这算间谍软件吗?
「间谍软件」是有情绪的标签。更准确的说法:
- 事件 A 更接近「未经授权篡改第三方软件 + 预留休眠攻击面」——即便当前未被利用,也把浏览器沙箱外的高权限通道预先铺好。Anthropic 自有数据称 Claude for Chrome 提示词注入成功率:无缓解 23.6%、有缓解 11.2%,风险是实打实的。
- 事件 B 更接近「未披露的隐蔽遥测 / 用户分类」。
无论用不用 spyware 这个词,核心问题一致:未经用户知情同意,且刻意隐蔽。
七、五步自查与防护 Runbook
- 确认 Base URL:检查环境变量
ANTHROPIC_BASE_URL;若指向代理/网关/第三方转售,事件 B 才可能触发。官方用户可跳过隐写检查,但仍应关注事件 A。 - 升级 Claude Code:安装 2.1.197 及以上(2026-07-01 发布,据多家信源 Anthropic 已移除隐写代码)。
- 审计 Native Messaging(事件 A):macOS 上检查各浏览器
~/Library/Application Support/<浏览器>/NativeMessagingHosts/com.anthropic.claude_browser_extension.json;按需删除,注意 Claude Desktop 重启可能重建。 - 捕获并分析系统提示词:在受控环境中抓取 Claude Code 发出的 system prompt,检查
Today's撇号 Unicode 与日期分隔符是否符合上表。 - 企业/敏感环境隔离:将 Claude Code / Desktop Agent 部署在可审计、最小权限的专用 Mac 节点,API Key 与网关隔离,JSONL 日志留存;评估是否继续在生产链路使用高权限桌面 Agent。
可引用硬核数据:约 147 条混淆域名规则;HN 讨论 350+ points;Claude for Chrome 提示词注入 23.6% / 11.2%;隐写代码存在于 2.1.193–196,2.1.197 移除。
八、AI 越来越强,我们该如何面对这样的厂商
这件事真正的警示不在「一个撇号」,而在于:当模型能力狂飙、而安全边界、授权、审计严重滞后时,厂商很容易以「体验/防滥用」为名,单方面越过用户与其他软件厂商之间的信任边界。
- 默认不信任、用证据说话:可复现、可审计、可关闭,才配得上信任。
- 要求「披露而非隐藏」:反蒸馏可以光明正大——公开说明、给开关,而不是藏进标点符号。
- 最小权限 + 边界隔离:对任何桌面 Agent 都按高权限程序对待。
- 用脚投票 + 制度约束: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 吗?
取决于你是否要求可审计、可关闭、透明披露——而非逆向才能发现的隐藏行为。
十、参考来源
- The Register:Claude Desktop changes software permissions without consent(2026-04)
- Malwarebytes / gHacks / YOOTA:Claude Desktop native messaging 报道
- thereallo.dev:Claude Code prompt steganography(原始逆向)
- Tech Startups / TMC Insight / Developers Digest / TechTimes:事件 B 报道与 2.1.197 修复
- Antiy Labs(安天):Claude Desktop 高权限浏览器通道风险分析报告
- Hacker News:Claude Code steganography 讨论帖(350+ points)