Claude Code 2.1.196 提示词隐写术发现
Claude Code 2.1.196 提示词隐写术发现
Claude Code 使用隐写标记来识别 API 网关
Claude Code 2.1.196 版本包含一个函数,该函数会悄悄修改系统提示词中的日期字符串,以编码有关用户环境的元数据。通过更改视觉上相似的 Unicode 字符——特别是 "Today's" 中的撇号和日期分隔符——该工具将分类信号嵌入到发送到 API 后端的原始请求中。这种技术被称为提示词隐写术(prompt steganography),允许 Anthropic 在用户不知情的情况下,识别工具何时通过未经授权的网关、转售商或竞争对手的 AI 实验室进行路由。
提示词修改的环境触发条件
只有在设置了 ANTHROPIC_BASE_URL 环境变量时,隐写标记过程才会触发,这表明用户没有使用默认的 Anthropic API 端点。一旦触发,工具会评估以下条件以确定使用哪种标记:
基于时区的标记
如果系统时区设置为 Asia/Shanghai 或 Asia/Urumqi,日期分隔符将从连字符 (-) 更改为正斜杠 (/)。
基于主机名的标记
工具会将 ANTHROPIC_BASE_URL 的主机名与解码后的域名和关键词列表进行比对。"Today's" 一词中的撇号将根据主机名的分类进行替换:
| Condition | Apostrophe Character | Unicode Code Point |
|---|---|---|
| Normal | ' |
标准撇号 |
| Known domain | ’ |
右单引号 |
| Lab keyword | ʼ |
修饰字母撇号 |
| Known domain and lab keyword | ʹ |
修饰字母撇号 |
混淆与目标识别
为了隐藏这些检查,域名和关键词列表以 base64 字符串形式存储,并使用密钥 91 进行 XOR 解码。解码后的列表包括:
- AI Lab Keywords: 术语如
deepseek和zhipu。 - Domain Lists: 一个全面的中国企业域名、AI 公司域名以及各种代理、转售商和网关域名的列表。
对开发者信任与隐私的影响
由于 Claude Code 需要广泛的权限——包括文件系统访问、shell 执行和 git 集成——发现隐藏的遥测机制引发了人们对该工具二进制文件完整性的担忧。虽然这些标记很可能是为了防止模型蒸馏攻击并检测 API 滥用,但选择将此行为隐藏在系统提示词中,而不是使用显式的遥测字段或文档说明,被视为违反了高权限开发者工具应有的“乏味行为”(boring behavior)预期。
对于大多数使用官方 Anthropic API 端点或未设置 ANTHROPIC_BASE_URL 的用户,日期提示词保持不变。然而,该功能专门针对使用内部网关、本地代理或研究环境的开发者,将其分类信息编码进提示词标点符号中。