ナレッジ一覧に戻る
KNOWLEDGE/作戦資料

Claude Code流出から学ぶ
AIエージェント設計パターン7選

512,000行のソースコードが教えてくれた、AI組織の「事故を防ぐ設計」

2026.04.03

2026年3月31日、Anthropic社が自社のAIコーディングツール「Claude Code」のソースコード約51万行を誤って公開した。npmパッケージにデバッグ用のソースマップファイル(59.8MB)が混入し、そこからAnthropicのCloudflare R2ストレージ上のフルソースが誰でもダウンロード可能な状態になっていた。

原因は.npmignoreファイルに *.map の1行が抜けていたこと。たった1行の設定ミスが、約2,000ファイル、51万行のTypeScriptコードを世界に晒した。

発見したのはセキュリティ研究者のChaofan Shou氏。X(旧Twitter)で即座にリンクを投稿し、数時間でGitHubに4万回以上フォークされた。Pythonへの完全リライト版(OpenClaw等)も即日登場し、GitHub史上最速成長クラスのリポジトリになった。

この記事では、流出から判明した主要な設計パターン7つを解説し、そのうち実際に取り入れた3つについてはそのまま使えるCLAUDE.mdの実装例とプロンプトを載せる。自分のプロジェクトに導入したい人はコピーして使ってほしい。

事件の概要(30秒でわかるまとめ)

何が漏れたかClaude Code v2.1.88のTypeScriptソースコード全量(約512,000行、約2,000ファイル)
何が漏れていないかClaudeの言語モデル本体(重み)、ユーザーの会話データ、APIキー、顧客情報
原因npmパッケージにデバッグ用source mapファイルが混入。.npmignoreの設定漏れ
発見者セキュリティ研究者Chaofan Shou氏
Anthropicの対応「human errorによるリリースパッケージングの問題であり、セキュリティ侵害ではない」と公式声明。数千件のDMCA削除要請を発行
PATTERN 1

Self-Healing Memory

今回の流出で最も注目された設計パターン。Claude Codeの記憶管理は、単純な「全部保存して全部読む」ではなく、明確に分離された3層構造になっている。

第1層: MEMORY.md(常駐インデックス)

1行150文字以内のポインタだけを格納する軽量ファイル。常にコンテキストウィンドウに読み込まれる。データそのものはここに置かず、「どこに何があるか」の索引だけを保持する。

第2層: トピック別メモリファイル群

実際の知識はテーマごとに個別ファイルに分散保存。必要になった時だけオンデマンドで読み込む。ファイルにはfrontmatter(name, description, type)が付与されていて、関連性の判断に使われる。

第3層: 会話トランスクリプト

過去の会話ログは全文再読み込みしない。特定の識別子やキーワードで検索して、必要な部分だけ取り出す。

最も重要なのが「Self-Healing(自己修復)」の核心原則。Anthropicはエージェントに対して、メモリの内容を「ヒント」として扱い、必ず現在のコードベースや実際のファイル状態と照合してから使うよう指示している。メモリに「関数Xはファイルaに存在する」と書いてあっても、実際にファイルを開いて確認するまで信用しない。

これは「Context Entropy(コンテキストエントロピー)」と呼ばれる問題への対策。長時間のセッションでAIエージェントが古い記憶に基づいて間違った判断をしたり、矛盾する情報に混乱してハルシネーションを起こす現象を防ぐための設計。

MEMORY.mdのフォーマット例:

MEMORY.md
## Memory Index

- [user_role.md](user_role.md) — PM、React経験5年
- [project_deadline.md](project_deadline.md) — v2.0は4/15、機能フリーズ済み
- [feedback_testing.md](feedback_testing.md) — 統合テストではDBモックを使わない方針

個別メモリファイルの例:

feedback_testing.md
---
name: テスト方針
description: 統合テストでDBモックを禁止する方針とその理由
type: feedback
---

統合テストでは実DBを使い、モックは使わない。

Why: 前四半期にモックテストが全パスしたのに
本番マイグレーションが壊れた事故があった。
How to apply: テスト関連のPRレビュー時に
モック使用がないか確認する。
PATTERN 2

