0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【全解析】Claude Codeソースコードリーク事件 — KAIROS・BUDDY・ULTRAPLANの全容と、Claude Codeの未来予測

0
Posted at

自己紹介

株式会社Good Labでエンジニアをしている コータロー です。
日々、Java・SQL・Gitなどの技術情報や、新人エンジニア向けの学習ノウハウ、
AI活用についての情報を発信しています。

Good Labについて気になった方は、コーポレートサイトもぜひご覧ください。
コーポレートサイト

はじめに

2026年3月31日、AIコーディングツール史上最大のリーク事件が発生しました。Anthropic の Claude Code のソースコード 約51.2万行 が、npmパッケージへのソースマップ誤同梱により世界中に流出。未公開機能の全容が明らかになり、開発者コミュニティを揺るがしました。

この記事では、事件の時系列を正確に振り返った上で、リークから判明した未公開機能の技術的詳細と、それが開発者の未来にどう影響するかを解析します。

前半: 時系列まとめ — 何が起きたのか

1. 事件の概要

日時: 2026年3月31日(日本時間では4月1日未明)
対象バージョン: @anthropic-ai/claude-code v2.1.88(npmパッケージ)
流出規模: 約1,900のTypeScriptファイル、51.2万行以上のソースコード
流出ファイル: cli.js.map(59.8MB のソースマップファイル)

npmレジストリに公開された Claude Code のパッケージに、本来含まれるべきではないソースマップファイルが同梱されていました。このファイルには、ビルド前のTypeScriptソースコードが完全な形で埋め込まれており、誰でもダウンロード・復元できる状態でした。

2. 発見の経緯

セキュリティ研究者の Chaofan Shou(X: @Fried_rice)氏が、2026年3月31日午前4時23分(ET)頃にこの問題を発見。Xで以下の趣旨を共有しました。

"Claude code source code has been leaked via a map file in their npm registry!"

投稿は数時間で爆発的に拡散。1,600万〜2,100万回閲覧されたとされます。ソースコードのスナップショットは即座にGitHubにミラーされ、流出から数時間で 41,500件以上のフォーク が作成されました。

3. 技術的原因 — なぜ起きたのか

原因は 2つの要因の組み合わせ です。

Bunランタイムのデフォルト挙動

Claude Code は Node.js ではなく Bun をビルドランタイムとして使用しています。Bun はデフォルトでソースマップを生成します。Node.js のビルドツールでは明示的にソースマップ生成を有効にする必要がありますが、Bun では明示的に無効にしなければ生成されるという逆の挙動です。

.npmignore の除外設定漏れ

生成されたソースマップファイル(*.map)が .npmignore に追加されていませんでした。Anthropic のエンジニア Boris Cherny 氏も「plain developer error(単純な開発者のミス)」と認めています。

再発だった

実はこれは初めてではありません。2025年2月にも同様のソースマップ流出が発生しており、今回は少なくとも13か月間で2度目の同種事故でした。前回の教訓が .npmignore の設定として定着していなかったことになります。

同日に発生した別のインシデント

偶然にも同日(3月31日 UTC 00:21〜03:29)、Claude Code が依存する axios パッケージに対するサプライチェーン攻撃が発生。マルウェアが混入した悪意あるバージョンがnpmに公開されていました。ソースコードリーク自体とは無関係ですが、タイミングの一致が混乱を助長しました。

4. Anthropicの対応

Anthropic は以下の声明を発表しました。

"a release packaging issue caused by human error, not a security breach"
(リリースパッケージングの問題であり、人為的ミスによるもの。セキュリティ侵害ではない)

"No sensitive customer data or credentials were involved or exposed"
(機密性の高い顧客データや認証情報は含まれておらず、露出もしていない)

その後、GitHubに対して DMCAテイクダウン通知 を発行。流出ソースコードをホストするミラーリポジトリの削除を要請しました。ただし、自社のパッケージングミスで公開されたコードに対するDMCA請求という対応には、コミュニティから批判的な声も上がりました。

なお、初動ではパッケージの unpublish(取り下げ) ではなく deprecated(非推奨)フラグ の設定にとどまっていた点も指摘されています。

5. コミュニティの反応

claw-code: GitHub史上最速の10万スター

韓国の開発者 Sigrid Jin 氏が、リークされたソースコードを直接ホストするのではなく、Claude Code のアーキテクチャを Python/Rust でクリーンルーム実装 した「claw-code」(instructkr/claw-code)を公開。

  • 公開から約2時間で 50,000スター を達成
  • GitHub史上最速で10万スターを突破 したリポジトリとなった
  • GPT-4.1、Claude API、Gemini、Ollamaなど 任意のLLM で動作する設計

