6
6

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、そしてAIコーディングの次のステージ

6
Posted at

はじめに

2026年3月31日、Anthropicが開発するCLIツール「Claude Code」のソースコードが流出しました。
毎日Claude Codeをメインの開発ツールとして使っている身としては、驚きと同時に「中身を覗ける」興味が湧いたのが正直なところです。

本記事では事件の技術的な背景と、流出から判明した未発表機能について整理します。

事件の概要

セキュリティ研究者のChaofan Shou氏が、npmパッケージ @anthropic-ai/claude-code のv2.1.88に異常を発見しました。
パッケージ内に59.8MBのソースマップファイル(.map)が含まれていたのです。

このソースマップから、以下の規模のソースコードが復元可能でした。

  • TypeScriptファイル: 約1,906ファイル
  • コード行数: 約512,000行
  • フィーチャーフラグ: 108個のゲートモジュール

Anthropicの声明によると、顧客データや認証情報の流出はなかったとのことです。
しかし、未発表の機能やロードマップが丸見えになったことは、Anthropicにとって大きな痛手と見られています。

なぜ起きたのか — ソースマップ混入の技術的背景

ソースマップとは、バンドル済みの本番コードと元のソースコードを紐づけるJSONファイルです。
デバッグ時にスタックトレースを元のファイル名・行番号で表示するために使います。

重要なのは、ソースマップの sourcesContent フィールドです。
ここには元のソースコードがそのまま格納されます。

{
  "version": 3,
  "sources": ["src/main.tsx", "src/kairos/daemon.ts"],
  "sourcesContent": ["// 元のソースコードがここに丸ごと入る", "..."]
}

Bunとの関係

Claude CodeはBunランタイム上で動作しています。
Bunのバンドラはデフォルトでソースマップを生成します。