Agent Swarms

Claude Codeは「Coordinator(統括)」が複数の「Worker(作業者)」サブエージェントを生成して並行処理する設計になっている。内部では「Swarms(群れ)」と呼ばれ、フィーチャーフラグ tengu_amber_flint でゲートされていた。

01

各サブエージェントに渡すツール(権限)を厳格に制限する。コードを書くWorkerにはファイル操作ツールだけ、レビューするWorkerには読み取り専用ツールだけ。

02

各サブエージェントは独立したコンテキスト境界で動作する。AのWorkerがBのWorkerの内部状態を参照したり、汚染したりすることがない。

03

Coordinatorがタスクの分配と結果の統合を一手に担う。Worker同士は直接通信しない。

これはセキュリティの世界で「Blast Radius(爆発半径)の最小化」と呼ばれる考え方。ある部分で問題が起きても、被害がその範囲内に収まるように設計する。

権限テーブルのテンプレート:

AgentAccess OKAccess NG
PM(統括)全領域(読取)、メモリ管理コード直接編集、デザイン制作
開発担当コードリポジトリ、技術文書法務文書、財務データ
デザイン担当デザインファイル、ブランドガイドコード編集、法務文書
戦略担当戦略文書、コンテンツ原稿コードリポジトリ、デザインファイル
データ分析分析用データ、テスト結果コード編集、デザインファイル編集
CLAUDE.md に追加する権限ルール
## エージェント権限テーブル(最小権限原則)

各エージェントには専門領域に必要な最小限の権限のみを付与する。
ある担当の判断ミスが他の領域に波及するリスク(Blast Radius)を
最小化するため。

### 運用ルール
- 担当外の領域にアクセスする必要がある場合、PM経由でリクエストする
- 緊急時はPMの判断で一時的にアクセス権を拡張できる
- プロジェクトオーナーは全領域にフルアクセス権を持つ
PATTERN 3

Undercover Mode

Anthropicの社員が公開リポジトリで作業する際、Claude Codeは自動的に「Undercover Mode」に切り替わる。このモードでは、プロンプトに制約が注入され、内部情報(モデルのコードネーム、未公開バージョン番号、内部リポジトリ名など)がコミットメッセージやコードに漏れないようにする仕組み。

つまり「ステルスモード」。AIエージェントが対外的なアウトプットを生成する時に、内部でしか使わない用語や固有名詞が混入していないかを自動チェックする。

CLAUDE.md に追加する漏洩チェックルール
## 内部用語漏洩チェック(Undercover Mode)

対外文書を生成する際、以下の内部用語が混入していないかを
自動チェックする。検出されたらBLOCK(公開停止)判定。

### 検出対象リスト(自分のプロジェクトに合わせて編集)

- 組織の内部呼称:
  (例: プロジェクトのコードネーム、チームの愛称)
- AIエージェントのキャラクター名:
  (例: エージェントに付けた人名、愛称)
- 内部プロセス名:
  (例: 独自のワークフロー名、会議体の愛称)
- 技術的な内部情報:
  (例: 設定ファイル名、内部ツール名、内部API名)
- クライアント固有の機密情報:
  (例: 未公開の提案内容、契約条件)

### チェック実行タイミング
- 対外文書、クライアント向け成果物の完成時に毎回実行
- ブログ記事、SNS投稿、プレスリリースの公開前に毎回実行

### 判定基準
- BLOCK: リストの用語が検出された → 公開停止、該当箇所を修正
- WARN: 文脈的に内部情報に見える表現がある → 修正推奨
- PASS: 問題なし → 公開可
PATTERN 4

autoDream

Claude Codeのエージェントがアイドル状態(ユーザーの入力を待っている間)に自動実行される記憶整理プロセス。人間の睡眠中の記憶統合にちなんで名づけられている。

autoDreamが行う処理:

分散した複数の観察記録を1つのメモリにマージする
論理的に矛盾するメモリ同士を検出して解消する
「たぶんこうだろう」レベルの曖昧な洞察を、確認が取れたら確定事実に昇格させる
古い情報を新しい情報で上書きする

