Claude Code 隐写术事件:Anthropic 如何用一个单引号给你打标签

2026 年 6 月 30 日,开发者逆向 Claude Code 二进制后发现:当 ANTHROPIC_BASE_URL 指向非官方端点时,客户端会在系统提示词 Today's date 一行悄悄替换 Unicode 单引号与日期分隔符,据逆向报告用于标记代理/网关用户——Claude 网页版不受影响2.1.197 已移除该逻辑。

TL;DR:本文讨论的是终端工具 Claude Code(npm 包 @anthropic-ai/claude-code),不是 Claude 网页聊天。据逆向报告,当环境变量 ANTHROPIC_BASE_URL 被设为非 api.anthropic.com 的代理/网关时,客户端会在发往 Anthropic 的系统提示词里,对 Today's date is … 一行做肉眼不可见的 Unicode 与日期格式微调,据爆料用于反蒸馏与识别非官方路由;该逻辑在 2.1.197(2026-07-01)已移除,但官方 changelog 未提及。面向用 Claude Code、Cursor、Copilot 等桌面/终端 Agent 的开发者与 Tech Lead,本文区分 2026 年两场独立争议(4 月 Desktop Native Messaging vs 6 月隐写术)、给出原理对照表、六步防护 Runbook、厂商信任原则与 FAQ;若你已在评估 2026 AI 编程助手选型,可把本文当作「终端 Agent 信任边界」的补充阅读。

002026 年 Anthropic 信任危机:两场事件,别混为一谈

2026 年上半年,Anthropic 在桌面客户端终端编码 Agent两条产品线上接连引发隐私与安全争议。社区常把二者统称为「Claude 间谍软件」,但触发机制、影响面与修复路径完全不同。下表是决策前先做的「事件 A / 事件 B」区分——写 Runbook 与对内通报时务必分开处理。

