🏠 ホーム ニュース 📖 解説記事 📚 トピック解説 🏷️ タグ一覧 ℹ️ About
🔍 記事を検索
カテゴリ
📡 RSSフィード
Follow
X (Twitter) 🧵 Threads
Quick Links
ニュース一覧 🏷️タグから探す
🧠Claude 🤖Agent 💬LLM 🔌MCP 🛠️Tool
Subscribe
📡 RSSフィード
Breaking News
2026.03.31 21:00 claude security

Claude Codeソースコード流出の全貌:npm混入で51万行公開、未公開機能KAIROSも発覚

🔓 ニュース
Claude Codeソースコード流出の全貌:npm混入で51万行公開、未公開機能KAIROSも発覚
TL;DR
Claude Codeのnpmパッケージからソースマップ経由で51万行のTypeScriptソースが流出。未公開プロジェクトKAIROSや107個のフィーチャーフラグが発覚した経緯・影響・対策を詳細に解説。

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以上のフォークを集めた。もう回収は不可能だ。

流出の原因 ── ソースマップ除去忘れとブラックリスト方式の落とし穴

ソースマップとは、「圧縮・変換後のコード」と「元のコード」を対応づけるファイルだ。開発中のデバッグには便利だが、本番環境に含めると元のソースコードが丸見えになる。

流出がどのように起きたかを図にすると:

flowchart LR A["📝 TypeScript\nソースコード\n1,902ファイル"] -->|Bunでビルド| B["📦 バンドル済み\nJSファイル"] A -->|自動生成| C["🗺️ ソースマップ\n.mapファイル"] B --> D["📤 npm公開"] C -->|⚠️ 除去忘れ| D D -->|誰でもDL可能| E["👀 全ソース\n丸見え"] 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の内部構造が見えてきた。全体像を図にするとこうなる:

graph TD subgraph UI["🖥️ UI層"] A["main.tsx (785KB)\nReact + Ink\nターミナル描画"] 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個の未公開機能スイッチ\nGrowthBookで管理\ntengu_ プレフィックス"] end A --> TOOLS A --> ENGINE ENGINE --> FLAGS style FLAGS fill:#ff6b6b22,stroke:#ff6b6b

「まだ誰にも見せてない機能」が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が自律的に動く常駐アシスタントに進化させる計画だとされている。

flowchart LR subgraph NOW["📱 現在のClaude Code"] direction LR U1["👤 ユーザー"] -->|指示を出す| A1["🤖 AI"] A1 -->|答える| U1 end subgraph KAIROS["🚀 KAIROS(未公開)"] direction LR A2["🤖 AI"] -->|自分で判断| A2 A2 -->|通知する| U2["👤 ユーザー"] A2 -->|PR監視| G["📂 GitHub"] A2 -->|ファイル送信| U2 end NOW -.->|進化?| KAIROS style KAIROS fill:#1e293b,stroke:#ff6b6b

報告されたフラグ名から推測される機能:

機能 何ができるようになる?
常駐プロセス化 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がアイドル時に過去のセッションを振り返り、記憶を自動整理するというものだ。

sequenceDiagram participant U as 👤 ユーザー participant CC as 🤖 Claude Code participant M as 🧠 メモリ Note over U,M: 日中:通常の作業 U->>CC: コードのバグを直して CC->>M: セッション記録を保存 U->>CC: テストも書いて CC->>M: セッション記録を保存 Note over U,M: 夜間:autoDreamが発動 rect rgba(100, 100, 255, 0.1) CC->>CC: ① 24時間経過を検知 CC->>M: ② 過去5セッション以上を検索 CC->>M: ③ 重要な情報を統合 CC->>M: ④ 矛盾する古い記憶を修正 CC->>M: ⑤ インデックスを25KB以下に圧縮 end Note over M: 整理された記憶で次のセッションへ

ソースコードにも 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が協力して動く)の仕組みも報告されている。

flowchart TD C["🎯 Coordinator\n指揮官"] C -->|調査を依頼| E["🔍 Explore Agent\n調査員\n(読み取り専用)"] C -->|設計を依頼| P["📐 Plan Agent\n設計士\n(読み取り専用)"] C -->|検証を依頼| V["🔨 Verification Agent\n検証官"] V -->|"「壊すのが仕事」\n最初の80%に騙されるな"| R["✅ or ❌\n合否判定"] 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を不正なリポジトリで使う場合のリスクも指摘されている。

flowchart LR A["😈 悪意ある\nリポジトリ"] -->|git clone| B["💻 あなたのPC"] B -->|claude -p| C["⚠️ 信頼確認\nスキップ"] B -->|.mcp.json| D["⚠️ 設定ファイルに\n見せかけた\nコマンド実行"] C --> E["🔥 意図しない\nコード実行"] D --> E style E fill:#ff6b6b,stroke:#cc5555,color:#fff

