Claude Code 对请求进行隐写标记:实现方式奇怪,或影响普通开发者

发布时间:2026/7/2 20:34:10
Claude Code 对请求进行隐写标记:实现方式奇怪,或影响普通开发者 标记2026 年 6 月 30 日出于隐私考量有人对 Claude Code 进行检查发现它会基于 API 基础 URL 和时区添加隐藏的系统提示标记。如今多数开发者会给予开发工具极大访问权限这虽必要但也意味着客户端值得仔细审查。于是此人查看了本地安装的 Claude Code2.1.196 版本。Claude Code 二进制文件中有个函数会修改插入到系统提示中的当前日期字符串。正常日期字符串是“Todays date is 2026 - 06 - 30.”Claude Code 能悄悄改变“Todays”中的撇号和日期分隔符从“ - ”变为“/”。相关代码从压缩包中清理出来如下function Zup() {if (Crt()) return null;let host Qup();let timezone e0t();let cnTZ timezone Asia/Shanghai || timezone Asia/Urumqi;if (!host) {return {known: false,labKw: false,cnTZ,host: null,};}return {known: Jup().some((domain) host domain || host.endsWith(. domain)),labKw: Xup().some((keyword) host.includes(keyword)),cnTZ,host,};}function edp(known, labKw) {if (!known !labKw) return ;if (known !labKw) return \u2019;if (!known labKw) return \u02BC;return \u02B9;}function Vla(date) {let marker Zup();let apostrophe edp(marker?.known ?? false, marker?.labKw ?? false);let renderedDate marker?.cnTZ ? date.replaceAll(-, /) : date;return Today${apostrophe}s date is ${renderedDate}.;}这就是提示隐写术一种将数据隐藏在明文中的技术。表面看句子像普通日期表述模型和用户看到的平常内容但原始请求中包含标记。检查触发条件是“ANTHROPIC_BASE_URL”这是 Claude Code 的 API 基础 URL 覆盖设置。随后会检查系统时区是否为“Asia/Shanghai”或“Asia/Urumqi”API 基础 URL 的主机名是否与解码后的域名列表匹配主机名是否包含特定的 AI 实验室关键词。时区检查会改变日期格式如“2026 - 06 - 30”变为“2026/06/30”主机名检查会改变撇号条件撇号正常情况已知域名’包含实验室关键词ʼ已知域名且包含实验室关键词ʹ在大多数等宽字体中这些变化细微几乎难以察觉。相关代码如下function Crt() {let baseUrl process.env.ANTHROPIC_BASE_URL;if (!baseUrl) return true;return Rrt(baseUrl);}function Rrt(baseUrl) {try {let host new URL(baseUrl).host;return [api.anthropic.com].includes(host);} catch {return false;}}function Qup() {let baseUrl process.env.ANTHROPIC_BASE_URL;if (!baseUrl) return null;try {return new URL(baseUrl).hostname.toLowerCase();} catch {return null;}}混淆列表域名和关键词列表以 base64 字符串形式存储用密钥“91”进行异或解码。var Kup 91;function Gla(encoded) {let bytes Buffer.from(encoded, base64);let out ;for (let byte of bytes) {out String.fromCharCode(byte ^ Kup);}return out.split(,);}解码后的实验室关键词列表deepseek,moonshot,minimax,xaminim,zhipu,bigmodel,baichuan,stepfun,01ai,dashscope,volces解码后的域名列表大得多包含中国企业域名、AI 公司域名以及大量的代理/转售商/网关域名。示例如下cnbaidu.comalibaba - inc.comalipay.comantgroup - inc.cnbytedance.netkuaishou.comxiaohongshu.comjd.combilibili.coiflytek.comstepfun - inc.commoonshot.aianyrouter.topclaude - code - hub.appclaude - opus.topopenclaude.meproxyai.comyunwu.aizenmux.ai完整列表可在链接查看。传递方式构建代理上下文时会使用日期函数{...userEmail {userEmail: The users email address is ${userEmail}.},...attachedProject {attachedProject},currentDate: Vla(GSe())}这样标记成为发送给模型的系统上下文的一部分Anthropic 可能会在其后端进行解析。个人情况此人安装的二进制文件由 Anthropic 签名Identifier com.anthropic.claude - codeTeamIdentifier Q6L2SF6YDWTimestamp Jun 29, 2026SHA256 6fc6e61ab7582c2bf241225ff90d9f79e91d69380cb9589fc9dedd3a30070f5a其当前 shell 环境中未设置“ANTHROPIC_BASE_URL”时区是“Asia/Hong_Kong”。所以在其机器上当前环境下这个过程会生成正常的撇号和正常的“YYYY - MM - DD”日期字符串。问题所在Anthropic 可能想检测 API 转售商、未经授权的 Claude Code 网关以及模型“蒸馏攻击”管道。指向已知转售商域名的自定义“ANTHROPIC_BASE_URL”和主机名中包含“deepseek”或“zhipu”是有用信号。但 Claude Code 的实现方式奇怪它用几乎不可见的 Unicode 标记悄悄改变系统提示将代理/网关分类信息编码到看似普通英语的句子中还将域名列表隐藏在异或和 base64 编码之后。这并非恶意功能但对于需开发者信任的工具来说是个奇怪选择。编码助手处于敏感边界能检查代码、意外汇总机密信息、执行命令、安装软件包、编辑文件甚至在本地机器上推送提交。多数开发者接受这些是因生产力提升值得冒风险。真正的开发者信任建立在工具简单可靠的表现上。若客户端想检测自定义 API 网关可直接说明发送带有文档说明的显式遥测字段让策略透明化或把这种行为写进发布说明中。将信号隐藏在系统提示中会让其他关于隐私的声明更难让人信服。实际影响对大多数用户来说这个功能可能不会被触发。若使用官方的 Anthropic API 端点“Crt()”函数会提前返回若未设置“ANTHROPIC_BASE_URL”“Crt()”函数也会提前返回若设置正常日期提示就会保持“正常”。有趣的是那些通过自定义基础 URL 来使用 Claude Code 的人包括内部网关、本地代理、模型路由器、转售商、研究环境。这种情况下Claude Code 会对主机名进行分类并将结果编码到提示中。绕过这个功能也简单更改主机名、时区对二进制文件打补丁或者封装进程。任何有一定技术能力的攻击者都能让这个信号失效。所以这个功能主要影响那些做了一些不寻常但合法操作的普通开发者他们更容易被识别。思考此人认为这件事本可以更加透明。开发者工具可执行相关条款API 提供商可检测滥用行为公司也可保护他们的模型。但当一个拥有文件系统和 shell 访问权限的工具开始在不可见的提示标点中隐藏分类信息时就应该仔细审查它了。信任源于工具的可靠表现。