Claude Code被指通过Unicode字符差异标记中国代理用户
Claude Code 被指在系统提示词里偷偷给中国代理用户“打水印”
一份 Reddit 帖子和一份 GitHub 上的独立验证报告指控:Anthropic 的编程工具 Claude Code 会悄悄检查用户是否通过中国相关的代理服务器访问,如果是,就在发给 Anthropic 的系统提示词里用几乎肉眼不可见的 Unicode 字符差异来“标记”这些用户。
具体怎么做的?安全研究员 Adnane Khan 在 GitHub 上发布了针对 Claude Code v2.1.193 到 v2.1.196 的逆向分析报告。他从二进制文件中提取出了完整的 JavaScript 代码,还原了整个机制。
Claude Code 在每次请求时都会在系统提示词中写入一行“Today's date is 2026-06-30.”之类的日期信息。报告称,当用户设置了 ANTHROPIC_BASE_URL 环境变量(用来把请求转发到非 Anthropic 官方的代理服务器时),Claude Code 会执行以下检查:
第一,看你的代理服务器域名是否在一个包含 147 个条目的列表里。这个列表用 XOR-91 编码做了简单混淆,解码后包含百度、阿里巴巴、蚂蚁集团、字节跳动、Moonshot AI、MiniMax、阶跃星辰等中国大厂和 AI 实验室的域名,以及大量中国开发者社区熟知的 Claude API 中转站域名。
第二,看你的系统时区是不是 Asia/Shanghai 或 Asia/Urumqi。
然后,它用两种方式把检测结果“编码”进系统提示词。一是日期分隔符:如果命中中国时区,日期格式从 2026-06-30 变成 2026/06/30。二是“Today's”里那个撇号,用四种视觉上几乎一模一样的 Unicode 字符来区分四种状态:普通 ASCII 撇号表示“啥也没命中”,U+2019(右单引号)表示“域名在列表里”,U+02BC(修饰字母撇号)表示“域名包含 AI 实验室关键词”,U+02B9(修饰字母 prime)表示“两者都命中”。
Adnane Khan 的报告用了一个精确的词来描述这个机制:隐蔽信道(covert channel)。
这些字符差异,正常用户几乎不可能注意到。它们不会以单独的遥测数据包发出,而是搭便车藏在每次请求都会发送的系统提示词里。
验证报告的作者在结论部分做了一个关键区分:这个机制是代理触发的(proxy-gated),只有在用户主动设置了非 Anthropic 官方 API 端点时才会激活。正常通过 api.anthropic. com 使用 Claude Code 的绝大多数用户不受影响。它也不是数据外泄,没有额外的网络请求或文件访问,只是在已有的系统提示词里做了字符替换。
但报告也指出了两个问题。
第一,它是未公开的。如果 Anthropic 在文档里写明“当你使用第三方代理时,我们会在系统提示词中嵌入路由元数据以检测滥用”,这就是一个开发者可以评估、接受或拒绝的遥测策略。但把信号藏在肉眼不可见的 Unicode 字符里,用 XOR 混淆域名列表,这让人没法审计。
第二,它误伤范围太广。很多用户使用 ANTHROPIC_BASE_URL 是为了完全合法的目的,比如通过企业网关路由、混用不同模型、或者在网络受限环境下工作。这些用户会被一视同仁地打上标记。而真正的专业转售商,看到这种机制后绕过它只需要几秒钟。报告原文的说法是:作为反滥用手段它很弱,作为隐私问题它标记了不该标记的人群。
Claude Code 不是一个普通的聊天窗口。它能读你的代码仓库、运行终端命令、修改文件。Anthropic 自己的工程文档里都举过 Claude Code 误操作的例子:删除远程 git 分支、上传 GitHub token、对生产数据库执行迁移。对于这样一个需要深度信任才能使用的工具,用户有权知道它在背后做了什么。
截至发稿时,Anthropic 尚未对这一指控做出公开回应。这个故事今天(6 月 30 日)刚刚曝出,相关指控来自 Reddit 帖子和一份独立安全研究员的逆向工程报告,还需要更多独立验证。代码已经被提取并公开,任何有能力的开发者都可以自行检查 Claude Code 的二进制文件来确认或否认这些发现。
一份 Reddit 帖子和一份 GitHub 上的独立验证报告指控:Anthropic 的编程工具 Claude Code 会悄悄检查用户是否通过中国相关的代理服务器访问,如果是,就在发给 Anthropic 的系统提示词里用几乎肉眼不可见的 Unicode 字符差异来“标记”这些用户。
具体怎么做的?安全研究员 Adnane Khan 在 GitHub 上发布了针对 Claude Code v2.1.193 到 v2.1.196 的逆向分析报告。他从二进制文件中提取出了完整的 JavaScript 代码,还原了整个机制。
Claude Code 在每次请求时都会在系统提示词中写入一行“Today's date is 2026-06-30.”之类的日期信息。报告称,当用户设置了 ANTHROPIC_BASE_URL 环境变量(用来把请求转发到非 Anthropic 官方的代理服务器时),Claude Code 会执行以下检查:
第一,看你的代理服务器域名是否在一个包含 147 个条目的列表里。这个列表用 XOR-91 编码做了简单混淆,解码后包含百度、阿里巴巴、蚂蚁集团、字节跳动、Moonshot AI、MiniMax、阶跃星辰等中国大厂和 AI 实验室的域名,以及大量中国开发者社区熟知的 Claude API 中转站域名。
第二,看你的系统时区是不是 Asia/Shanghai 或 Asia/Urumqi。
然后,它用两种方式把检测结果“编码”进系统提示词。一是日期分隔符:如果命中中国时区,日期格式从 2026-06-30 变成 2026/06/30。二是“Today's”里那个撇号,用四种视觉上几乎一模一样的 Unicode 字符来区分四种状态:普通 ASCII 撇号表示“啥也没命中”,U+2019(右单引号)表示“域名在列表里”,U+02BC(修饰字母撇号)表示“域名包含 AI 实验室关键词”,U+02B9(修饰字母 prime)表示“两者都命中”。
Adnane Khan 的报告用了一个精确的词来描述这个机制:隐蔽信道(covert channel)。
这些字符差异,正常用户几乎不可能注意到。它们不会以单独的遥测数据包发出,而是搭便车藏在每次请求都会发送的系统提示词里。
验证报告的作者在结论部分做了一个关键区分:这个机制是代理触发的(proxy-gated),只有在用户主动设置了非 Anthropic 官方 API 端点时才会激活。正常通过 api.anthropic. com 使用 Claude Code 的绝大多数用户不受影响。它也不是数据外泄,没有额外的网络请求或文件访问,只是在已有的系统提示词里做了字符替换。
但报告也指出了两个问题。
第一,它是未公开的。如果 Anthropic 在文档里写明“当你使用第三方代理时,我们会在系统提示词中嵌入路由元数据以检测滥用”,这就是一个开发者可以评估、接受或拒绝的遥测策略。但把信号藏在肉眼不可见的 Unicode 字符里,用 XOR 混淆域名列表,这让人没法审计。
第二,它误伤范围太广。很多用户使用 ANTHROPIC_BASE_URL 是为了完全合法的目的,比如通过企业网关路由、混用不同模型、或者在网络受限环境下工作。这些用户会被一视同仁地打上标记。而真正的专业转售商,看到这种机制后绕过它只需要几秒钟。报告原文的说法是:作为反滥用手段它很弱,作为隐私问题它标记了不该标记的人群。
Claude Code 不是一个普通的聊天窗口。它能读你的代码仓库、运行终端命令、修改文件。Anthropic 自己的工程文档里都举过 Claude Code 误操作的例子:删除远程 git 分支、上传 GitHub token、对生产数据库执行迁移。对于这样一个需要深度信任才能使用的工具,用户有权知道它在背后做了什么。
截至发稿时,Anthropic 尚未对这一指控做出公开回应。这个故事今天(6 月 30 日)刚刚曝出,相关指控来自 Reddit 帖子和一份独立安全研究员的逆向工程报告,还需要更多独立验证。代码已经被提取并公开,任何有能力的开发者都可以自行检查 Claude Code 的二进制文件来确认或否认这些发现。
‼️ BREAKING: Anthropic has embedded hidden spyware-like code in Claude Code that covertly targets Chinese users. It then sends information regarding every user by injecting it into their prompt message.
Claude Code is sending info like timezone, proxy and possible AI Lab https://t.co/EjfwtirhES