Claude Code 这次最别扭的地方,不是它能识别自定义 API 网关。

而是它可能用一个斜杠、一个肉眼难辨的撇号,把请求来源分类塞进系统提示词。看起来还是一句普通日期,原始字节里却多了一点标记。

这不是数据泄露。也不能直接扣成恶意软件。材料目前支持的判断更窄:Claude Code 2.1.196 的本地二进制里,有一段逻辑会在特定条件下修改发给模型的系统上下文。

发生了什么:自定义 API 路径被悄悄打标

触发前提很明确:用户设置了 ANTHROPIC_BASE_URL

也就是说,Claude Code 不走默认 Anthropic API endpoint,而是被指向一个自定义 API base URL。接着,客户端会继续看几个信号:

  • 系统时区是否为 Asia/ShanghaiAsia/Urumqi
  • API base URL 的 hostname 是否命中特定域名列表
  • hostname 是否包含某些 AI 实验室关键词

命中后,变化很小。小到正常阅读几乎看不出来。

项目普通路径命中特定条件后
日期格式YYYY-MM-DDYYYY/MM/DD
Today's 撇号普通 '替换为肉眼难辨的 Unicode 撇号
前提官方端点或未设置变量设置 ANTHROPIC_BASE_URL 后继续分类
主要影响对象普通用户大概率无感内部网关、本地代理、模型路由器、转售商、研究环境

这些标记会进入 agent context,也就是系统提示词的一部分。

至于 Anthropic 后台是否解析这些标记、怎么解析,目前不能断言。更稳妥的说法是:这些标记很可能用于后台识别请求来源或风险类型。

还有一个细节很伤观感:相关域名和关键词列表被 base64 加 XOR 的方式藏在包里。这不是高级加密,更像“不想让你一眼看见”。

开发者最烦的往往不是风控本身,而是这种半遮半掩。

为什么重要:合理风控,糟糕实现

Anthropic 想识别未授权网关、API 转售、模型蒸馏管线,并不荒唐。

Claude Code 是高价值入口。它能进开发环境,也能稳定产生高质量代码交互。灰色代理、套壳网关、转售链条会带来成本、条款和模型安全问题。平台做风控,有现实压力。

“天下熙熙,皆为利来。”AI API 的灰产不是阴谋论,是商业激励自己长出来的东西。有人套利,平台就会反套利。

问题在做法。

如果要识别自定义网关,可以用明确 telemetry 字段。可以写进文档。可以在 release notes 里说明。企业版本还可以给管理员开关。

开发者未必喜欢,但至少知道规则在哪里。

把分类位藏进 system prompt 的标点里,就很难看。它不是多强的侦测手段。严肃对手可以换 hostname、改时区、patch binary,或者再包一层代理。

最后更容易被误伤或被迫解释的,反而是正常团队:

  • 做企业内部 API 网关的人,要重新审查 Claude Code 的出站请求和上下文内容。
  • 做模型路由、研究代理、本地转发的人,可能会先暂停接入或延后采购。
  • 对合规敏感的团队,会要求锁版本、审二进制、等官方说明,再决定能不能放进开发机。

这就是现实成本。

风控信号多了一点,信任账单也跟着来了。

接下来该看什么:不是删不删标点,是工具还透不透明

我更在意的不是这两个字符本身。

日期从 -/,撇号换成 Unicode 字符,单看都不大。真正的问题是:一个能读仓库、跑 shell、改文件、装包的 coding agent,是否应该在用户不知情的地方改变 prompt 语义层之外的字节细节。

Claude Code 这种工具天然越界。开发者愿意给权限,不是因为他们不在乎风险,而是因为收益足够大。

但权限越大,行为越要无聊。

无聊不是低级。无聊是开发者工具的信用货币。该发什么请求、带什么字段、改什么上下文,最好清清楚楚。

这里可以做一个很简单的行业对照:浏览器、操作系统、云平台都做反滥用。但越靠近用户本地环境,越需要把安全策略写明。暗桩式设计在平台反作弊里常见,放到开发者本地工具里,就会变味。

两者不完全一样。Claude Code 不是浏览器插件,也不是传统 SaaS 控制台。它更像一个坐在你项目目录里的自动化同事。

这个位置太敏感了。

接下来最该观察的不是网友怎么骂,而是三个具体变量:

观察点为什么关键
Anthropic 是否公开解释这段逻辑决定这是可讨论的风控,还是继续被当成隐蔽标记
后续版本是否移除或改成明示字段决定它承认的是实现问题,还是只修观感问题
企业和研究团队是否能关闭或审计决定 Claude Code 能不能进入更严肃的内部工具链

对普通用户来说,如果一直使用官方端点、没有设置 ANTHROPIC_BASE_URL,大概率不需要恐慌。

对内部网关和模型路由团队来说,动作应该更具体:先检查当前版本,记录系统 prompt 原始内容;对出站请求做 diff;必要时锁版本,等官方回应或版本修复。不是立刻弃用,而是别把它当成黑箱继续跑。

我不太买账的地方也在这里:Anthropic 的防滥用目标站得住,prompt 隐写这个选择站不住。

模型看见的是日常文本。用户看见的是日常文本。只有原始字节里藏着分类。

信任是从无聊的地方挣来的。越能读仓库、跑 shell、改文件的工具,越不该在标点里藏风控。