




























2026 年 3 月 31 日,Anthropic 旗下的明星 AI 编程工具 Claude Code,因一个极其低级的构建配置失误,完整源代码意外全网泄露。1900+ 文件、512,000+ 行 TypeScript 代码、44 个功能标志、20+ 个未发布特性——全部公之于众。更尴尬的是,这已经是 13 个月内第二次犯完全相同的错误。
2025-02-24 第一次泄露 Claude Code v0.2.8,inline-source-map 暴露源码
2025-02-25 紧急修复 Anthropic 删除 0.2.8 之前的 npm 包,0.2.9 修正问题
2026-03-26 CMS 泄露 Anthropic CMS 配置失误,泄露未发布的 Mythos 模型草稿
2026-03-31 第二次泄露 Claude Code v2.1.88,cli.js.map 包含完整源码
2026-03-31 安全研究员 Chaofan Shou 在 X 平台首先公开此事
2026-03-31 代码被归档至公共 GitHub 仓库,数小时内被 Fork 41,500+ 次
2026-03-31 Anthropic 紧急撤包,版本回退至 v2.1.87
2026-04-01 韩国开发者 Sigrid Jin 用 OpenAI Codex 净室重写 Python 版 claw-code
发布 2 小时获 50,000 star,成为 GitHub 历史上增长最快的仓库
.map 文件引发的血案Source Map 是前端开发中的调试利器。当 TypeScript/JavaScript 代码经过编译、压缩、混淆后,Source Map 文件能把它"还原"回原始源码,方便开发者在浏览器或 Node.js 中调试。
一个典型的 .map 文件结构如下:
{
"version": 3,
"sources": ["../src/index.ts", "../src/utils.ts", ...],
"sourcesContent": ["// 这里是完整的原始源码...", ...],
"mappings": "AAAA,SAAS..."
}
关键字段是 sourcesContent——它直接包含了所有原始源文件的完整内容。换句话说,只要拿到 .map 文件,就等于拿到了全部源码。
Claude Code 随 Claude 3.7 一起发布,以 npm 包形式分发。在 v0.2.8 及之前版本中:
.mjs 文件高达 22MB(正常应该几百 KB)inline-source-mapAnthropic 反应迅速——光速删除了 0.2.8 之前的包,在 0.2.9 中修正。但 GitHub 上已经有人存档了完整代码(如 dnakov/claude-code)。
版本从 0.2.x 演进到 2.1.88,代码量膨胀了近 10 倍,但同样的错误再次发生:
根本原因:npm 包中误留了 cli.js.map 文件(59.8 MB)
具体而言:
1. Claude Code 基于 Bun 构建(Anthropic 于 2025 年底收购了 Bun)
2. Bun 默认生成 Source Map
3. .npmignore 中未添加 *.map 排除规则
4. package.json 的 files 字段也未正确配置
5. 可能存在 Bun bug (#28001):即使生产模式也生成 Source Map
提取方式极其简单:
# 下载 npm 包
npm pack @anthropic-ai/claude-code@2.1.88
# 解压
tar -xzf anthropic-ai-claude-code-2.1.88.tgz
# cli.js.map 的 sourcesContent 字段中包含了所有源码
# 一行 jq 即可提取
cat package/cli.js.map | jq -r '.sources[]'
"这是由人为错误引起的发布打包问题,而非安全漏洞。没有敏感客户数据或凭据被涉及或泄露。我们正在推出措施以防止此类事件再次发生。"
翻译一下:这不是被黑,是我们自己不小心。
以"AI Safety"为招牌的公司,在 5 天内连续发生 CMS 数据泄露和源码泄露,工程管理的严谨度令人质疑。
此次泄露的是 Claude Code v2.1.88 的完整客户端代码,规模如下:
| 指标 | 数值 |
|---|---|
| 文件总数 | ~1,906 个 |
| 代码行数 | 512,000+ 行 |
| 编程语言 | TypeScript |
| Map 文件大小 | 59.8 MB |
| 功能标志 | 44 个 |
| 未发布特性 | 20+ 个 |
| 工具数量 | ~40 个 |
| Slash 命令 | ~50 个 |
泄露代码展示了 Claude Code 远不是一个简单的"LLM 聊天包装器",而是一个生产级的 Agent 平台:
claude-code/
├── coordinator/ # 多 Agent 协调编排(Agent Teams 核心)
├── assistant/ # 内部代号 KAIROS 的自主模式
├── voice/ # 语音交互完整实现
├── plugins/ # 插件系统
├── skills/ # 技能按需加载系统
├── buddy/ # 终端电子宠物(彩蛋)
├── query-engine/ # 查询引擎(46,000 行代码,代码库最大模块)
├── tools/ # 40 个工具的实现(~29,000 行)
├── ide-bridge/ # IDE 桥接层(VS Code, JetBrains)
├── memory/ # 持久化记忆系统
├── security/ # 安全检查(2,500 行 bash 安全校验)
└── system-prompt/ # 完整的系统提示词
技术选型亮点:
代码中被引用超过 150 次 的 KAIROS,是 Claude Code 最重磅的未发布功能:
KAIROS 模式:
┌─────────────────────────────────────────┐
│ Claude 作为持久后台 Agent 运行 │
│ ↓ │
│ 接收定期 <tick> 提示 │
│ ↓ │
│ 自主决策:是否需要主动行动 │
│ ↓ │
│ autoDream 子 Agent: │
│ - 用户空闲时运行 │
│ - 合并观察、消除矛盾 │
│ - 将模糊见解转化为事实 │
│ ↓ │
│ ULTRAPLAN: │
│ - 复杂规划卸载到云端 │
│ - 使用 Opus 4.6 模型 │
│ - 30 分钟专用思考时间 │
└─────────────────────────────────────────┘
如果说当前的 Claude Code 是"你说一步它做一步",那 KAIROS 就是"它自己想着做,你审批就行"——从 Copilot 到 Autopilot 的范式跃迁。
这是最具争议的发现。在 undercover.ts(约 90 行代码)中:
USER_TYPE === 'ant' 识别 Anthropic 内部员工,当检测到远程仓库不在内部白名单时自动激活解读:Anthropic 员工在使用 Claude Code 给外部开源项目贡献代码时,会自动隐藏 AI 参与的痕迹。这在 AI 伦理和开源透明度方面引发了巨大争议。
为了防止竞争对手通过 API 流量进行模型蒸馏:
// ANTI_DISTILLATION_CC 标志启用后:
// 1. 向 API 请求注入伪造的工具定义(毒化竞争对手的训练数据)
// 2. 对工具调用之间的助手推理进行摘要和加密签名
// → 窃听者只能捕获摘要,无法获得完整的思维链输出
社区反应:这些机制"很容易通过代理剥离字段或使用第三方 API 提供商来绕过"。
泄露代码中包含了 Anthropic 的内部模型代号映射:
| 代号 | 对应模型 |
|---|---|
| Capybara | Claude 4.6(代码映射)/ Mythos 层级名称(CMS 泄露) |
| Fennec | Opus 4.6 |
| Numbat | 未发布模型 |
注意:关于 Capybara 的指代存在歧义。在 Claude Code 的代码映射中,Capybara 被映射到 Claude 4.6;但在 3 月 26 日 CMS 泄露的内部文档中,Capybara 被定义为位于 Opus 之上的新模型层级(即 Mythos 所属层级),性能远超 Claude Opus 4.6。两者可能反映了不同阶段的内部命名演变。
更劲爆的是内部基准数据:Capybara v8 的虚假声明率为 29-30%(较 v4 的 16.7% 有所倒退)。这意味着 Anthropic 自己的测试显示,模型在某些维度上出现了退步。
coordinator/ 目录实现了 Agent Teams 功能的核心:
Claude Code 语音模式的完整实现此前一直处于黑箱状态,此次全部暴露。
技能系统工作流:
用户输入 → 意图识别 → 技能匹配 → 按需加载领域知识 → 注入上下文 → 执行
这是一个完整的可扩展性架构,展示了技能系统如何动态加载领域专业知识。
最后一个彩蛋:一个拥有完整设计的终端宠物系统:
谁能想到,一次源码泄露还顺带剧透了愚人节惊喜。
泄露代码还包含了:
泄露后数小时内,代码被上传至多个 GitHub 仓库:
| 仓库 | 说明 | 状态 |
|---|---|---|
| openkedge/claude-code-source | 原始泄露代码存档 | Fork 41,500+ |
| Kuberwastaken/claude-code | 带详细分析的存档 | 社区热门 |
| 仓库 | 说明 |
|---|---|
| dnakov/claude-code | v0.2.8 原始泄露 |
| iamdin/Claude-Code-Leak | 教育研究用途存档 |
最引人注目的衍生项目是 Claw-Code:
instructkr/claw-code这种 AI 驱动的"净室重写"构成了一个法律难题:如果 Anthropic 声称这种转换性作品侵犯了版权,可能会削弱其在训练数据版权案件中的辩护立场。
"第一次泄露教大家'该怎么做',第二次泄露展示'现在进化到了什么程度'。"
2025 年第一次泄露直接催化了 Coding Agent 赛道的爆发。这一次,开源社区将迅速消化:
预计很快会有大量类似的编码助手涌现——而且是站在 Anthropic 的肩膀上。
核心竞争力未动摇:Claude Code 的护城河是底层的 Claude 模型能力,而非客户端代码。代码可以重构,模型能力无法复制。
但路线图无法收回:泄露的 44 个功能标志暴露了完整的产品路线图、内部基准数据、以及像 Undercover Mode 这样的争议性策略决策。代码可以改写,战略意图却已昭告天下。
安全声誉受损:
2026 年 3 月 Anthropic 安全事故清单:
├── 3/26 CMS 配置失误 → 泄露未发布 Mythos 模型草稿
├── 3/31 npm Source Map → 泄露 Claude Code 完整源码
└── ???? 一家以 "AI Safety" 为招牌的公司,连基本的发布安全都做不好?
源码公开意味着更多开发者可以审计:
这可能反而有助于更快发现和修复安全漏洞。
巧合的是,泄露发生期间,npm 上的 axios 包也遭到了供应链攻击(包含远程访问木马)。这意味着在这个时间窗口内下载安装 Claude Code 的用户,可能面临额外的安全风险。
永远不要在生产包中包含 Source Map。 这不是"最佳实践",这是底线。
# 1. 发布前检查包含的文件列表
npm pack --dry-run
# 2. 确认 .npmignore 排除了调试文件
echo "*.map" >> .npmignore
echo "*.d.ts.map" >> .npmignore
# 3. 或者在 package.json 中用 files 白名单
{
"files": ["dist/cli.js", "dist/index.js"] // 只包含必要文件
}
# 4. CI/CD 中添加自动化检查
# 检查打包产物中是否包含 .map 文件
npm pack 2>/dev/null | tar -tz | grep '\.map$' && echo "FAIL: map files found!" && exit 1
如果使用 Bun:
# bunfig.toml
[build]
sourcemap = "none" # 生产环境禁用
如果使用 esbuild/webpack/rollup,确保生产配置中 sourcemap: false。
发布安全多层防护:
Layer 1: 构建配置禁用 Source Map
Layer 2: .npmignore / files 白名单
Layer 3: CI/CD 自动化检查
Layer 4: 发布前人工审核(npm pack --dry-run)
Layer 5: 发布后自动扫描(定期检查已发布包的内容)
Claude Code 通过 npm 分发,这本身就意味着选择了一个天然透明的生态系统。npm 的每个包都是一个 .tgz 压缩包,任何人都可以 npm pack 然后解压检查。
这种分发方式和"闭源保护"之间存在天然矛盾:
真正的护城河不是代码保密,而是持续的模型能力迭代和工程执行力。 Anthropic 似乎也意识到了这一点——他们在声明中强调"这不影响核心模型安全"。
| 维度 | 要点 |
|---|---|
| 泄露原因 | npm 包中误留 Source Map 文件(.map),构建配置失误 |
| 泄露规模 | 1,900+ 文件,512,000+ 行 TypeScript |
| 重复犯错 | 13 个月内第二次完全相同的错误 |
| 发现者 | 安全研究员 Chaofan Shou |
| 最大看点 | KAIROS 自主模式、Undercover Mode、反蒸馏机制、内部模型代号 |
| 核心影响 | 产品路线图暴露 > 代码泄露本身 |
| 行业效应 | 加速 AI Agent 工具的开源平替涌现 |
| 安全教训 | Source Map = 源码,发布流程需要多层防护 |
写在最后:一家以 AI 安全为使命的公司,因为最基础的 DevOps 配置失误,在同一个坑里摔了两次。这个故事告诉我们:再先进的 AI 能力,也需要扎实的工程基本功来守护。 安全不仅仅是模型对齐(Alignment),还包括你的
.npmignore有没有写对。
参考来源:
欢迎关注公众号 coft,获取更多 AI 前沿技术深度分析与行业洞察。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。