ポイントは「意識的にメモリ整理を実行する」のではなく、「暇な時間に勝手にやる」こと。現時点では完全自動のautoDreamを実装するのは難しいが、「週次で手動実行する簡易版」なら今日から導入できる。

CLAUDE.md に追加するメモリ棚卸しルール
## 週次メモリ棚卸し(autoDream簡易版)

毎週月曜日の朝、以下の手順でメモリの整合性をチェックする。

1. メモリ一覧取得
   MEMORY.mdを読み込み、全メモリファイルのリストを確認する

2. 鮮度チェック
   各メモリの作成日を確認し、2週間以上更新のないメモリは
   内容が現状と一致しているか検証する

3. 矛盾検出
   同じトピックに関する複数のメモリがある場合、
   内容に矛盾がないか照合する。矛盾があれば新しい方を残す

4. 確定昇格
   「おそらく」「かもしれない」等の曖昧な記述を含むメモリは、
   現在の状態を確認して確定事実に書き換えられないか検討する

5. ゴミ回収
   完了済みプロジェクト、廃止されたワークフローに
   関するメモリは削除する

6. レポート
   チェック結果を簡潔にまとめて報告する
PATTERN 5

KAIROS

ギリシャ語で「適切な時」を意味するKAIROSは、Claude Codeのフィーチャーフラグに150回以上登場する未公開機能。ターミナルを閉じた後もバックグラウンドで動き続ける「常駐エージェント」を実現するための設計。

Chronos と Kairos -- 時間の二元性

ギリシャ神話には「時間」を司る神が2柱いる。Chronos(クロノス)は客観的・連続的な時間の神。時計が刻む「何時何分」の時間。もう1柱がKairos(カイロス)で、こちらは主観的・決定的な瞬間の神。「今だ」という好機、チャンスの神。

QRONOS(当組織名)はChronosをQROブランドに換装したもの。客観的な時間管理 -- スケジュール、期限、進捗追跡 -- を得意とするAI秘書組織としてはぴったりの名前だと思っている。

そこにAnthropicがKAIROSと名付けた「適切なタイミングで自律的に動くエージェント」の設計思想が加わると、Chronos(時間を管理する力)とKairos(好機を捉える力)が揃う。時間の両面が完成する形になる。

判明している機能:

ファイル変更の監視
GitHubのWebhook購読(PR作成、コメント等のイベントを受信)
5分間隔のcronリフレッシュ
アイドル時のautoDream(記憶統合)実行
/dreamスキル(夜間の記憶蒸留)

暴走防止のレートリミット

プロアクティブなエージェントが暴走しないよう、以下の安全弁が組み込まれている。

ブロッキング予算: プロアクティブなアクションには15秒の実行制限。15秒を超える処理は延期される。

メッセージ上限: 1ウィンドウあたりプロアクティブメッセージは最大2件まで。

リアクティブ優先: ユーザーからの入力への応答はこの制限を受けない。

バックグラウンドエージェントのレートリミット設計テンプレート
## バックグラウンドエージェントのレートリミット設計

### 基本原則
- ユーザーへの応答(リアクティブ)は常に最優先
- エージェント側からの通知(プロアクティブ)には制限を設ける

### 制限パラメータ(Claude Code参考値)
- 1回のプロアクティブ処理: 最大15秒
- 1セッションあたりのプロアクティブ通知: 最大2件
- チェック間隔: 5分
- 夜間バッチ処理(メモリ整理等): 制限なし

### 通知の優先度
- CRITICAL: セキュリティ問題、ビルド破損 → 即座に通知
- HIGH: 期限切れタスク、レビュー依頼 → 次のチェック時に通知
- LOW: 最適化提案、リファクタ候補 → 日次サマリーに含める
PATTERN 6

Feature Flags

Claude Codeは108以上のフィーチャーフラグで機能を管理している。段階的ロールアウト、A/Bテスト、社内限定機能の制御に使われている。

判明しているフラグの例:

tengu_amber_flintAgent Swarms(マルチエージェント協調)

kairos_*KAIROS関連の各機能