エイプリルフール説の否定

流出が3月31日(米国時間)だったため「エイプリルフールのジョークでは?」という憶測もありましたが、Anthropic が正式に「パッケージングミス」と認めたことで否定されました。

偽リポジトリによるマルウェア配布

話題性に便乗し、「Claude Code のリークソースコード」を装った 偽リポジトリ が多数出現。マルウェアを含むものも確認されており、注意喚起がなされました。正規のソースコードを入手する目的でGitHubを検索することは、セキュリティリスクを伴います。


後半: 判明した未公開機能と未来予測

リークされたソースコードには 44個のコンパイル時フィーチャーフラグ が含まれており、未リリース機能のコードが完全な形で存在していました。Bun のデッドコード除去(dead code elimination)により、通常のビルドではこれらのコードは完全に除去されるため、ユーザーが設定ファイルや環境変数で有効化することは不可能です。

以下、主要な未公開機能を解析します。

KAIROS — 常駐型自律エージェント

何ができるのか

「KAIROS」はギリシャ語で「好機(行動すべき適切な瞬間)」を意味する言葉に由来します。ソースコード内で 150回以上 参照されている、Claude Code の未リリース自律デーモンモードです。

現在の Claude Code は「ユーザーが指示を出す → Claude が応答する」というリアクティブなモデルですが、KAIROS は根本的に異なります。

主な特徴:

項目 詳細
動作形態 バックグラウンドデーモンとして常駐。ターミナルを閉じても稼働継続
自律判断 定期的なtick(ハートビート)プロンプトで、行動するか静観するかを自己判断
セッション永続性 セッションをまたいで状態を維持。再起動しても文脈を失わない
ブロッキングバジェット 1回の判断サイクルに15秒の時間制限(リソース独占防止)
cronリフレッシュ 5分間隔でバックグラウンドワーカーが更新
ログ 日次の追記専用(append-only)マークダウンログ。エージェント自身が自己消去不可

専用ツール(通常セッションでは使用不可):

  • PushNotification: デバイスへのプッシュ通知送信
  • SendUserFile: ユーザーへのファイル配信
  • SubscribePR: GitHub PRアクティビティの自律的監視
  • SleepTool: デーモンの一時停止制御

フィーチャーフラグ: feature('KAIROS') および tengu_kairos で制御。外部ビルドでは false にコンパイルされるため、現在は有効化不可能。

いつ来そうか

ソースコード内のコメントに4月1〜7日のティーザー、5月のフルローンチを示唆する記述が見つかっています(ただしAnthropicは未確認)。

実務にどう影響するか

KAIROS が実現すれば、開発ワークフローは劇的に変化します。

  • CI/CD監視の自動化: ビルド失敗時に自律的に原因を分析し、修正PRを作成
  • PR自動レビュー: PRが作成されるたびにコードレビューを実行し、コメントを投稿
  • 夜間バッチ処理: 開発者が不在の間にリファクタリングやテスト追加を実行
  • インシデント初動対応: 障害検知時にログ分析と初期診断を自律的に開始

「開発者が寝ている間にコードが進む」時代が現実味を帯びてきています。

autoDream — 夜間メモリ統合

何ができるのか

autoDream は KAIROS と連動する メモリ統合システム です。ユーザーがアイドル状態(PCを使用していない時間帯)に、Claude Code がこれまでのセッションで蓄積した知識を整理・統合します。

4段階のサイクル:

フェーズ 処理内容
1. Orient(方向づけ) 現在のメモリ状態と統合の必要性を評価
2. Gather Signal(信号収集) 完了したセッションから関連するパターンやインサイトを抽出
3. Consolidate(統合) 新しい知識を既存のメモリと統合。矛盾する情報の解消、曖昧な洞察の確定的事実への変換
4. Prune & Index(剪定と索引化) 冗長な情報の除去、約25KB・200行以下の MEMORY.md を維持

発動条件:

  • 前回の統合から 24時間以上 経過
  • 5セッション以上 を完了
  • 統合ロックの取得(同時実行防止)

実務にどう影響するか

現在の Claude Code でも MEMORY.md によるプロジェクト記憶は可能ですが、手動管理が必要です。autoDream が実装されれば、Claude Code は「プロジェクトの文脈を自律的に学習し、忘れない」存在になります。

  • 新しいセッションを開始するたびに「前回どこまでやったか」を説明する必要がなくなる
  • プロジェクト固有の命名規則やアーキテクチャパターンを自動で学習・記憶
  • 時間経過による記憶の劣化を防ぎ、常に最新かつ整理された状態を維持

BUDDY — ターミナルペット

何ができるのか