知らないリポジトリで claude -pclaude doctor を安易に実行しないこと。 これはClaude Codeに限らず、あらゆるAIコーディングツールに共通するリスクだ。

皮肉な「アンダーカバーモード」

ソースコードからは、Anthropic社員がパブリックリポジトリで作業する際に、内部情報(モデルコードネーム、未リリースバージョン等)をコミットやPRから自動除去する仕組みの存在も報告されている。

内部情報の流出防止機能を実装していたのに、ソースマップ経由でコード自体が流出した — という皮肉は多くの人が指摘した。

5日で2回の情報流出

これは5日間で2度目の重大な情報流出だ。3月26日にはCMS設定ミスで未リリースモデル「Claude Mythos」の詳細、CEOイベント情報、3,000の未公開アセットが流出していた。

「AIセーフティ企業」を標榜する会社が自社ソフトウェアのセキュリティ管理に連続して失敗した形で、「AIの安全性を語る前に自社の安全性を」という声も上がっている。キャッシュバグによる料金爆発問題も含めると、Anthropicにとって厳しい週になった。

同じミスを防ぐための3つの対策

技術的な話に戻ると、今回の事件からnpmパッケージを公開するすべての開発者が学べることがある。

flowchart TD subgraph BEFORE["❌ 今回のAnthropicの方式"] B1["ブラックリスト方式\n.npmignore で\n除外ファイルを指定"] --> B2["新しいファイルタイプ\nが漏れるリスク"] end subgraph AFTER["✅ 推奨される方式"] A1["ホワイトリスト方式\npackage.json の files で\n含めるファイルだけ指定"] --> A2["想定外のファイルは\n絶対に含まれない"] 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個のフィーチャーフラグ」などの情報は、流出したソースコードの第三者による分析結果に基づいている。

flowchart LR subgraph FACT["✅ 確認済みの事実"] F1["ソースマップが\nnpmに混入"] F2["51万行のコードが\n公開状態に"] F3["Anthropicが\n即座に削除対応"] end subgraph MAYBE["⚠️ 第三者の分析・解釈"] M1["KAIROS計画の\n全体像"] M2["各フラグの\n機能推測"] M3["autoDreamの\n動作詳細"] end style FACT fill:#22c55e15,stroke:#22c55e style MAYBE fill:#eab30815,stroke:#eab308

フィーチャーフラグがコードに存在することと、その機能が実際にリリースされることは別の話だ。廃止された実験的機能やジョークコード(BUDDY のたまごっちなど)が含まれている可能性もある。

Anthropicからの公式声明は出されていない。

信じるか信じないかは、あなた次第だ。

OpenHandsのようなオープンソースAIコーディングツールでは、こうした「流出」の概念自体が存在しない。コードの透明性をどう考えるかという問いも、この事件は投げかけている。

この事件を深掘りする

2つのインシデントの違いを正確に理解し、自分の環境が影響を受けていないか確認したい場合は、感染チェックコマンド付きの詳細解説記事を参照してほしい。axiosマルウェアのRAT検出方法と認証情報ローテーションの手順をステップごとに解説している。

Claude Codeの内部アーキテクチャに興味がある場合は、Claude Code設計思想の解説記事も参考になる。流出で明らかになったツール層・クエリエンジン層の構造を、公式ドキュメントベースで整理している。

AIエージェントフレームワークの比較記事では、Claude Codeを含む主要9フレームワークのアーキテクチャを横断的に比較。今回の事件で露出したマルチエージェント構造がどう位置づけられるかがわかる。

参照ソース