auto_modeAIが自動でツール使用を承認するモード

buddy_*Buddy(コンパニオンペットシステム)

この設計がAIエージェントの運用でどう役立つか。複数のクライアントにAI秘書サービスを提供する場合、契約プランに応じて機能を出し分ける仕組みに転用できる。

FlagFeaturePlan
basic_secretary日程管理、リマインド、メール下書きライト
advanced_researchWeb検索、レポート作成、ファクトチェックスタンダード
multi_agent複数エージェントによる並行処理プロ
custom_persona独自キャラクター設定プロ
gate_audit成果物の自動品質監査エンタープライズ
background_agent常駐監視、プロアクティブ通知エンタープライズ
PATTERN 7

Buddy

おまけ的な発見だが、Claude Codeには18種のバーチャルペットシステム「Buddy」が実装されている(未公開機能)。レアリティ階層、ステータス、進化システム付き。

完全に遊び心だが、開発チームが自分たちのツールを使う動機付けとしては秀逸。AIエージェントツールに「使い続けたくなる仕掛け」を入れるという発想は、ゲーミフィケーションの文脈で参考になる。

実際に取り入れた3つ

上記7パターンのうち、CLAUDE.mdに反映して運用を開始した施策

ADOPTED 1

メモリヘルスチェック

PATTERN 1 + PATTERN 4 の組み合わせ

Self-Healing Memoryの「記憶はヒント」原則と、autoDreamの記憶整理を組み合わせた。セッション開始時に毎回メモリの整合性チェックを実行し、週次で全メモリの棚卸しを行う。

導入前

古いメモリに基づいて「このファイルは/src/にあります」と自信満々に言うが、実際にはリファクタで移動済みだった

導入後

「メモリに書いてあるので確認します」に変わった。ハルシネーションの抑制に直接効く

ADOPTED 2

内部用語漏洩チェック

PATTERN 3 の Undercover Mode 応用

対外文書を生成する際に、内部でしか使わない用語やキャラクター名が混入していないかを自動チェックする仕組みをGate監査に追加した。

導入前

クライアント向け提案書に内部のプロジェクトコードネームが混入したことがあった

導入後

検出対象リストに基づき、対外文書に内部用語が含まれていたら自動でBLOCK判定が出る

ADOPTED 3

エージェント権限テーブル

PATTERN 2 の Agent Swarms 応用

AI幹部6名にそれぞれ専門領域のみのアクセス権を定義した。全員が全情報にアクセスできる状態から、「コードを書く人にはコードだけ」「デザインする人にはデザインだけ」に権限を分離した。

導入前

全幹部が全情報にアクセスでき、判断ミスが意図しない領域に影響する可能性があった

導入後

Blast Radius(被害範囲)が専門領域内に限定される。担当外へはPM経由でリクエスト

まとめ

Claude Codeの流出は、AI業界にとっては大きなセキュリティインシデントだった。でも開発者コミュニティにとっては、世界トップクラスのAIエージェントがどう設計されているかを学ぶ稀有な機会にもなった。

コードをそのままコピーするのは著作権的にアウト。だけど設計思想やアーキテクチャのパターンは、学んで自分のプロジェクトに応用できる。

7つのパターン:

Self-Healing Memoryメモリを「ヒント」として扱い、必ず現在の状態と照合する
Agent Swarmsサブエージェントに最小限の権限だけ渡し、被害範囲を限定する
Undercover Mode対外アウトプットに内部用語が漏れないよう自動チェックする
autoDreamアイドル時間にメモリの矛盾を自動解消する
KAIROSバックグラウンドエージェントにはレートリミットを設けて暴走を防ぐ
Feature Flags機能を段階的に出し分ける設計で、サービスプラン管理にも転用可能
Buddy使い続けたくなるゲーミフィケーション要素

この記事に載せたコードブロックは全てそのままコピーして自分のCLAUDE.mdに貼り付けられる。プロジェクトの用語や役割名を自分の環境に差し替えれば、すぐに使い始められるはず。

...まあ、.npmignoreに *.map の1行を追加するだけで防げた事故なんですけどね。