摘要安全研究人员发现Claude Code 会在系统提示词中悄悄嵌入隐写标记——当检测到用户使用自定义 API 代理或第三方网关时它会将 hostname 分类结果以看起来像正常英文的句子形式编码进提示词且背后的域名列表通过 XOR 和 Base64 双重混淆隐藏。这一发现在 Hacker News 引发 1429 点热议核心争议不在于功能本身是否恶意而在于一个以信任为卖点的开发工具为何要在开发者看不见的地方做隐秘修改。背景一次意外源码泄露揭开了秘密2026 年 3 月 31 日Anthropic 在发布 Claude Code npm 版本 2.1.88 时意外地将一个 59.8 MB 的 Source Map 文件打包进去——这个文件解压后是完整的 512,000 行 TypeScript 源码在被发现并删除之前已在公网上暴露了数小时。正是借助这次意外泄露研究人员 thereallo 得以对 Claude Code 的内部逻辑进行逆向分析并发现了隐写机制的存在。核心内容它到底在做什么触发条件对于绝大多数用户这一机制不会触发使用官方 Anthropic API 端点 → 直接返回行为正常ANTHROPIC_BASE_URL未设置 → 直接返回行为正常但如果你通过自定义 Base URL例如公司内部 API 网关、第三方 Claude 代理服务、或将请求转发到 DeepSeek / 智谱等模型的中间层情况就不同了。技术实现Claude Code 会对ANTHROPIC_BASE_URL的 hostname 进行分类判断它是否属于已知 API 转售商未经授权的 Claude Code 网关模型蒸馏攻击流水线即竞争对手收集训练数据的管道这个判断依赖一份隐藏的域名和关键词列表——列表通过 XOR key 91 解密 Base64 解码双重混淆存储有效防止直接阅读二进制文件时被发现。一旦 hostname 命中规则分类结果会被编码为一段看似正常的英文句子静默注入到发送给 Claude 模型的系统提示词中。Anthropic 的意图推断研究人员认为这背后有三个合理目的打击 API 转售商有人用低价购买或泄露的 API Key 向开发者转售 Claude 访问权限识别未授权网关防止 Claude Code 在不受控制的代理层上运行对抗蒸馏攻击阻止竞争对手大规模收集 Claude 的输入输出用于训练自家模型绕过极其简单讽刺的是这套机制对真正的攻击者几乎没有阻止效果换一个不在列表里的 hostname修改系统时区直接 patch 二进制用进程包装器拦截任何有动机的人五分钟内就能让这个信号失效。影响与意义对普通用户的实际影响如果你只使用官方 Anthropic API这件事与你无关系统提示词不会被修改。但如果你在公司内部搭建了 Claude API 代理使用国内第三方 Claude 服务商自建中间层做成本分摊或审计那么你的每一次 Claude Code 请求都可能携带着 Anthropic 对你身份的判断——而你毫不知情。更深层的信任问题研究人员的原话一针见血“这不是一个恶意功能但对于一个要求你信任它的开发工具来说这是一个奇怪的选择。将信号隐藏在系统提示词中让它的每一个其他隐私声明都更难令人信服。”Claude Code 是一个高权限工具——它读取你的代码、访问你的文件系统、执行 shell 命令。当开发者选择使用它时给出的是相当程度的信任。而在系统提示词这个黑盒里悄悄做事恰恰动摇了这种信任的基础。我的看法Anthropic 的商业逻辑可以理解API 转售和模型蒸馏是真实的商业威胁这套机制的出发点是保护商业利益。但实现方式让人不舒服。一个更好的做法是在文档中明确说明当检测到非官方端点时系统提示词会包含额外信息然后让开发者自己决定是否接受。透明 可审计才是开发者工具应有的姿态。这次事件也再次提醒我们AI 编码工具的系统提示词是一个值得持续审计的安全面。不是所有注入的内容都是恶意的但你至少应该知道那里有什么。好在已经有人在做这件事——GitHub 上的 Piebald-AI/claude-code-system-prompts 项目持续追踪每个 Claude Code 版本的系统提示词变化值得关注。