
最近折腾 Claude Code(Anthropic 的命令行工具),踩了个大坑——或者说,有人帮我踩了。
2026年3月31日,安全研究员 Chaofan Shou 在 X 上发了一句话:Anthropic 的 Claude Code 源码通过 npm registry(npm 包仓库)中的 map 文件泄露了。
就这样。没有截图,没有长篇分析,就一行字。
几小时内,GitHub 上就出现了完整源码的仓库,获得 1100 多星和 1900 多次 fork。Reddit 上的帖子称之为"竞争对手的圣诞节早晨"。开发者们像读公开文档一样读着 Anthropic 的内部代码库。
问题是,这不是被黑了。没有复杂的漏洞利用,没有零日攻击。只是 Anthropic 工程师在 .npmignore 文件里漏掉了一个匹配规则。
就这样。
51.2 万行 TypeScript。1906 个文件。一个 59.8MB 的 source map(源码映射文件)被打进了公共 npm 包。只要你执行过 npm i @anthropic-ai/claude-code,这些就全在你本地目录里。
这个安装命令你可能执行过上百次。我也执行过。装完就用,从不往 node_modules 里看。谁会想到公司整个内部代码库就躺在那儿?但这次还真就躺那儿了。
而且这已经是第二次了。Anthropic 在 2025 年初就犯过同样的错误。同样的文件类型,同样的疏忽,不同的版本号。
我以前以为 source map 就是开发用的工具。浏览器在程序崩溃时用它们显示可读的堆栈跟踪。TypeScript 编译成 JavaScript,map 文件把错误指回原始源码。开发时有用,生产构建里应该删掉。
实际情况是,.map 文件里的 sourcesContent 字段存着每个原始 TypeScript 文件。不是引用,是实际代码,内联的。Anthropic 发布 2.1.88 版本时,cli.js.map 文件就这么一起发上去了。
任何安装这个包的人本地都躺着 51.2 万行 TypeScript。大多数人不会去看。但有研究员看了。
Chaofan Shou 用逆向工具把源码抽了出来。立刻就有人同步到 GitHub。还有开发者直接用 Claude Code 来提取自己的源码。这个讽刺程度很难超越。
.npmignore 里漏写一行。这就是全部攻击面。
修复不难。发布前在 ignore 文件里加个 *.map 就完了。这是已知问题,有已知解法。而且 Anthropic 2025年已经在这上面吃过一次亏了。
大家都会问:这次泄露到底暴露了什么?
不是模型权重,不是训练数据。这很重要。Claude 的真正智能不在这个仓库里。泄露的是 CLI(命令行工具)本身。就是你在终端里敲 claude 时调用的那个壳。
但这个壳内容不少。
代码库里藏着 44 个隐藏功能开关。其中 20 个已经完整实现了,但从未发布。不是规划中,不是做了一半。是编译好了,就藏在公版里那些设为 false 的开关后面。
随手列几个已经做好的功能:
7x24 小时后台代理,支持 GitHub webhook(网络钩子)和推送通知
一个 Claude 指挥多个 Worker Claude,各自带受限工具集
Cron(定时任务)调度,支持创建、删除和列表操作
语音命令模式,有独立的 CLI 入口
通过 Playwright 控制浏览器,不是 web_fetch(网页获取)那个快捷方式,是真浏览器
能休眠并自动恢复的代理,全程不需要用户触发
跨会话持久记忆,不依赖外部存储
这读起来像一份产品路线图。而且是份相当激进的路标。
我第一次看到这列表以为是编的。但代码里写得清清楚楚。这些不是 PPT 上的 idea,是真有人写出来的。
大多数报道集中在那些酷炫的未发布功能上。但泄露内容里有几样让安全团队明显紧张。
遥测系统不只是收集使用统计。它还追踪用户挫败信号,包括脏话。所以如果你对着终端发火时 Claude Code 正在跑,那句话有可能被 Anthropic 某处记了日志。
还有个叫"Undercover Mode"的东西。它让 Claude 给开源仓库贡献代码时不留任何 AI 参与的痕迹。没有署名,没有 AI 签名。
还有个内部开关叫"YOLO"。它绕过 shell 命令的安全检查。名字已经够直白了。
看这内容的开发者很兴奋。看这内容的安全团队很紧张。这是两个完全不同的群体,反应完全不同。
源码公开后,研究人员现在可以详细审计 Claude 处理终端权限的方式。CVE-2026-21852,一个让恶意仓库在用户点击 Trust(信任)之前就能盗取 API 密钥的漏洞,已经被修了。但知道代码库结构让找下一个漏洞更快了。
源码里埋着一个模型代号:Capybara(水豚)。三层。
我不知道为什么这让我觉得好笑。Anthropic 做的是全球最顶尖的 AI 系统。他们下一代模型的内部代号是某种以淡定著称的大型南美啮齿动物。
水豚走红互联网就是因为它就那么坐着,超平静,鸟落身上、鳄鱼在旁边它也无所谓。也许这就是 Anthropic 想要的——一个被打什么都不会慌的模型。
也可能就是有人喜欢这种动物。不管怎样,名字现在公开了。不管 Anthropic 喜不喜欢,人们以后就会叫它 Capybara。
大多数报道把这事当灾难。有的说这是 Anthropic 最黑暗的一天。Reddit 上有人说竞争对手应该开香槟。
说说我的真实看法。
CLI 代码不是核心竞争壁垒。模型才是。看 Claude Code 的编排逻辑是怎么写的,并不能让你复刻它背后的智能。路由、工具系统、提示词,是,这些现在都暴露了。但 OpenAI 和 Google 不用等一个 source map 才知道 agentic CLI(智能体命令行)怎么搭。
但这已经是第二次了。同样的文件类型,同样的疏忽,隔了一年。
这不是运气差。是流程问题。
以这种速度发 AI 工具的公司,经常跳过那些慢一点的软件团队视为基本的步骤。一份像样的发布前检查清单两次都能拦住。.npmignore 检查不是什么冷门知识。npm 发布的每篇教程里都有。最多花五分钟。
大多数安全事件不需要黑客。需要的是一个赶工的开发者。
有人在 Reddit 上问这会不会让 Claude Code 作为工具的可信度下降。实话:大概不会。产品工作方式和 3 月 30 日一样。代码还是跑,代理还是干它们该干的事。
不同的是,现在你能看到底牌了。Anthropic 一直悄悄在做、一直没说的大部分功能,现在躺在 GitHub 上,快 2000 个 fork 了。
7x24 后台代理会来。持久记忆会来。Capybara 模型会来。
只是我们提前知道了。