Claude Code 源码意外泄露!Anthropic 的 npm 包暴露了 .map 文件
今天(3月31日),安全研究员 @Fried_rice 发现了一件大事:Anthropic 的 Claude Code CLI 完整源码泄露了。
原因比较低级——npm 发布包里包含了 .map 文件(source map),这个文件直接指向了 Anthropic R2 存储桶上未混淆的 TypeScript 源码。也就是说,任何人只要拿到这个 map 文件,就能下载到完整的 src/ 目录。
泄露规模:
📁 约 1,900 个文件
📝 超过 51.2 万行代码
🔧 完整的 CLI 架构、工具系统、权限机制、多 Agent 编排全部曝光
- 运行时:Bun
- 语言:TypeScript(严格模式)
- 终端 UI:React + Ink
- CLI 解析:Commander.js
- Schema 校验:Zod v4
- 代码搜索:ripgrep
- 协议:MCP SDK、LSP
- 遥测:OpenTelemetry + gRPC
- Feature Flags:GrowthBook
- 认证:OAuth 2.0、JWT、macOS Keychain
几个有意思的发现:
1: 多 Agent 编排:源码里有 coordinator/ 目录和 AgentTool,专门做 sub-agent 生成和多 Agent 协作。还有个 TeamCreateTool,支持团队级并行工作。
2: 权限系统:每次工具调用都要过权限检查,支持多种模式(default、plan、bypassPermissions、auto 等)。这跟前几天 Anthropic 博客写的 “Claude Code auto mode” 完全对上了。
3: 隐藏功能:通过 Bun 的 feature flags 做死代码消除,发现了几个未公开的功能标
-PROACTIVE
-KAIROS
-BRIDGE_MODE
-DAEMON
-VOICE_MODE
-AGENT_TRIGGERS
-MONITOR_TOOL
语音模式和主动模式看来已经在开发中了。
4: 核心文件巨大:QueryEngine.ts 约 4.6 万行(LLM 调用核心),Tool.ts 约 2.9 万行,commands.ts 约 2.5 万行。
说实话,这种泄露方式太低级了。.map 文件不应该出现在 npm 发布包里,这是基本的构建卫生问题。Anthropic 作为顶级 AI 公司,在软件发布流程上翻了这么初级的车,多少有点尴尬。
但对于开发者社区来说,这反而是一次难得的学习机会——你可以看到一个顶级 AI 公司的 CLI 产品是怎么架构的:React 做终端 UI、MCP 做工具集成、多 Agent 编排怎么实现、权限系统怎么设计。
开源地址(研究用途镜像):
🔗 https://github.com/instructkr/claude-code
⚠️ 注意:这不是 Anthropic 官方仓库,是韩国研究社区 instructkr 做的研究性镜像存档。
夜雨聆风