7 月 8 号,工信部 NVDB 发了一则风险提示:Claude Code 存在安全后门隐患,危害严重。阿里紧接着宣布 7 月 10 号全员禁用。
炸锅了。技术群里到处在问:还能不能用?要不要卸载?
我用了 CC 大半年,走的是 DeepSeek API 中转。后门这事我其实不太意外——6 月底 Reddit 上就有人逆向出来了。但真正让我意外的,是顺着这条线扒出来的其他东西。后门只是冰山上面那一点。
先说后门本身。
CC 怎么判断你是不是中国用户
Reddit 用户 LegitMichel777 在 v2.1.196 里逆向出了三层检测,从 v2.1.91 就开始了:
第一层:读你的系统时区。是 Asia/Shanghai 或 Asia/Urumqi?标记。
第二层:检查你的 API 代理地址。CC 内置了一个 147 个域名的硬编码黑名单——百度、阿里、字节、Moonshot、MiniMax、DeepSeek、智谱、StepFun,全在上面。命中?标记。
第三层最骚:检测结果不通过网络额外传输。它藏在系统提示词里——日期格式从 2026-06-30 悄悄变成 2026/06/30,"Today's" 里的撇号在三个肉眼完全一样的 Unicode 字符之间切换。你看不出来,AI 也看不出来,但 Anthropic 服务器端能解析。安全研究员 Adnane Khan (Thereallo) 发布了详细的逆向分析。
代码用 XOR key 91 混淆。四个月,没有告知用户。[1]
Anthropic 团队成员 Thariq Shihipar 7 月 1 号在 X 上回应,说这是 3 月开始的"实验",目的是防账号倒卖和模型蒸馏,7 月 2 号已经删了。工信部定性「危害严重」——没毛病。
注:以上后门细节——时区检测、147 域名黑名单、Unicode 隐写、XOR key 91——来自社区逆向分析,Anthropic 已承认该机制存在但未确认所有实现细节。
但后门不是最恶心的
有个更隐蔽的问题,Anthropic 到现在也没正面回应。
从 v2.1.36 开始,Claude Code 在每个 API 请求的 system prompt 最前面塞了一行 x-anthropic-billing-header,里面有个叫 cch 的五位 hex 字段。
重点:每次请求,cch 的值都不一样。
同一个 session 三轮对话,cch 依次是 97bd6 → 24c2d → ead88。[2]
为什么这很重要?Anthropic 的 prompt caching 靠前缀匹配。system prompt 在前缀最前面。cch 每次变,前缀哈希就对不上,上一轮辛苦建好的缓存直接报废。
Anthropic 自己的服务端当然知道怎么处理——服务端看到这行就跳过去,不影响缓存。但所有第三方代理不知道。DeepSeek 不知道。Bedrock 不知道。本地 vLLM 不知道。它们认认真真把这一行当成 system prompt 正文,每次都是全新前缀,命中率归零。
还有更狠的:CC 不光注入新 cch,还会在历史上所有消息里做全局查找替换,把旧的 cch 值换成新的。如果某条旧消息恰好包含了之前的 cch 字符串,它就被改了——前缀永久性损坏,没法恢复。有用户实测:修复前每次恢复会话 56,296 tokens,修复后 32 tokens。1750 倍。[3]
这不是 bug。这是故意让第三方 API 上的体验变差,逼你回 Anthropic 官方。
关掉的办法是从二进制里逆向出来的。社区发现的环境变量,没有官方文档:
CLAUDE_CODE_ATTRIBUTION_HEADER=0
注:此环境变量来自社区逆向分析,非 Anthropic 官方文档。在 2.1.169 版本实测有效,后续版本可能不可用。
继续扒
后门和缓存破坏这两件事让我起了兴趣——到底还有多少东西是 Anthropic 没说的?翻了大量 GitHub issues 和社区逆向分析之后,又找到了这些。以下发现来自 GitHub issues 和社区分析,Anthropic 未主动披露:
1. 后台每 3-9 秒给 Datadog 发心跳。 目标地址是 http-intake.logs.us5.datadoghq.com。Anthropic 的官方数据使用文档提了 Statsig 和 Sentry,对 Datadog 只字未提。社区逆向统计 v2.1.169 版本有 1086 个遥测事件类型。[4]
2. 你关遥测,它降你性能。 DISABLE_TELEMETRY=1 不只是关上报——它也同时关闭了实验特性下发。结果:缓存 TTL 从 1 小时掉到 5 分钟,部分你付了钱的模型被静默屏蔽。一句文档提示都没有。[5]
3. WebFetch 会先把你访问的域名报给 Anthropic。 每次网页抓取前,CC 先偷偷请求 claude.ai/api/web/domain_info?domain=xxx,把你正在看的域名告诉服务器。关掉的办法藏得很深:settings.json 里加 "skipWebFetchPreflight": true。[6]
4. 用了 /bug 命令?你的整个会话被保留 5 年。 代码、文件内容、bash 输出——原封不动发给 Anthropic。即使你在隐私设置里选了「不把我的数据用于训练」,这个保留期也不受影响。官方文档确认了 5 年保留期。社区方案是 DISABLE_BUG_COMMAND=1。
注:
DISABLE_BUG_COMMAND=1来自社区建议,非 Anthropic 官方文档。VERCEL_PLUGIN_TELEMETRY=off同理。
5. Vercel 官方插件用隐藏指令收集遥测。 插件通过 UserPromptSubmit 钩子静默注入提示,让 AI 向你索取遥测授权。你完全看不到这些注入指令。点了「不」也没用——只停了文字收集,其余照常运行。关:VERCEL_PLUGIN_TELEMETRY=off。[7]
6. 在编辑器里按保存 = 文件内容可能泄露给模型。 CC 的 FileChanged 通知机制会在你保存文件时,把完整文件内容注入到模型上下文。这个行为绕过了你设置的所有防护——.gitignore 没用、CLAUDE.md 里的规则没用、MCP 钩子也没用。.env 保存了就是泄露了。这个问题在 GitHub issue 中有详细记录,目前没有官方开关。
7. 你付了订阅费,但只能在 CC 里用。 Anthropic 在服务端加了 oAuth 令牌硬校验。Pro/Max 订阅的令牌在 OpenCode、Roo Code 等第三方工具里会被直接拒绝。返回信息很直白:「this credential is only authorized for use with Claude Code」。[8]
我怎么办
搞清楚这些之后,我整了一套环境变量。加到 ~/.claude/settings.json 的 env 段,或者直接写 shell profile:
# 数据不到 Anthropic
export ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
# 恢复缓存(社区逆向发现,非官方文档)
export CLAUDE_CODE_ATTRIBUTION_HEADER=0
# 关上报
export ANTHROPIC_TELEMETRY_DISABLED=1
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
# 关 /bug(社区建议)
export DISABLE_BUG_COMMAND=1
# 关 Vercel 插件遥测(社区建议)
export VERCEL_PLUGIN_TELEMETRY=off
# 别追最新版
npm install -g @anthropic-ai/claude-code@2.1.169
settings.json 再加一条:
{ "skipWebFetchPreflight": true }
关于标记说明:以上环境变量中,ANTHROPIC_TELEMETRY_DISABLED 和 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 为 Anthropic 官方文档 确认。CLAUDE_CODE_ATTRIBUTION_HEADER、DISABLE_BUG_COMMAND、VERCEL_PLUGIN_TELEMETRY 来自社区发现,需自行验证。skipWebFetchPreflight 为 settings.json 配置项。
这套配置是我在维护 claude-clean 的过程中攒出来的。claude-clean 是我自己用的工具集,还没公开发——一方面在看有没有法律风险,另一方面 Anthropic 盯上了可能针对性加反制。
要是实在不想折腾
也不是没别的选择。
声明:以下提到的 Pi 是我当前在用的工具,Reasonix 是我调研过的参考项目(其 prefix-cache 设计对理解 CC 缓存问题有帮助)。ZCode、Qwen Code、OpenCode 仅基于公开信息和短期实测。没有人给我钱推任何工具。
| CC | Reasonix | ZCode | Qwen Code | Pi | OpenCode | |
|---|---|---|---|---|---|---|
| 后门 | 有 | 无 | 无 | 无 | 无 | 无 |
| 开源 | 否 | MIT | 否 | 是 | MIT | 是 |
| 模型 | Claude | DeepSeek V4 | GLM-5.2 | Qwen3.7 | 50+ | 75+ |
| 缓存 | 故意破坏 | 前缀优化 | 正常 | 正常 | 正常 | 正常 |
| 费用 | 按量 | API 按量 | 300W/天免费 | 百炼 7000W | 接 key | 接 key |
| 形态 | TUI | TUI+桌面 | 桌面+TUI | TUI | TUI | TUI+桌面 |
| 稳定性 | 稳 | Go 版稳 | 偶有崩溃 | ⚠️ 实测卡死 | 极简稳 | 成熟 |
| 锁定 | 严重 | DS 专属 | 无 | 无 | 无 | 无 |
说几个我实际碰过的:
CC 走 DeepSeek 是现在的主力。工具链最熟,配好上面的东西之后比较安心。
Reasonix DeepSeek 亲儿子,Go 重写的。它是唯一一个把 prefix-cache 当一等公民设计的。有社区报告缓存命中率很高、同类任务省钱明显。如果主力用 DeepSeek,值得一试。(文中的"99.82%"和"61"数据来自社区分享,非独立复测结果。)
ZCode 智谱出品,桌面应用做得不错,GLM-5.2 在 Code Arena 排第二。免费版每天 300 万 token。npm 上可装。
Qwen Code 不太行。我装好第一个任务就卡死了。等几个版本再说。
Pi 极简路线,MIT 协议。故意不加 MCP、子 agent、权限弹窗——想要自己加 TypeScript 扩展。50+ provider 随便切。pi.dev。我目前在用,体验良好。
OpenCode 开源社区底牌,GitHub 182K+ star。75+ provider,TUI + 桌面应用。最自由。
最后
工信部说得对,原版 CC 不该信任。但不用 CC 和不知道 CC 在干嘛是两码事。
搞清楚数据流向哪、信任边界在哪里、有哪些开关可以扳——这些比卸载还是继续用的选择本身重要得多。
不是劝你卸载。用不用是你的事。但你应该知道。
文歌子,做终端 Agent 工具,也折腾 AI 安全配置。GitHub: gezi-wen