関連するBunのIssue(oven-sh/bun#28001)では、プロダクションモードでもソースマップが配信される問題が報告されていました。
ただし、今回の直接原因はBunのバグではなく、パッケージングプロセスの設定ミスです。

.npmignoreの欠落

npmパッケージを公開する際、.npmignore で除外対象を指定します。
今回は .map ファイルの除外エントリが欠けていました。

# .npmignore に以下が必要だった
*.map

この1行があれば、事件は防げていました。
CI/CDパイプライン内でのヒューマンエラーが根本原因です。

Bunの bun pm pack コマンドには .npmignore の処理に別のバグ(#15602)も報告されています。npmパッケージを公開する際は、npm pack --dry-run で含まれるファイルを事前確認することを推奨します。

流出から分かった未発表機能

KAIROS — 自律デーモンモード

ソースコード内で150回以上参照されていた最大の発見が「KAIROS」です。
古代ギリシャ語で「好機」を意味するこの機能は、Claude Codeを常駐型の自律エージェントに変えるものです。

現在のClaude Codeは「ユーザーが指示→AIが応答」というリアクティブな動作です。
KAIROSはこれを根本から変えます。

判明した仕様は以下のとおりです。

  • 定期的な <tick> プロンプトを受信し、能動的に行動するか静観するかを判断する
  • 1回のプロアクティブ操作のブロッキング時間は最大15秒に制限されている
  • 日次のappend-onlyログファイルを維持する
  • GitHub Webhookを購読し、イベント駆動で反応する
  • 5分間隔のcronリフレッシュサイクルで動作するバックグラウンドワーカーを持つ

さらに興味深いのが autoDream 機能です。
ユーザーがアイドル状態のとき、サブエージェントがバックグラウンドで「夢を見る」ように記憶を整理します。
矛盾する情報の除去、曖昧な知見の事実化、観察結果のマージを行います。

毎日Claude Codeを使っている開発者として、KAIROSには素直に期待しています。現状、毎朝Claude Codeを起動してコンテキストを再構築する作業が発生します。常駐デーモンが前回のセッションを覚えていて、GitHub通知に反応してくれるなら、開発ワークフローが根本的に変わります。

ULTRAPLAN — クラウド側の長時間思考

KAIROSと連携する機能として ULTRAPLAN が見つかりました。
複雑な計画タスクをクラウド上のOpus 4.6に委譲し、最大30分の専用思考時間を確保する仕組みです。

ローカルのCLIでは処理しきれない大規模な設計判断を、非同期でクラウドに任せるアーキテクチャと推測されます。

BUDDY — AIペットコンセプト

buddy/companion.ts に実装されていた、Tamagotchi風のコンパニオンシステムです。

  • 18種のクリーチャー(アヒル、ドラゴン、アホロートル、カピバラなど)
  • Common〜Legendaryのレアリティ階層
  • ユーザーIDのハッシュから決定論的に生成される
  • コスメティックアイテム(帽子)と5つのステータス

内部メモでは4月1日〜7日にティーザー、2026年5月の正式リリースが示唆されていました。
エイプリルフール企画として準備されていた可能性が高いです。

その他の注目すべき内部構造

フラストレーション検知: userPromptKeywords.ts には、ユーザーの不満を検出する正規表現パターンがありました。LLM推論ではなく、キーワードマッチングで実装されています。

アンチ蒸留メカニズム: モデルの蒸留(knowledge distillation)を防ぐ仕組みが2層で実装されていました。ANTI_DISTILLATION_CC フラグにより、APIリクエストにデコイのツール定義を注入します。

アンダーカバーモード: Anthropic社員が外部リポジトリで作業する際、AI関与のメタデータを除去するモードです。USER_TYPE === 'ant' で自動的にトリガーされます。

ネイティブクライアント認証: APIリクエストにBunのネイティブHTTPスタック(Zig実装)が暗号ハッシュを付与する仕組みです。正規のClaude Codeバイナリからのリクエストを検証するDRM的な機構です。

Bashセキュリティ: bashSecurity.ts に23段階のセキュリティチェックがあり、Zshビルトインのブロッキングやユニコードインジェクション防御が含まれていました。

AIコーディングツールの今後の方向性

KAIROSの存在は、AIコーディングツールの進化の方向を明確に示しています。

現在のAIコーディングツールは、すべてリアクティブです。
ユーザーが指示を出し、AIがそれに応える。
このパターンが当面のスタンダードだと思われていました。

KAIROSは「プロアクティブ」への転換点です。
常駐デーモンがコードベースの変更を監視し、GitHub通知に反応し、必要に応じて自発的にタスクを実行する。

これが標準になる可能性は十分にあります。
GitHub Copilot、Cursor、Windsurf、Devinなども同様のアプローチを模索しているはずです。

特に autoDream のような記憶整理機能は、長期コンテキストの維持という現在のAIツール共通の課題に対するAnthropicなりの回答です。
セッション間のコンテキスト断絶は、実際に使っていて最も不満を感じるポイントの一つです。

Anthropicの対応

Anthropicは流出を認め、以下の対応を行いました。

  1. 顧客データ・認証情報の流出はないと声明
  2. GitHubに対してDMCAテイクダウンを要請し、8,000以上のリポジトリコピーを削除
  3. ただし、テイクダウンの範囲が過剰で意図しないリポジトリにも影響。後日大幅に縮小
  4. Anthropic幹部は原因を「プロセスエラー」と説明。高速なリリースサイクルに起因

テイクダウンの過剰な適用は開発者コミュニティから強い反発を受けました。DMCAの濫用はオープンソースエコシステムへの信頼を損なうリスクがあります。

流出したコードはGitHub史上最速で成長したリポジトリとなり、事件の注目度の高さを物語っています。

開発者として知っておくべきこと

npmパッケージ公開時のチェックリスト

今回の事件から得られる教訓は明確です。

  1. .npmignore*.map を明記する
  2. package.jsonfiles フィールドで公開対象を明示的に指定する
  3. npm pack --dry-run で公開前にパッケージ内容を確認する
  4. CI/CDパイプラインにパッケージサイズの閾値チェックを組み込む(59.8MBは明らかに異常値)
  5. バンドラの設定でプロダクションビルド時にソースマップ生成を無効化する
# 公開前の確認コマンド
npm pack --dry-run | head -20
# パッケージサイズの確認
du -sh *.tgz

AIツール利用者として

Claude Codeを含むAIコーディングツールは、手元のコードをAPIに送信しています。
今回は「ツール側」のコードが漏れた事例ですが、構造的には双方向のリスクがあります。

機密性の高いコードベースでAIツールを使う場合は、送信内容のフィルタリングやプロキシの導入を検討すべきです。

まとめ

今回の流出は、.npmignore の1行欠落というシンプルな原因で起きました。
一方で、流出した内容はAIコーディングツールの未来像を垣間見せてくれました。

KAIROSのようなデーモンモードは、開発者とAIの関係を「指示と応答」から「協働」に変えるポテンシャルがあります。
正式リリースを待ちたいと思います。


参考リンク

6
6
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
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?