BUDDY は、ターミナルに住む たまごっち風のAIペット です。開発体験にゲーミフィケーション要素を加える機能で、リーク後の2026年4月1日に /buddy コマンドとしてリリース済みです。

18種類のキャラクター:

Duck, Goose, Blob, Cat, Dragon, Octopus, Owl, Penguin, Turtle, Snail, Ghost, Axolotl, Capybara, Cactus, Robot, Rabbit, Mushroom, Chonk

ソースコード内ではキャラクター名が String.fromCharCode() で難読化されており、Anthropicのビルドシステムの文字列スキャンを回避する工夫がされていました。

レアリティシステム:

レアリティ 出現確率
Common 60%
Uncommon 25%
Rare 10%
Epic 4%
Legendary 1%
Shiny(全レアリティに独立して付与) 1%

5つのステータス:

  • Debugging(デバッグ力)
  • Patience(忍耐力)
  • Chaos(混沌度)
  • Wisdom(知恵)
  • Snark(皮肉度)

割り当てアルゴリズム:

ユーザーIDのハッシュ値(ソルト: 'friend-2026-401')から FNV-1aハッシュ を計算し、Mulberry32 PRNG でキャラクターを決定論的に割り当てます。リロール(振り直し)は不可能で、一度割り当てられたBUDDYは永続的にユーザーに紐づきます。

スプライトは500msインターバルでアニメーション、吹き出しは10秒間表示されます。

実務にどう影響するか

機能的には軽量ですが、「ターミナルに愛着が湧く」という開発体験の向上は侮れません。長時間のデバッグ中に相棒がいる感覚は、開発者の心理的な負担を軽減する可能性があります。

ULTRAPLAN — クラウド計画実行

何ができるのか

ULTRAPLAN は、複雑な計画立案をローカルのClaude Code ではなく Anthropicのクラウド上で Opus 4.6 モデルに最大30分間実行させる 機能です。/ultraplan コマンドで起動し、リーク後にリリース済みです。

アーキテクチャ:

  1. ユーザーが /ultraplan で計画をリクエスト
  2. タスクが Cloud Container Runtime に送信される
  3. Opus 4.6 が最大30分かけて詳細な計画を生成
  4. ローカルターミナルが 3秒間隔でポーリング して進捗を監視
  5. ブラウザUIで計画を確認・コメント・承認/却下
  6. 承認後、ULTRAPLAN_TELEPORT_LOCAL センチネル値によりローカルで実行

3つのバリアント:

バリアント 用途
Simple Plan 短時間で概要レベルの計画を生成
Visual Plan 視覚的な構造図を含む計画
Deep Plan 最大30分かけて詳細な実装計画を生成

実務にどう影響するか

  • 大規模リファクタリング: モノリスからマイクロサービスへの移行計画を30分で立案
  • データベースマイグレーション: スキーマ変更の影響範囲分析と移行手順の自動生成
  • アーキテクチャ設計: 技術選定の比較検討を含む設計ドキュメントの生成
  • クロスサービス変更: 複数リポジトリにまたがる変更の依存関係分析と実行順序の計画

ローカルマシンのリソースに制約されず、クラウドの計算資源で「考える時間」を確保できる点が画期的です。

その他の注目機能

Undercover Mode — AI帰属表示の除去

概要: Anthropic社員(USER_TYPE === 'ant')が社外のリポジトリで Claude Code を使用する際、自動的にAIの痕跡を消す 機能です。undercover.ts に約90行で実装されています。

除去対象:

  • Co-Authored-By: Claude などのgitコミット帰属表示
  • 内部コードネーム(「Capybara」「Tengu」)への言及
  • 内部Slackチャンネルやリポジトリ名
  • 「Claude Code」という名称そのもの

重要な点: 外部ビルドではデッドコード除去により完全に消去されるため、一般ユーザーは使用できません。一方、強制オフの仕組みがない"If we're not confident we're in an internal repo, we stay undercover.")という設計です。

OSSコミュニティでの議論: 「AI生成コードの帰属を意図的に隠すのは、OSSの透明性に反する」という倫理的批判が起きています。特にオープンソースプロジェクトへのコントリビューションにおいて、AIが関与したことを隠蔽することの是非は、今後のOSSガバナンスにおける重要な論点です。

Anti-Distillation — 競合の学習データ汚染防止

概要: 競合他社がClaude CodeのAPI通信を記録して自社モデルのトレーニングデータに使用することを防ぐ防御機構です。2層構造になっています。

第1層: 偽ツール定義の注入

フラグ ANTI_DISTILLATION_CC が有効な場合、APIリクエストに anti_distillation: ['fake_tools'] を含めます。サーバー側でシステムプロンプトに偽のツール定義が注入され、通信を傍受してトレーニングデータにした場合、モデルが誤った動作を学習するようになります。

