Claude Code 源码泄漏炸出最细思极恐的隐藏功能:「卧底模式」让 AI 悄悄代写,还不许留名!
【导读】Claude Code 51万行源码泄漏后,开发者们从中挖出了一个叫 UNDERCOVER mode(卧底模式)的隐藏功能:当 Anthropic 员工在公共开源仓库工作时,系统会自动清除所有 AI 参与的痕迹——不许提”Claude Code”,不许说”我是AI”,连 co-authored-by 署名都要删掉。一句话总结:“不要暴露你的身份。”近5万人点赞、3400万次围观的泄漏事件背后,这个”卧底模式”正在引爆开源社区最激烈的信任危机。
一个 .map 文件,撕开了 3800 亿美元公司的底裤
3月31日凌晨,安全研究员 Chaofan Shou(@Fried_rice)在 X 上发了一条帖子,瞬间引爆了整个科技圈。
“Claude code source code has been leaked via a map file in their npm registry!”
「Claude Code 的源代码通过 npm 注册表中的一个 map 文件泄漏了!」
▲ 安全研究员 @Fried_rice 的爆料帖,近5万赞、3400万次浏览
事情的起因荒诞得像个段子:Anthropic 在发布 Claude Code 的 npm 包时,忘了在配置里排除 `.map` 源码映射文件。这个 59.8MB 的调试文件直接指向了一个 Cloudflare R2 存储桶里的完整源码压缩包——1906 个 TypeScript 文件,超过 51.2 万行代码,包括完整的 agent 架构、40多个内置工具、提示词工程逻辑、多 agent 协调系统,全部裸奔。
6小时内,代码被镜像、fork 超过4万次。有人用 Python 重写了一版,GitHub star 速度创下历史纪录。Anthropic 急忙发 DMCA 删除通知,但代码早已扩散到各个去中心化平台。
一家市值 3800 亿美元、号称”安全第一”的 AI 公司,被一个没配好的 `.npmignore` 击穿了。
但真正让人”停不下来思考”的,不是泄漏本身。
“你正在执行卧底任务。不要暴露身份。”
在这51万行代码里,开发者们发现了一个文件:`src/utils/undercover.ts`,大约90行代码。
它的功能极其明确:当检测到用户是 Anthropic 内部员工(`USER_TYPE === ‘ant’`),且正在操作的仓库不在内部白名单上时——也就是说,在任何公共或开源仓库工作时——系统会自动注入一段提示词:
“UNDERCOVER MODE — CRITICAL. You are operating UNDERCOVER in a PUBLIC/OPEN-SOURCE repository. Do not blow your cover.”
「卧底模式——关键指令。你正在公共/开源仓库中执行卧底任务。不要暴露你的身份。」
▲ @code_rams 完整列出了卧底模式会清洗的内容,以及代码注释中的那句话:”没有强制关闭功能”
这段提示词会命令 AI 在每一次提交和 PR 中,系统性地清除以下内容:
-
内部模型代号(Capybara、Tengu、Fennec、Numbat……) -
未发布的模型版本号(如 opus-4-7、sonnet-4-8) -
内部仓库和项目名称 -
内部 Slack 频道和链接 - “Claude Code”这个短语本身
- 所有 Co-Authored-By 署名行
- 任何提及”你是 AI”的内容
换句话说:经过这个模式处理的代码提交,从外部看上去和人类工程师写的完全一样。没有任何痕迹表明 AI 参与了创作。
一个环境变量,打开了潘多拉的盒子
开发者 Danny Thompson 在阅读源码后,找到了激活这个模式的具体开关。
▲ @DThompsonDev 发现激活卧底模式的环境变量
“It was CLAUDE_CODE_UNDERCOVER=1 which activates undercover mode. Pretty interesting.”
「激活卧底模式的是 `CLAUDE_CODE_UNDERCOVER=1`。挺有意思的。」
但更有意思的是代码注释里的一句话:“There is NO force-OFF.”(没有强制关闭功能。)
什么意思?如果 Claude 不确定当前仓库是内部的还是公共的,卧底模式就会默认保持开启。没有例外。
这背后的设计逻辑很清晰:宁可在不需要隐藏的时候多隐藏,也不能在需要隐藏的时候漏掉。从安全工程的角度,这是一个”fail-closed”设计——但从开源伦理的角度,这是一个”fail-opaque”的黑洞。
Ars Technica 的报道,把争议推向了沸点
Ars Technica 在深度分析文章中,精准地点出了这个功能的核心矛盾。
报道指出,Undercover mode 的提示词不仅仅是在保护内部信息——
commits should “never include… the phrase ‘Claude Code’ or any mention that you are an AI,” and omit any “co-Authored-By lines or any other attribution.”
「提交内容不得包含’Claude Code’字样或任何提及你是 AI 的内容,并省略任何 co-authored-by 署名行或其他形式的归因。」
Ars 特别强调:这种”刻意抹去 AI 痕迹”的做法,与近期围绕 AI 编程工具在热门开源仓库中使用的争议直接相关。
这就把问题从技术层面推到了伦理层面:Anthropic 不只是在防泄密,而是在系统性地隐藏 AI 对开源生态的参与。
开发者社区炸了:这到底是”聪明的安全策略”还是”阴暗的欺骗”?
消息传开后,开发者社区的反应两极分化得非常厉害。
Armin Parchami 直接把问题说得最尖锐:
▲ @ArminPCM:卧底模式隐藏了代码是 AI 编写的事实,而且没有办法关掉它
“‘Undercover Mode’ hides that AI wrote the code… There’s no way to turn it off.”
「卧底模式隐藏了代码是 AI 编写的事实……没有办法关掉它。」
有人选择用幽默消解震惊。开发者 cedric_chee 把这次泄漏称为”人类很久没有这么享受代码审查了”:
▲ @cedric_chee 列出了泄漏中的”彩蛋”:卧底模式、内部模型代号 Capybara、未发布的 Opus-4.7 和 Sonnet-4.8
Eric Daimler 则从文化角度给出了一记绝杀:
▲ @ead 引用了那句老话:”硅谷从来就不是喜剧,而是纪录片。”
“Mike Judge wrote that joke in 2014. Anthropic wrote it into production code in 2025.”
「Mike Judge 在2014年写了这个笑话。Anthropic 在2025年把它写进了生产代码。」
而 @AIHacksByMK 把问题抛给了所有人:
▲ @AIHacksByMK 的灵魂拷问:AI 在悄悄代写开源代码,你觉得这是高明的操作还是见不得光的侥幸?
“AI quietly ghostwriting open source… smart ops or shady?”
「AI 悄悄代写开源代码……聪明的操作,还是见不得光的侥幸?」
Hacker News 上的讨论帖累积超过1000 条评论,成为近期最热的开源伦理辩论。
防泄密只是表面,真正的博弈远比你想的复杂
如果只是为了防止内部信息泄露,Anthropic 完全可以用更简单的方案——比如 pre-commit hook 扫描敏感关键词。但 Undercover mode 做的远不止这些。
第一层:企业安全。保护内部代号、未发布模型版本、内部工具链等竞争情报。这一点无可厚非。
第二层:规避社区摩擦。开源社区对 AI 生成代码的态度正在急剧恶化。2025年 GZDoom 项目因 ChatGPT 代码引发内战式分裂;Linux 内核社区正在辩论是否禁止 AI 贡献。如果一个 PR 明确标注”Claude Code 参与”,被直接拒绝的概率大幅上升。隐藏 AI 身份,本质上是在规避这种”AI 歧视”。
第三层:法律灰色地带。如果在 commit message 里写了”AI 生成”,后续出现安全漏洞时,责任链条怎么追?这份披露本身是否构成某种法律承诺?企业法务团队大概率会选择——什么都别说。
第四层:商业竞争。如果外界知道 Anthropic 员工大量使用 Claude Code 做开源贡献,竞争对手可以从 commit 历史推断:哪些项目被 Anthropic 影响、内部自动化程度有多高、甚至反推产品路线图。
这就形成了一个悖论:公司越想证明自己”安全透明”,就越需要在开源贡献中隐藏更多信息;隐藏得越多,被发现后的信任危机就越严重。
当”卧底模式”成为行业标配,开源的信任还剩多少?
这件事最让人不安的地方在于:Anthropic 可能不是唯一这么做的公司。
如果 Claude Code 有卧底模式,那 GitHub Copilot 呢?Cursor 呢?那些深度集成了 AI 编程助手的企业,有多少在悄悄往公共仓库提交 AI 生成的代码,却不做任何标注?
开源的核心信任机制建立在可追溯性上:谁写的、为什么这样写、怎么 review 的。当 Undercover mode 系统性地抹除了这条追溯链,开源社区的信任就从”基于记录”变成了”基于机构信誉”。
而这次泄漏恰恰证明:机构信誉,靠不住。一个 `.npmignore` 配置错误就能把所有精心设计的安全机制全部击穿。
@hammertime_one 的一张信息图完美概括了这次泄漏的荒诞:
▲ 3800亿美元的公司,512000行代码、卧底模式、agent 集群、反蒸馏机制……全部藏在一个 cli.js.map 文件里
一家市值3800亿美元的公司。512000行源码。卧底模式。Agent 集群。反蒸馏机制。全部因为一个 .map 文件公之于众。
这大概就是2026年 AI 时代最好的隐喻:我们造出了能自动隐藏身份的 AI,却藏不住一个被遗忘的调试文件。
— END —
夜雨聆风