



























Thereallo 发现 Claude Code 会在特定情况下,把“环境分类信息”藏进 system prompt 里的日期句子中。 不是明文 telemetry 字段,而是通过几乎看不出的 Unicode 撇号和日期分隔符做隐写标记。 Thereallo 检查的是本地安装的 Claude Code 2.1.196。他发现 Claude Code 内部有一段逻辑,会修改插入 system prompt 的日期句子。正常句子类似: Today's date is 2026-06-30. 但在某些条件下,它会悄悄改两处: 第一,Today's 里的撇号会从普通 ASCII ' 换成肉眼很难区分的 Unicode 变体。 第二,日期格式会从 2026-06-30 改成 2026/06/30。 原文给出的代码显示,撇号变化取决于 API base URL 主机名是否命中特定域名列表、是否包含特定 AI lab 关键词。日期分隔符变化取决于系统时区是否是 Asia/Shanghai 或 Asia/Urumqi。 触发点是环境变量 ANTHROPIC_BASE_URL。如果这个变量没设置,或者指向官方 api.anthropic.com,逻辑会提前返回。如果你把 Claude Code 指向自定义 gateway、proxy、router 或 reseller,它就会检查 hostname 并生成标记。 域名和关键词列表不是明文写死,而是用 base64 加 XOR key 91 处理。Thereallo 解出的关键词包括 deepseek、moonshot、minimax、zhipu、bigmodel、baichuan、stepfun、01ai、dashscope、volces 等。域名例子包括百度、阿里、蚂蚁、字节、快手、小红书、京东、B 站、讯飞,以及一批 Claude 代理/网关/转售域名。 真正的问题是:它没有用显式字段,而是把分类信号藏在 prompt 文本里。 如果要识别非官方 gateway,最正常的做法是: request_metadata: { base_url_class: "...", timezone_class: "..." } 或者在文档里直接说:当你使用自定义 ANTHROPIC_BASE_URL 时,Claude Code 会发送某些环境分类信号用于风控、兼容性或 abuse detection。 但现在的做法是:把标记编码进一句看起来无害的日期提示里。原这个日期字段最终会进入 agent context,作为 system context 发给模型。 这就是信任问题。Claude Code 是一个会读 repo、跑 shell、改文件、接 MCP、写代码、执行命令的本地 agent。对这种工具,开发者最需要的是“无聊、透明、可审计”。你可以风控,但不要玩隐写术。 Claude Code 官方文档本来就把 LLM gateway 当作企业部署场景:gateway 可以用来集中认证、用量归因、成本控制、审计日志、供应商切换等;Claude Code 也明确使用 ANTHROPIC_BASE_URL 来指向 gateway。 也就是说,自定义 base URL 不是黑产专属用法。企业内部网关、LiteLLM、模型路由、合规代理都可能使用它。Anthropic 如果要对这些场景做特殊处理,应该透明地写进文档,而不是藏在标点里。 #AI #Claude #Anthropic https://thereallo.dev/blog/claude-code-prompt-steganography
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。