有効化には4つの条件が必要: コンパイル時フラグ、CLIエントリポイント、ファーストパーティAPIプロバイダー、GrowthBookフィーチャーフラグ。

第2層: コネクタテキスト要約

ツールコール間のアシスタントテキストを暗号署名付きで要約して返却。元のテキストは署名から復元可能。Anthropic社員のみ(USER_TYPE === 'ant')が対象。

Frustration Detection — 不満検知

概要: ユーザー入力を正規表現でスキャンし、不満や怒りを検知して応答トーンを調整する機能です。

検知パターン(一部):

/\b(wtf|wth|ffs|omfg|horrible|awful|so frustrating|this sucks|damn it|piece of (crap|junk)|what the hell)\b/

※ 実際のパターンはより多くの表現を含みますが、一部のみ掲載しています。

コミュニティからは「LLMを提供する会社が、感情分析にLLMではなく正規表現を使っている」という皮肉な反応がありましたが、推論コスト(Web検索1回あたり$0.01)と応答速度の観点からは合理的な設計判断です。

Coordinator Mode — マルチエージェント連携

CLAUDE_CODE_COORDINATOR_MODE=1 で有効化される階層型マルチエージェントシステム。Research → Spec → Implement → Verify のフェーズを、独立したワーカーディレクトリ(tengu_scratch)で並行実行。既にリリースされている Agent Teams 機能とは別の、より高度な連携基盤です。

未発表モデルへの参照

Undercover Mode の「言及禁止」リストに、以下のモデル識別子が含まれていました。

  • opus-4-7: 現行の Opus 4.6 の後継と推定される次世代モデル
  • sonnet-4-8: 現行の Sonnet 4.5 系列の後継と推定されるモデル

また、内部コードネームとして以下が確認されています。

コードネーム 推定される対応
Tengu Claude Code プロジェクト全体のコードネーム(フィーチャーフラグの接頭辞として数百回出現)
Capybara 新モデルファミリー(capybara-fast バリアント含む)
Fennec Opus 4.6(migrateFennecToOpus 関数の存在から)
Numbat 未リリースモデル("Remove this section when we launch numbat" のコメント)

その他の技術的発見

  • YOLO Classifier: 操作のリスクレベルをLOW/MEDIUM/HIGHに自動分類し、LOW リスク操作を自動承認するシステム
  • Native Client Attestation: APIリクエストに cch=00000 プレースホルダを含め、BunのネイティブHTTPスタックが暗号ハッシュに置換。正規バイナリの検証に使用
  • コード品質の実態: print.ts が5,594行、1つの関数が3,167行・ネスト12段階という巨大な実装も発見された

まとめ

リーク事件の教訓

この事件は、npmパッケージのソースマップ管理 という基本的だが見落としやすい問題が引き起こしました。

  • Bunを使う場合: ソースマップはデフォルトで生成される。.npmignore*.map を追加するか、ビルド設定で無効化する
  • CI/CDパイプライン: パッケージ公開前に npm pack --dry-run でファイル一覧を確認する工程を組み込む
  • 再発防止: 2025年にも同様の事故が発生しており、「修正した」つもりでも組織的なチェック体制がなければ再発する

Claude Code の進化の方向性

リークから見えるClaude Code の進化は明確です。

「受動的なツール」から「自律的なパートナー」へ。

現在 未来(KAIROS以降)
ユーザーが指示 → Claude が応答 Claude が自律的に行動・判断
セッション単位で記憶がリセット セッション横断で文脈を維持・統合
ローカルマシンで処理 クラウドと連携して大規模計画を立案
単一エージェント マルチエージェント協調

開発者として今から備えておくべきこと

  1. MEMORY.md を整備する: autoDream の恩恵を最大化するために、現時点からプロジェクトの文脈を構造化して記録する習慣をつける
  2. CLAUDE.md を充実させる: プロジェクトルールを明文化しておけば、自律エージェントが正しい判断基準で動ける
  3. CI/CDの自動化レベルを上げる: KAIROS が登場した際に、既存のパイプラインと連携できるよう準備する
  4. AI生成コードのガバナンスを考える: Undercover Mode の議論が示すように、AIの関与を開示するかどうかはチームで方針を決めておく必要がある

Claude Code は、もはや「便利な補助ツール」ではなく、開発チームの一員として自律的に働く存在へと進化しようとしています。その未来に備えて、今から環境と運用ルールを整備していくことが重要です。

参考

@kotaro_ai_lab
AI活用や開発効率化について発信しています。フォローお気軽にどうぞ!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?