この記事ではClaude Codeに特化して解説します。Claude Code全般は Claude Code完全ガイド2026:インストールから本番運用まで をご覧ください。
Claude Codeソースコード流出の経緯 ── npmソースマップ混入事件
Anthropicが提供するAIコーディングツール「Claude Code」の中身が丸見えになった。
ハッキングされたわけではない。Anthropicが自分でnpm(JavaScriptのパッケージ管理システム)にコードを公開するとき、「ソースマップ」という本来含めてはいけないファイルを一緒に入れてしまった。いわば設計図を製品と一緒に箱に入れて出荷してしまったようなものだ。
発見したのはセキュリティ研究者のChaofan Shou氏。対象は @anthropic-ai/claude-code v2.1.88で、1,902個のファイル・51万行以上のソースコードが読める状態だった。
発見から数時間でGitHubにアーカイブリポジトリが複数作られ、最大のものは15,000以上のスターと22,000以上のフォークを集めた。もう回収は不可能だ。
Claude Code 流出事件から学ぶOSS公開の影響
「claude code 流出」というキーワードで情報を探している読者の多くは、「今回の件で何が問題になったのか」「自分のnpm公開にも同じリスクがあるのか」の2点を知りたいはずだ。事件の本質は、Anthropicが意図的に公開したわけではないのに、ビルドパイプラインの設定不備で51万行のソースコードが実質的にオープンソース化した状態が発生した点にある。
事件の公表情報から整理できる事実は以下のとおり。
| 項目 | 内容 |
|---|---|
| 流出範囲 | TypeScriptファイル1,902個・512,000行以上 |
| 流出経路 | @anthropic-ai/claude-code v2.1.88 のnpmパッケージに含まれたソースマップ(.map)ファイル |
| 原因 | Bunバンドラがデフォルトで生成するソースマップを除去しないまま公開 |
| 発見者 | セキュリティ研究者 Chaofan Shou 氏 |
| 拡散 | GitHub上にアーカイブリポジトリが複数作成、最大のものは15,000スター以上 |
| Anthropicの対応 | ソースマップを除去したバージョンを即時公開、旧バージョンをレジストリから削除 |
OSS公開の観点で学べる教訓は3つある。第一に、一度npmに公開したパッケージは数時間以内にフォーク・アーカイブされ、回収は事実上不可能である点。第二に、「ハッキング」ではなく「設定不備」で大規模流出が起きたという事実は、内製ツールをnpm/PyPIに公開しているすべての開発者にとって他人事ではない。第三に、ソースコード流出によって未公開プロジェクト(本記事で後述するKAIROS・autoDream等)や107個のフィーチャーフラグが公開状態になり、Anthropic自身の製品ロードマップが意図せず開示される事態になった点だ。これらは「公式確認のない第三者分析」であることを前提に読む必要がある。
流出の原因 ── ソースマップ除去忘れとブラックリスト方式の落とし穴
ソースマップとは、「圧縮・変換後のコード」と「元のコード」を対応づけるファイルだ。開発中のデバッグには便利だが、本番環境に含めると元のソースコードが丸見えになる。
流出がどのように起きたかを図にすると:
ソースコード
1,902ファイル"] -->|Bunでビルド| B["バンドル済み
JSファイル"] A -->|自動生成| C["️ ソースマップ
.mapファイル"] B --> D["npm公開"] C -->|️ 除去忘れ| D D -->|誰でもDL可能| E["全ソース
丸見え"] style C fill:#ff6b6b,stroke:#cc5555,color:#fff style E fill:#ff6b6b,stroke:#cc5555,color:#fff
npmでパッケージを公開する際は「このファイルだけ入れる」というホワイトリスト方式が推奨されている。しかしAnthropicは「このファイルは入れない」というブラックリスト方式を使っていたため、ソースマップがすり抜けてしまった。
同じ日にAxiosの供給チェーン攻撃も報告されており、npmエコシステムのセキュリティが改めて問われる1日になった。さらに同日、Claude Codeのプロンプトキャッシュを破壊する2つのバグも発覚し、API利用料が10〜20倍に跳ね上がる問題が報告されている。
流出した51万行の中身 ── Claude Codeの内部アーキテクチャ
流出したソースコードの分析から、Claude Codeの内部構造が見えてきた。全体像を図にするとこうなる:
React + Ink
ターミナル描画"] end subgraph TOOLS["ツール層 — 29,000行"] B1["Bash実行"] B2["ファイル操作"] B3["Web検索"] B4["Git / LSP"] B5["エージェント生成"] B6["他35+ツール"] end subgraph ENGINE["クエリエンジン — 46,000行"] C["全LLM APIコール処理"] end subgraph FLAGS["フィーチャーフラグ"] D["107個の未公開機能スイッチ
GrowthBookで管理
tengu_ プレフィックス"] end A --> TOOLS A --> ENGINE ENGINE --> FLAGS style FLAGS fill:#ff6b6b22,stroke:#ff6b6b
- 内部コードネーム: 「Tengu(天狗)」。フラグ名やログに30ファイル以上で登場する
- UIの仕組み: ターミナル上でReact(通常はWeb用のUI技術)を使って画面を描画している
- コード品質: Hacker Newsでは、ある1つの関数が3,167行・12段階のネスト・約486の分岐を持つことが話題になり、「AIが書いたコードみたいだ」と皮肉られた
「まだ誰にも見せてない機能」が107個も見つかった
ソフトウェア開発では「フィーチャーフラグ」という仕組みを使って、開発中の機能をコードに入れつつ無効化しておくことがある。スマホアプリで言えば「メニューには出てないけどコードの中には存在する隠し機能」のようなものだ。Claude Codeには107個ものフラグが見つかったとされている。
以下は、流出したコードの分析レポートやXのスレッドで報告された内容だ。Anthropicによる公式確認はなく、分析者の解釈が含まれている点に注意してほしい。
ただし、実際のソースコードには tengu_ プレフィックスのフラグが至るところに埋め込まれている。たとえば:
// src/commands/vim/vim.ts — エディタモード変更時のログ
logEvent('tengu_editor_mode_changed', {
mode: newMode,
source: 'command',
});
// src/utils/bash/parser.ts — Tree-sitterパーサーのロード
logEvent('tengu_tree_sitter_load', { success })
// src/hooks/useIdeLogging.ts — IDE連携イベント
logEvent(`tengu_ide_${eventName}`, eventData)
「tengu(天狗)」がアナリティクスイベントの共通プレフィックスとして使われていることが確認できる。
KAIROS — AIが勝手に動き出す?
最も話題になったのが「KAIROS」と呼ばれるプロジェクトだ。
今のClaude Codeは「ユーザーが指示を出す → AIが答える」という対話型。KAIROSはユーザーが何も言わなくてもAIが自律的に動く常駐アシスタントに進化させる計画だとされている。
報告されたフラグ名から推測される機能:
| 機能 | 何ができるようになる? |
|---|---|
| 常駐プロセス化 | PCを立ち上げたらバックグラウンドで動き続ける |
| 自律動作 | ユーザーの入力を待たずに自分で判断して動く |
| プッシュ通知 | 「これやっておきました」とスマホに通知が来る |
| マルチチャネル | ターミナルだけでなく複数の入力経路をサポート |
| 15秒ルール | 15秒以上かかる処理は後回しにして邪魔しない |
実際のコードでは、KAIROSのフラグがUI制御にまで組み込まれている:
// src/components/Spinner.tsx — KAIROSモード時のUI切り替え
if (
(feature('KAIROS') || feature('KAIROS_BRIEF')) &&
(getKairosActive() || getUserMsgOptIn() &&
(briefEnvEnabled ||
getFeatureValue_CACHED_MAY_BE_STALE('tengu_kairos_brief', false))
) && isBriefOnly && !viewingAgentTaskId
) {
return <BriefSpinner mode={props.mode} />;
}
feature('KAIROS') でフラグの有効/無効を判定し、有効な場合は専用UIに切り替わる。GrowthBookの tengu_kairos_brief がキルスイッチ(緊急停止用)として機能している点も興味深い。
autoDream — AIが「寝てる間に」記憶を整理する?
「Dream(夢見る)」と名付けられた機能の報告もある。人間が睡眠中に記憶を整理するように、AIがアイドル時に過去のセッションを振り返り、記憶を自動整理するというものだ。
ソースコードにも autoDream の実装が確認できる:
// src/utils/backgroundHousekeeping.ts — autoDreamの初期化
import { initAutoDream } from '../services/autoDream/autoDream.js'
// src/services/autoDream/consolidationLock.ts — 排他ロック
logForDebugging(
`[autoDream] lock held by live PID ${holderPid} ` +
`(mtime ${Math.round((Date.now() - mtimeMs) / 1000)}s ago)`
)
// src/services/autoDream/config.ts
// can read the auto-dream enabled state without dragging in
// the forked agent / task registry / message builder chain
// that autoDream.ts pulls in.
consolidationLock でプロセス間の排他制御を行い、複数のClaude Codeインスタンスが同時に記憶整理を始めないようにしている。Claude Codeの自動モードで既にメモリ機能は実装されており、その延長線上にある機能という解釈は自然だ。
Coordinator Mode — AI同士が役割分担する
マルチエージェント(複数のAIが協力して動く)の仕組みも報告されている。
指揮官"] C -->|調査を依頼| E["Explore Agent
調査員
(読み取り専用)"] C -->|設計を依頼| P["Plan Agent
設計士
(読み取り専用)"] C -->|検証を依頼| V["Verification Agent
検証官"] V -->|"「壊すのが仕事」
最初の80%に騙されるな"| R["or
合否判定"] style V fill:#ff6b6b22,stroke:#ff6b6b
注目されたのはVerification Agentに与えられたとされるプロンプトだ。「あなたの仕事は実装が動くことを確認することではない — 壊すことだ」「最初の80%に騙されるな」と書かれているという。AIが自分自身の「見た目は動いてるからOK」というバイアスを対策している設計思想が読み取れる。
その他に報告されたフラグ
| フラグ名 | 推測される機能 | ひとことで言うと |
|---|---|---|
VOICE_MODE |
音声入出力 | 話しかけてコーディング |
WEB_BROWSER_TOOL |
ブラウザ操作を内蔵 | AIがWebページを見る |
ULTRAPLAN |
最大30分の超詳細プランニング | クラウドで長考 |
ULTRATHINK |
深い推論モード | さらに深く考える |
BUDDY |
たまごっち風コンパニオンペット | エイプリルフール? |
MCP_SKILLS |
MCPサーバーからスキル自動発見 | プラグイン自動認識 |
TEAMMEM |
チーム共有メモリ | チーム全員の記憶を共有 |
FORK_SUBAGENT |
サブエージェントのプロセス分離 | AI分身が独立動作 |
使う側も気をつけたいリスク
不正リポジトリでの危険な操作
分析レポートでは、Claude Codeを不正なリポジトリで使う場合のリスクも指摘されている。
リポジトリ"] -->|git clone| B["あなたのPC"] B -->|claude -p| C["️ 信頼確認
スキップ"] B -->|.mcp.json| D["️ 設定ファイルに
見せかけた
コマンド実行"] C --> E["意図しない
コード実行"] D --> E style E fill:#ff6b6b,stroke:#cc5555,color:#fff
知らないリポジトリで claude -p や claude doctor を安易に実行しないこと。 これはClaude Codeに限らず、あらゆるAIコーディングツールに共通するリスクだ。
皮肉な「アンダーカバーモード」
ソースコードからは、Anthropic社員がパブリックリポジトリで作業する際に、内部情報(モデルコードネーム、未リリースバージョン等)をコミットやPRから自動除去する仕組みの存在も報告されている。
内部情報の流出防止機能を実装していたのに、ソースマップ経由でコード自体が流出した — という皮肉は多くの人が指摘した。
5日で2回の情報流出
これは5日間で2度目の重大な情報流出だ。3月26日にはCMS設定ミスで未リリースモデル「Claude Mythos」の詳細、CEOイベント情報、3,000の未公開アセットが流出していた。
「AIセーフティ企業」を標榜する会社が自社ソフトウェアのセキュリティ管理に連続して失敗した形で、「AIの安全性を語る前に自社の安全性を」という声も上がっている。キャッシュバグによる料金爆発問題も含めると、Anthropicにとって厳しい週になった。
同じミスを防ぐための3つの対策
技術的な話に戻ると、今回の事件からnpmパッケージを公開するすべての開発者が学べることがある。
.npmignore で
除外ファイルを指定"] --> B2["新しいファイルタイプ
が漏れるリスク"] end subgraph AFTER["推奨される方式"] A1["ホワイトリスト方式
package.json の files で
含めるファイルだけ指定"] --> A2["想定外のファイルは
絶対に含まれない"] end style BEFORE fill:#ff6b6b15,stroke:#ff6b6b style AFTER fill:#22c55e15,stroke:#22c55e
パブリッシュ前の確認
# パッケージに含まれるファイルを事前確認
npm pack --dry-run
# ソースマップが含まれていないか検索
npm pack --dry-run 2>&1 | grep -i ".map"
ホワイトリスト方式の採用
{
"files": [
"dist/",
"README.md",
"LICENSE"
]
}
「入れないファイルを指定する」のではなく、「入れるファイルだけ指定する」。これだけで今回のような事故の大半は防げる。
CI/CDの検証ステップ
# GitHub Actionsでパブリッシュ前にソースマップを検証
- name: Check for source maps
run: |
if npm pack --dry-run 2>&1 | grep -q "\.map"; then
echo "ERROR: Source maps found in package"
exit 1
fi
流出情報の信頼性 ── 確認済みの事実と第三者の推測
最後に大事な注意点。この記事で紹介した「KAIROS」「autoDream」「107個のフィーチャーフラグ」などの情報は、流出したソースコードの第三者による分析結果に基づいている。
npmに混入"] F2["51万行のコードが
公開状態に"] F3["Anthropicが
即座に削除対応"] end subgraph MAYBE["️ 第三者の分析・解釈"] M1["KAIROS計画の
全体像"] M2["各フラグの
機能推測"] M3["autoDreamの
動作詳細"] end style FACT fill:#22c55e15,stroke:#22c55e style MAYBE fill:#eab30815,stroke:#eab308
フィーチャーフラグがコードに存在することと、その機能が実際にリリースされることは別の話だ。廃止された実験的機能やジョークコード(BUDDY のたまごっちなど)が含まれている可能性もある。
Anthropicからの公式声明は出されていない。
信じるか信じないかは、あなた次第だ。
OpenHandsのようなオープンソースAIコーディングツールでは、こうした「流出」の概念自体が存在しない。コードの透明性をどう考えるかという問いも、この事件は投げかけている。
この事件を深掘りする
2つのインシデントの違いを正確に理解し、自分の環境が影響を受けていないか確認したい場合は、感染チェックコマンド付きの詳細解説記事を参照してほしい。axiosマルウェアのRAT検出方法と認証情報ローテーションの手順をステップごとに解説している。
Claude Codeの内部アーキテクチャに興味がある場合は、Claude Code設計思想の解説記事も参考になる。流出で明らかになったツール層・クエリエンジン層の構造を、公式ドキュメントベースで整理している。
npmパッケージの安全な公開手順やClaude Code全体のセキュリティ体制については、HackerAIによるセキュリティテスト自動化やClaude Codeベストプラクティスガイドも参考になる。
AIエージェントフレームワークの比較記事では、Claude Codeを含む主要9フレームワークのアーキテクチャを横断的に比較。今回の事件で露出したマルチエージェント構造がどう位置づけられるかがわかる。
関連記事: Claude Code完全ガイド2026:インストールから本番運用まで
参照ソース
- Hacker News — Claude Code source maps discussion
- DEV Community — Claude Code’s entire source code was just leaked via npm source maps
- GitHub — Kuberwastaken/claude-code(分析リポジトリ)
- GitHub — instructkr/claude-code(ソーススナップショット、⭐15,207 / Fork 22,586)
- byteiota — Claude Code Source Leaked via npm: 512K Lines Exposed
- The New Stack — Anthropic March 2026 Roundup
- Fortune — Anthropic leaked unreleased model via unsecured data store
- Medium — Claude Code Dreams: inside the autoDream feature
- @The_AGI_WAY — ソースコード分析スレッド