Anthropic 这次又翻车了。
6 月 30 日,一名 Reddit 用户发了篇逆向分析。他拆了 Claude Code 2.1.196 的二进制文件,在里面找到了一段函数。触发条件很具体,做的事情很隐蔽。
当你使用代理连接 Claude Code 时,它会检查系统时区是否为 Asia/Shanghai 或 Asia/Urumqi,并判断代理 URL 是否为中国域名或指向某个中国 AI 实验室,然后在系统提示词里动手脚。

具体干了啥呢?改日期格式和英文撇号的 Unicode 字符,比如把日期分隔符从「2026-06-30」变成「2026/06/30」,「Today's」 里的单引号被替换成另一种肉眼完全无法区分的 Unicode 变体。三个变体对应三种状态:命中中国域名、命中中国 AI 实验室关键词、两者都命中。具体显示为:
· 中国域名 + 非 AI 实验室 → ’(右单引号 ')
· 非中国域名 + 中国 AI 实验室 → ʼ(修饰符撇号 ʼ)
· 中国域名 + 中国 AI 实验室 → ʹ(修饰符角分号 ʹ)
三个字符肉眼几乎无法分辨,加上日期分隔符的差异,一共能编码 6 种身份状态。用户的请求表面上看只是发送了一段普通英文提示词,Anthropic 后端服务器扫描一下日期分隔符和单引号的 Unicode 编码,就能瞬间给该用户打上标签:是不是挂了 VPN、是否实际位于中国、是否属于某家 AI 实验室。
被发现后,Anthropic 承认了。说这是 3 月上线的实验,用于检测 API 滥用和模型蒸馏攻击,承诺在次日回滚。
但这件事引发的讨论不只是一个版本回滚能解决的。国内外所以社媒上几个高赞回答直接称其为「间谍软件」。核心争议不完全是 Anthropic 想检测什么,而是它选择了这样一种见不得光的方式。
文本隐写术
Claude Code 这段检测机制具体的触发条件是 ANTHROPIC_BASE_URL 被设置且指向非官方地址。如果这个环境变量没设,或者指向 api.anthropic.com,路径直接返回,无事发生。
接下来的检测逻辑分两路。
第一路检查系统时区,只认两个值,Asia/Shanghai 和 Asia/Urumqi。如果命中,日期格式从连字符换成斜杠。
第二路检查代理域名。域名名单被 base64 编码后通过 XOR 91 混淆藏在二进制里。解码后包含 147 个条目。百度、阿里、蚂蚁、字节、Moonshot、MiniMax、StepFun 都在里面,还有大量 Claude 镜像站和代理转售域名。
如果域名命中,英文撇号被替换。普通撇号 ' 是 U+0027;命中中国域名换成 U+2019(右单引号);命中 AI 实验室关键词换成 U+02BC(修饰符撇号);两者都命中换成 U+02B9(修饰符角分号)。
这三个字符在绝大多数等宽字体里渲染结果完全一样,代码审查看不出,PR diff 看不出,你在终端里复制出来也看不出。
系统提示词里本来就有一句固定的话「Today's date is 2026-06-30.」改完之后它看起来还是「Today's date is 2026-06-30.」。但 Anthropic 的服务器收到后,可以解析这些字符差异,在后台给用户打标签:这个用户挂了代理,实际在中国,甚至知道用的是什么类型的代理。
这也是为什么研究者把它叫做文本隐写术(prompt steganography)。
比技术更值得讨论的问题
无论是 Reddit、X、还是知乎,讨论这件事的几个高赞回答,情绪非常一致。
Anthropic 本来可以公开做这件事,该检测就检测,哪怕甩锅给美出口管制法规也行,硅谷巨头里面限制中国区用户访问的不止它一家。微软限制中国区访问,直接在网页上弹提示;谷歌说不做中国市场就不做。而 Anthropic 选了一个最拧巴的方案:悄悄混淆代码、Unicode 隐写、完全绕过用户知情,也不知道它究竟想干嘛。
还有的高赞回答把事件上升到系统性风险的层面。一位安全博主在分析里展开了一个场景:Unicode 标准里有数千个视觉上相同的字符,仅空格就有十几个码位。一个 500 词的 system prompt 能携带约 100 到 200 bit 的隐写信息。今天系统提示词里改的是日期格式和撇号,理论上同一套机制可以扩展到本机用户名、操作系统版本、工作目录路径特征、环境变量里的 API key 前缀。客户端代码能读什么,就能编码什么。

Anthropic 技术团队信任负责人公开回应此事时用的措辞也是越描越黑,他说这是个“实验”,语气像是在描述一次寻常的 A/B 测试。但这个所谓的“实验”从今年 3 月运行到 6 月底、涉及多工程师实现、包含了混淆代码和 Unicode 隐写的功能。这个说法在国内外社交媒体上都受到了质疑。
AI 编程工具的权限是否过高
如今 AI 编程工具盛行,开发者允许 Claude Code、Cursor、Copilot 读取文件、执行命令、操作 git。原本大家能接受这些权限的前提是,工具是我主动授权的,行为是我看得到的。
而这次的“隐写”事件打破了这个默认信任。
如果你信任了一个编程智能体,你给它代码库访问权限,让它帮你 commit,这些权限本身已经接近 CI/CD 的边界。如果这份信任同时基于一款在二进制里嵌了混淆域名列表和 Unicode 隐写逻辑的工具,你需要重新评估的问题不是 Anthropic 的动机,是信任模型本身。
发现这个问题的安全研究员在自己的博客里写了一段话,大意是:开发者工具可以有规则,API 服务商可以检测滥用。但当一款同时拥有文件系统和 Shell 访问权限的工具开始把分类信息藏在看不见的标点符号里时,正确的反应是审查。
知乎上有条评论引用了一句话:一个被允许读写文件和执行命令的 agent,同时在悄悄检测你的网络环境并通过 Unicode 字符把结果上报。今天它能给你报告时区和域名,明天就能偷掉你所有的数据。
这句话可能有点极端,但它的逻辑是对的。信任不是在产品说明里写出来的,信任是在没人注意的角落里,代码依然干净。
失去的信任能回滚吗
这项功能针对的是谁,那份 147 条域名名单就能看明白。
名单里是百度、阿里、字节、Moonshot、MiniMax、StepFun,以及大量中国区的代理和镜像站,时区检测指向的是上海和乌鲁木齐。
也是在最近几天,国内又有新一批 Claude Code 用户账号被封禁,这与隐写标记的时间线恰好是吻合的,Claude Code 一直在加深对中国区用户的封锁已经是人尽皆知的事实。
中国社区的愤怒是不言而喻的,但这次事件也在海外开发者社区引起了恐慌。
Reddit 上那篇逆向分析帖子的评论区里,排在最前面的一条评论问了一个让很多人沉默的问题:如果一个工具可以因为你是中国人就秘密传输你的系统信息,他们还有什么不敢做的?是不是也在针对非中国用户做其他看不见的操作?
Anthropic CEO Dario Amodei 反复在公开场合强调 AI 安全至上的立场,Claude Code 的隐写代码让这一切变得更加讽刺。
尽管 Anthropic 承诺在下一版本回滚这项功能,隐写标记可以被删掉,但失去的信任可不会跟着一起恢复。
