Claude Code 暗藏水印:你的AI助手在偷偷标记你
一次寻常的更新,一个不寻常的发现

你打开终端,敲下 claude,Claude Code 还是那个 Claude Code。界面干净,响应流畅,一切如常。
但如果你是一个喜欢翻看代码的安全研究员,事情就没那么简单了。
就在昨天,一位安全研究员拆解了 Claude Code v2.1.196 的二进制包,发现了一个令人不安的设计。在系统提示词(system prompt)的最底层,Anthropic 悄悄塞入了一层数字指纹。这不是一个 Bug。二进制包经过 Anthropic 官方签名,TeamIdentifier Q6L2SF6YDW,每一个字节都经过审查。这意味着每一行代码都是有意为之。
你敲下的每一个问题,在到达 AI 之前,已经被打上了一个看不见的标记。
时区出卖了你:日期格式里的身份指纹

第一个水印藏在日期里,细微到几乎不可能被察觉。
Claude Code 会在系统提示词中嵌入当前日期,但格式并非随意选择。如果你身处 Asia/Shanghai 时区,日期会呈现为 2026/07/01 的样子;如果换成 Asia/Urumqi,同样的日期就会变成 2026-07-01。YYYY-MM-DD 和 YYYY/MM/DD 之间的选择,完全由你的时区决定。
这不是本地化。这是识别。
通过这种方式,Anthropic 可以仅凭一段系统提示词的输出,就反推出请求来自哪个地理区域。你不需要登录,不需要提供任何个人信息,你的时区已经替你说了一切。在 AI 推理的链式输出中,这段日期格式会像基因片段一样,被忠实地复制到每一个后续的 token 里。
一个引号的七十二变

更隐蔽的标记藏在标点符号里。
研究发现,Claude Code 会根据你连接的 API 端点,修改系统提示词中的撇号(apostrophe)字符。同一个字符,在不同链路上被替换成不同的 Unicode 变体。这些变体在视觉上完全一致,普通用户看到的就是一个普通的单引号,但在字节层面,它们是不同的编码。
这是什么意思?意思是如果你通过第三方代理或转售商调用 Claude API,Anthropic 可以凭借标点符号的变化,追踪到请求的真实来源。每一个引号都像一个微型信标,悄无声息地标记着你的请求路径。
更深一层的设计在于,这套机制只有在 ANTHROPIC_BASE_URL 被设置为非 Anthropic 官方端点时才会激活。也就是说,正常使用 Claude Code 的用户不会触发水印,但一旦你通过任何第三方渠道接入,标记就会自动嵌入。
藏在 base64 里的黑名单

如果你以为水印只是时间格式和标点符号,那还低估了这套系统。
研究者在二进制文件中发现了一份经过 base64 编码的域名列表,使用密钥 91 做了 XOR 加密。解码之后,里面包含了大量中国企业的域名,以及多家代理和转售商的服务地址。这份名单相当于一张”重点关注对象”列表,当请求来自这些域名时,水印机制会被触发得更彻底。
Anthropic 没有公开解释过这份名单的用途,也没有在更新日志中提及这些水印。一切都在静默中运行。
这套”数字指纹系统”的设计逻辑其实很清晰:如果你的请求路径在 Anthropic 的掌控之内,你不被标记;一旦你的请求绕过了官方通道,你的每一次对话都会被悄悄打上标记。从时区到标点,从 URL 到域名,每一层都叠加了一道几乎不可见的水印。
当 AI 开始学会”回头看”你

写代码的 AI 工具,正在用代码审视你。
这件事的本质不是技术漏洞。Claude Code 没有泄露你的密码,没有上传你的文件。它在做的,是更安静、也更难被察觉的事:在你看不到的地方,为你建立一个行为指纹。你的时区、你的 API 路径、你使用的代理,这些信息被编码成微小的格式差异,散布在每一个回复的 DNA 里。
当一家 AI 公司选择在自己的产品中埋入水印,当这个水印只出现在”非官方”的请求路径上,这到底是一种安全防护,还是一种商业监控?或者说,在 AI 时代的隐私版图里,我们和”官方渠道”之间的那道界限,究竟还剩下多少意义?
你下一次在终端里敲下 claude 的时候,那些飞速滚过的 token 里,有多少是你的问题,又有多少,是它偷偷放在你身上的标记?
来源:Hacker News | thereallo.dev