维度事件 A:Claude Desktop Native Messaging(2026 年 4 月)事件 B:Claude Code 系统提示词隐写术(2026 年 6 月 30 日曝光)
产品Claude Desktop macOS 客户端(Claude.appClaude Code CLI(@anthropic-ai/claude-code
首次披露隐私顾问 Alexander Hanff(2026 年 4 月);安天实验室(Antiy Labs) 发布风险分析报告开发者 Thereallothereallo.dev);Reddit 用户 LegitMichel777;Hacker News 热议
行为摘要安装时静默写入 Chromium 系浏览器的 Native Messaging manifest,预授权 Claude 浏览器扩展与本地二进制通信,即使用户未安装对应浏览器ANTHROPIC_BASE_URL 非默认时,在系统提示词 Today's date is … 行嵌入 Unicode 单引号变体与时区相关日期分隔符
触发条件安装/启动 Claude Desktop仅当 API 路由经自定义 base URL(代理、网关、转售 API 等)
第三方确认顾问公司 Digital 520 创始人 Noah Kenney 独立复核 Hanff 发现媒体 The Register、TechTimes 等跟进;Anthropic 员工 Thariq Shihipar 在 X 回应
社区热度隐私与 ePrivacy 讨论;Malwarebytes、gHacks 报道Hacker News 350+ 点100+ 评论,形成「反蒸馏合理 vs 隐蔽手段越界」两派
修复状态据报后续版本增加授权开关,底层攻击面讨论仍在2.1.197(2026-07-01)合并移除 PR;changelog 未写此项

Gemini CLI 开源信任危机Anthropic AI for Science 战略 对照阅读时,可把事件 B 理解为:厂商在反模型蒸馏开发者工具透明度之间的取舍——据 Anthropic 对外说法,相关实验旨在阻止未授权转售与蒸馏,但隐写式标记未在 changelog 披露的移除,放大了信任损耗。

痛点为什么「一个单引号」会让开发者不安?

Claude Code 是跑在你本机或 CI 上的高权限终端 Agent:读仓库、调工具、经 MCP 连外部系统。开发者合理预期是:发往模型的 system prompt 与你在 UI 里看到的一致,且环境变量只影响路由,不应悄悄改写提示词内容。据逆向报告,事件 B 打破了这条预期:

  • 隐蔽通道:指纹不写在独立 telemetry 字段,而是藏在每轮请求都会出现的日期行里,肉眼与 diff 工具几乎无法察觉。
  • 条件触发:直连 api.anthropic.com 的用户据报不会走该分支;走 SiliconFlow、DeepSeek 网关、企业反向代理等自定义 ANTHROPIC_BASE_URL 的路径才会激活——与国内「API 中转」生态高度重叠。
  • 列表混淆:域名清单经 base64 + XOR(91) 混淆,据逆向约 147 条规则,含 deepseekmoonshotzhipu 等关键词及多家网关域名。
  • 版本漂移:逻辑据报自 2.1.91(2026 年 4 月初)存在;社区在 2.1.193 / 2.1.195 / 2.1.196 仍可复现,直至 2.1.197 才下线。
  • 披露缺口:移除提交已合并,但发布说明未提及隐写代码,企业合规与 SBOM 审计难以凭 changelog 闭环。

HN 讨论中一派认为:保护模型免受蒸馏是正当商业需求;另一派认为:对付费开发者工具使用 steganography、且不告知用户,与「Ask for trust」的产品叙事冲突。两派争议本身说明:终端 Agent 的信任模型尚未标准化。

01隐写术原理:Today's date 一行如何编码指纹

据 thereallo.dev 与 Vincent Schmalbach 等逆向文章,流水线可概括为四步:(1)读取 process.env.ANTHROPIC_BASE_URL;(2)若为空或指向官方 API,返回普通日期行;(3)否则解析 hostname,对照 XOR 解码后的域名/关键词表;(4)按匹配结果选择 Unicode 单引号,并按系统时区决定是否把日期中的 - 换成 /

条件(据逆向报告)Today's 中单引号Unicode日期格式示例
非默认 base URL,host 不在名单且无 lab 关键词ASCII 直撇号U+0027 '2026-06-30(非中国时区)
host 命中已知网关/转售域名列表右单引号U+2019 '同上
host 未命中名单但含 AI lab 关键词修饰字母撇号U+02BC ʼ同上
同时命中域名名单与关键词修饰字母 primeU+02B9 ʹ同上
系统时区为 Asia/ShanghaiAsia/Urumqi(与上表组合)2026/06/30-/

域名与关键词表在二进制内以 base64 编码后再 XOR(91) 存储,据逆向合计约 147 条规则,涵盖 deepseekmoonshotzhipusiliconflow 等字符串及多家中转域名。Anthropic 服务端若在入库前规范化或保留原始 Unicode,即可从同一行英文里读出「是否走代理、是否像中国 AI 生态路由、是否中国时区」等信号——据爆料用于反蒸馏与未授权转售识别,并非社区已证实的「主动间谍行为」定论。

伪代码(据逆向报告还原,非官方源码)
function renderDateLine(date) {
  if (!customBaseUrl()) return `Today's date is ${date}.`;
  const { knownHost, labKeyword, cnTZ } = classifyRoute();
  const apostrophe = pickApostrophe(knownHost, labKeyword);
  const rendered = cnTZ ? date.replaceAll("-", "/") : date;
  return `Today${apostrophe}s date is ${rendered}.`;
}
  • 可引用数据 1:隐写逻辑据报在 Claude Code 2.1.91 起存在,曝光时 2.1.196 仍可检出。
  • 可引用数据 2:混淆域名/关键词规则表据逆向约 147 条,经 XOR(91) 与 base64 隐藏。
  • 可引用数据 3:Hacker News 相关帖 350+ 点100+ 评论,社区明显分裂为「反蒸馏合理」与「开发者工具不应搞隐蔽标记」两 camp。

02版本时间线与动机:据爆料 vs 官方回应

版本 / 时间据公开信息与逆向报告
2.1.91(2026-04-02 前后)Reddit 用户 LegitMichel777 称在此版本发现相关逻辑
2.1.193 / 2.1.195 / 2.1.196社区在 npm 包与 embedded chunk 中仍可复现隐写分支
2026-06-30Thereallo 发布逆向长文;HN/Reddit 发酵
2.1.197(2026-07-01)合并移除 PR;官方 changelog 未提及隐写代码删除

Anthropic 员工 Thariq Shihipar 在 X 上表示,据其说法这是 3 月启动的实验,旨在防止未授权转售与保护模型免受蒸馏,且团队已计划在下个版本回滚。The Register 等媒体报道 Anthropic 承认代码存在并承诺修复。以上均为对外表态;是否在服务端实际消费这些标记、是否影响账号风控,Anthropic 未公开细节,本文不对未披露后果作事实断言。

同一时期源码泄露还曝光 ANTI_DISTILLATION_CC 等其它反蒸馏机制(如向请求注入干扰性 tool 数据)。据爆料,隐写术与这些措施同属「保护模型」工具箱,但隐蔽修改 system prompt 对开发者信任的伤害,远高于文档化的 API 字段。

03是不是「间谍软件」?两场事件分别怎么定性

事件 A:未经授权的本地通道预置

Hanff 与 Antiy Labs 的核心指控是:Claude Desktop 在未告知用户的情况下,向 Chrome、Edge、Brave、Arc、Vivaldi、Opera 等路径写入 com.anthropic.claude_browser_extension.json,预授权扩展 ID 与本地 helper 通信;删除后重启应用会自动再生。Noah Kenney 独立确认:这形成了「浏览器扩展 → 沙箱外二进制」的持久预授权桥接。

风险链条在于:Anthropic 自家文档称 Claude for Chrome 存在 prompt injection 风险,无缓解时攻击成功率 23.6%,有缓解仍约 11.2%。若扩展已安装且 manifest 预置,据安全分析恶意页面上的注入理论上可经扩展与 Native Messaging 触及用户权限级本地能力——这是未经授权篡改本地配置 + 已知高成功率注入面的组合,而非传统意义木马,但合规与 ePrivacy 争议显著。

事件 B:未披露的提示词层遥测

事件 B 不修改本地文件,而是在用户不可见的 system prompt 中嵌入分类信号,且无单独 opt-in 说明。据逆向报告,这属于未披露的遥测/分类通道:对用户透明度和数据最小化原则不友好。是否构成「间谍软件」取决于司法辖区与合同条款;工程上更准确的表述是:开发者工具中存在隐蔽的分类标记,且移除时未在 changelog 说明

表述纪律:全文对 Anthropic 动机使用「据爆料」「据逆向报告」「据其对外说法」;不对未公开的服务端用途、账号处罚作定论。企业内审应同时覆盖事件 A 的 manifest 路径与事件 B 的 base URL / 版本号。

04六步防护 Runbook(Claude Code + Desktop)

  1. 01
    检查 ANTHROPIC_BASE_URL在 shell、~/.claude/settings.json、CI 密钥库中列出所有 Claude Code 实例。若指向非官方 API,据逆向报告曾触发隐写分支;企业网关应文档化并获安全批准。
  2. 02
    升级 Claude Code ≥ 2.1.197:运行 claude --versionnpm ls -g @anthropic-ai/claude-code。低于 2.1.197 的版本据报仍含隐写逻辑;升级后应用 changelog 未写此项,需自行验证二进制或锁定版本。
  3. 03
    审计 Claude Desktop Native Messaging:在 macOS 检查 ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/ 及 Edge、Brave、Arc 等等价路径是否存在 com.anthropic.claude_browser_extension.json。不需要浏览器自动化则删除 manifest 并记录是否被 Desktop 重建。
  4. 04
    核对系统时区:事件 B 据报在 Asia/ShanghaiAsia/Urumqi 下切换日期分隔符。CI 与云端 dev box 应使用预期时区,避免误标记;必要时在文档中固定 TZ=UTC
  5. 05
    企业最小权限:限制谁可安装 Desktop、谁可配置 base URL 与 API Key;对 MCP 与浏览器扩展启用审批;将 Claude Code 与生产密钥隔离。
  6. 06
    隔离开发环境并审计:在独立 Mac 或云端裸金属节点上跑 Agent,与日常浏览、个人 Apple ID 分离;定期 grep 出站 system prompt 样本(若走 MITM 实验环境)或依赖厂商 SBOM。需要稳定、可重置的 Mac CI/Agent 主机时,可参考 NUKCLOUD 定价下单页 开通独占节点。

05AI 厂商信任:四条可落地的采购原则

终端 Agent 会读代码、调工具、持有 API Key。2026 年的 Claude Code 隐写术与 Desktop manifest 争议说明:厂商文档 ≠ 运行时行为。采购与平台团队可采纳以下四条原则(适用于 Anthropic、Google、OpenAI、Cursor 等):

  1. 行为可观测:要求对 system prompt 注入、环境变量触发逻辑、本地文件写入有公开说明或 SBOM;changelog 须覆盖安全相关移除。
  2. 数据最小化:分类与反滥用尽量用显式 API 字段或 opt-in telemetry,避免 steganography 式隐蔽通道。
  3. 本地变更需 consent:Native Messaging、浏览器扩展、LaunchAgent 等预置即违规,除非首次使用时逐项授权。
  4. 供应链可验证:锁定版本、校验 npm 包 hash、在隔离环境做 diff;Agent 主机与生产网络分区,便于一键重建。

桌面 Agent 与 Claude Code 一类工具的信任风险,往往不在模型回答质量,而在你未审阅的本地副作用不可见的出站 payload。在共享笔记本或超卖 VPS 上跑 7×24 Agent,还叠加邻居干扰与长连接中断;对需要可审计、可 SSH、可装 Xcode 与 Claude Code 的生产或 CI 平面,NUKCLOUD 多区域裸金属 Mac / 云端 Mac 节点提供独占物理机、Root 权限与按天/月弹性计费——Agent 环境与企业日常机分离,泄露面更小。可先访问 定价页 对照规格,再在 下单页 试跑隔离 dev 环境。

06常见问题

Claude Code 隐写术算不算间谍软件?
法律定性因辖区而异。工程上:事件 B 是未在 UI 披露的 system prompt 分类标记,事件 A 是未授权的本地 Native Messaging 预置。二者都严重损害信任,但是否构成「间谍软件」需结合合同与本地法;企业应按下文 Runbook 缓解,而非仅依赖品牌信誉。
普通 Claude 网页版会受影响吗?
不会。隐写逻辑在 Claude Code CLI 客户端内,与浏览器聊天无关。若你只用 claude.ai 网页,无需为事件 B 升级 CLI;但若本机同时装了 Claude Code 或 Desktop,仍建议分别处理版本与 manifest。
怎么删除 Claude Desktop 写入的 Native Messaging 注入?
在 macOS 各 Chromium 浏览器的 NativeMessagingHosts 目录删除 com.anthropic.claude_browser_extension.json,并确认 Claude Desktop 重启后是否再生。据 Hanff 报告,删除后可能被应用重建;长期方案是禁用 Desktop 的浏览器集成功能或使用不包含该行为的版本,并监控目录变更。
时区设成中国就会被打标签吗?
单独改时区不够。据逆向报告,日期 -/ 仅在 ANTHROPIC_BASE_URL 已指向非官方端点时区为 Asia/ShanghaiAsia/Urumqi 时叠加。直连官方 API 时,据报不进入该代码路径。
apostrophe trick(单引号把戏)到底是什么?
Today's 一词中,把 ASCII 撇号 U+0027 换成视觉上几乎相同的 U+2019U+02BCU+02B9,编码「域名名单命中 / AI lab 关键词命中」等组合。人类阅读无差异,Unicode 感知的日志或服务端可解码。
4 月 Desktop 事件和 6 月隐写术是同一回事吗?
不是。事件 A 影响 Claude Desktop 与浏览器桥接;事件 B 影响 Claude Code 在自定义 API 路由下的 system prompt。产品、触发条件、修复版本均不同,对内通报与安全扫描应分开列项。
为什么 Anthropic 要加这个(据公开说法)?
Thariq Shihipar 称,据其说法这是针对未授权转售与模型蒸馏的实验;The Register 报道公司正投资分类器与行为指纹等反蒸馏措施。社区争议在于:目的可被理解,隐蔽修改开发者工具发出的 prompt 的方式难以被接受,且移除时未写入 changelog。
我还需要把 Claude Code 升到 2.1.197 吗?
建议升级。2.1.197 已合并移除隐写 PR。若你曾使用自定义 ANTHROPIC_BASE_URL,升级后仍应复查环境变量与 CI 镜像;changelog 未提及此项,合规团队宜保留升级记录与版本锁定策略。
用 API 中转(如国内网关)是否一定会被标记?
据逆向报告,只要 ANTHROPIC_BASE_URL 非官方且 host 匹配规则表或关键词,就可能改写日期行;2.1.197 前存在该行为。升级后逻辑已移除,但是否仍有其它反蒸馏机制(如 ANTI_DISTILLATION_CC)需持续跟踪厂商更新与社区逆向。

07参考来源

  • The Register — Anthropic 移除 Claude Code 隐蔽代码的报道
  • thereallo.dev — 系统提示词隐写术逆向长文
  • 安天实验室 Antiy Labs — Claude Desktop Native Messaging 风险分析
  • Alexander Hanff — Claude Desktop 静默安装 manifest 的原始披露(That Privacy Guy 等转载)
  • Hacker News — 2026 年 6 月底相关讨论(350+ 点、100+ 评论量级)
  • Reddit — LegitMichel777 等对 2.1.91 行为的讨论
  • Vincent Schmalbach、TechTimes 等对 ANTHROPIC_BASE_URL 与 Unicode 标记的技术跟进

终端 Agent 正在变成「带 Root 的实习生」。Claude Code 隐写术事件提醒我们:在选型 Cursor vs Claude Code vs Copilot 时,除 SWE-bench 与定价外,还要问一句——它会不会悄悄改你发给模型的 prompt? 把 Agent 关在可重建的隔离 Mac 上,是 2026 年务实的一票。