乐于分享
好东西不私藏

Claude Code 源码意外泄露!Anthropic 的 npm 包暴露了 .map 文件

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 做的研究性镜像存档。