2026年3月31日,Claude Code 全部源码出现在 GitHub 上——不是被黑客攻破,是 Anthropic 自己把 source map 文件打包进了 npm 发布物。
这件事技术细节清晰,过程触目惊心,教训对所有开发者都有用。
一个 57MB 的 .map 文件,撕开了 51 万行代码
整个泄露的核心,是一个名为 cli.js.map 的文件,体积高达 57MB。
它是怎么来的?Claude Code 在构建发布版本时,意外将开发阶段的 Source Map 文件一起打包进了 npm 包。这个 .map 文件本质上是一个 JSON,里面有两个关键数组:
sources:文件路径列表sourcesContent:每个文件对应的完整源码
两者索引一一对应,提取过程不需要任何反编译或反混淆,直接解析 JSON 就能拿到所有原始代码。
一个开发者顺手写了提取脚本,1906 个 Claude Code 自身 TypeScript/TSX 文件,加上 2850 个 node_modules 依赖,合计 4756 个文件、51 万行代码,全部还原。
你看到的是什么?
从泄露的源码可以清楚看到 Claude Code 的架构全貌:
- 终端 UI:React + Ink(用 React 写命令行界面的框架)
- 核心循环:一个 REPL 交互引擎,接收自然语言输入和 slash 命令
- 工具系统:通过 API 与 LLM 交互,工具定义、权限模型、执行逻辑一览无余
- 系统提示词:架构设计和 prompt 全程可见
一句话:Claude Code 的”大脑”被完整公开了。
Anthropic 的处理:DMCA 了,但已经晚了
Anthropic 反应迅速,移除了 npm 包中的 source map,GitHub 上用于归档源码的仓库也收到了 DMCA 删除通知。
但为时已晚。
早期版本的 npm 包早已被社区存档,源码在开发者之间私下流传。DMCA 能删除仓库,但无法从已经下载到各地的本地文件里撤回这些代码。
这不是黑客攻击,是一个经典安全疏忽
Source map 是开发调试工具,用于在生产错误发生时,还原出完整的原始代码供开发者排错。它包含变量名、注释、所有信息——它本来就不应该出现在生产发布物中。
这是每个发布 npm 包的开发者都应该自检的问题:发布前查一下你的 .map 文件。一行 sourcesContent 就能让你的所有代码公之于众。
给所有开发者的提醒
- 发布前检查:npm pack 之后、解压之前,看一眼里面有没有 .map 文件
- CI/CD 添加检查:在发布流程中加入
.map文件检测步骤 - .map 不要上传生产服务器:即便发了,也可以从服务器上删除
- 依赖也要查:node_modules 里的 .map 同样会泄露第三方代码
Claude Code 的泄露,是一个可以写进教科书的安全反面案例。

TopsTip