Follow
よくある質問
Q. Claude Codeのソースコードはどうやって流出したのか
npmパッケージ@anthropic-ai/claude-code v2.1.88にソースマップファイル(.map)が含まれていた。Bunバンドラーがデフォルトでソースマップを生成する仕様で、設定ミスにより除去されなかった。ハッキングではなくビルド設定の不備。
Q. 流出した規模はどのくらいか
1,902個のTypeScriptファイル、512,000行以上のソースコード。ツール定義だけで29,000行、AIとの通信部分が46,000行。
Q. KAIROSプロジェクトとは何か
ソースコードから発見されたとされる未公開プロジェクト。Claude Codeを常駐AIアシスタントに進化させる計画とされるが、Anthropicからの公式確認はない。
Q. Anthropicの対応は
ソースマップを除去したnpmアップデートを即座にプッシュし、以前のバージョンをレジストリから削除。ただし調査時点で公式声明は出されていない。
Q. 開発者として学ぶべき教訓は
npm pack --dry-runでパブリッシュ前に内容を確認する。.npmignoreのブラックリスト方式よりpackage.jsonのfilesフィールドでホワイトリスト方式を使う。CI/CDにソースマップ検証ステップを追加する。
関連する記事
小規模モデルも同じ脆弱性を発見か。Mythosの過度な誇大宣伝疑惑
agent
小規模モデルも同じ脆弱性を発見か。Mythosの過度な誇大宣伝疑惑
2026.04.12
【速報】OpenAI、axios開発者ツール侵害を公式発表|macOSアプリのコード署名フローが影響
securityopenai
【速報】OpenAI、axios開発者ツール侵害を公式発表|macOSアプリのコード署名フローが影響
2026.04.11
Docker脆弱性CVE-2026-34040:AuthZバイパスでホスト乗っ取り、CVSS 8.8の緊急パッチ
securitydevops
Docker脆弱性CVE-2026-34040:AuthZバイパスでホスト乗っ取り、CVSS 8.8の緊急パッチ
2026.04.09
Claude Mythos Preview発表:AIが全主要OS・ブラウザのゼロデイ脆弱性を数千件発見、Anthropicが1億ドル規模の防衛計画を始動
claudesecurity
Claude Mythos Preview発表:AIが全主要OS・ブラウザのゼロデイ脆弱性を数千件発見、Anthropicが1億ドル規模の防衛計画を始動
2026.04.09
🔔 AI速報、毎日Xで配信中
Claude Code・MCP・AIエージェントの最新ニュースをいち早くお届け
@peaks2314 をフォロー
広告
🔥 Popular
#2 POPULAR
🎨 awesome-design-md:DESIGN.mdでAIにUI生成させる方法【58ブランド対応】
DESIGN.mdをプロジェクトに置くだけでAIエージェントが一貫したUI生成を実現。Vercel・Stripe・Claudeなど58ブランドのデザイン仕様をnpx 1コマンドで導入する方法と、実際の出力差を検証した結果を解説。
#3 POPULAR
📊 TradingView MCP:Claude CodeからTradingViewを完全操作する78ツールのMCPサーバー
TradingView MCPはClaude CodeからTradingView Desktopを直接操作できる78ツール搭載のMCPサーバー。チャート分析、Pine Script開発、マルチペイン、アラート管理、リプレイ練習まで自然言語で実行。導入手順を解説
#4 POPULAR
⚡ Claude Code NO_FLICKER modeの使い方:ちらつき解消とマウス対応でターミナルUI刷新
Claude CodeのNO_FLICKER modeは環境変数1つで有効化できる新ターミナルレンダラー。ちらつき解消・マウスイベント対応・差分レンダリングの仕組みと設定方法を解説。今すぐ使い方を確認しましょう。
#5 POPULAR
☁️ Floci入門:LocalStack代替のAWSローカル開発環境【起動24ms・25サービス対応】
FlociはLocalStack無料版の代替となるGo製AWSエミュレータ。S3・DynamoDB・Lambda等25サービスを起動24ms・メモリ13MiBで再現。認証トークン不要、go installで即導入。LocalStackとの詳細比較と導入手順を解説。
#6 POPULAR
🔗 Claude Microsoft 365 連携ガイド:SharePoint・Outlook・Teams接続と活用例
ClaudeのMicrosoft 365コネクタを使えばSharePoint・OneDrive・Outlook・Teamsのデータを横断検索・分析できます。全プラン(Free含む)対応。設定手順・活用例・セキュリティ設定・よくあるトラブル対処を初心者向けに解説します。
#7 POPULAR
⚠️ Anthropic、Claude Codeで予想外の高速クォータ枯渇認める。キャッシュバグで料金10〜20倍
Claude Codeでプロンプトキャッシュを破壊する2つのバグが発見され、API利用料が10〜20倍に跳ね上がる問題が発生。Anthropicは「チームの最優先事項」と認める。Pro/Maxユーザーから月間の大半で使用不可との報告多数。
#8 POPULAR
🤖 Anthropic、常時稼働型AIエージェント「Conway」を極秘テスト。AIが自律デジタル分身へ進化
Anthropicが「常時稼働」型AIエージェント「Conway」を開発中。Webhookでイベント駆動、24時間365日自律稼働。同時にCoworkも非エンジニア向けに急速普及。AIの動作モデルが根本から変わる
#9 POPULAR
🦊 Claude Sonnet 5(claude-sonnet-5-20260401)リリース:SWE-bench 92%超えで開発者が知るべき全仕様
AnthropicがClaude Sonnet 5(claude-sonnet-5-20260401)を2026年4月1日リリース。SWE-bench 92.4%・GPQA 96.2%と全ベンチマーク首位。料金はSonnet 4.6と同額$3/$15のまま据え置き。API移行・性能比較・実用コード付きで解説。
#10 POPULAR
🕷️ Spider Rs:Rust製の高速Webクローラーで大規模サイトマッピングを実現
非同期処理とメモリ効率を活かしたRust製Webクローラー。サイト構造の自動解析、複数URLの並列処理、カスタマイズ可能なスクレイピングに対応。SEO分析やコンテンツ監査の自動化を検討する開発チームへ
← Lil Agents:軽量で拡張可能なAIエージェントフレームワーク Aiming Lab Agent0:マルチエージェント型AIシステムの構築を簡素化するPythonフレームワーク →