15
8

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ソースコード漏洩事件 ─ 何が漏れ、何が漏れなかったのか

15
Posted at

Claude Codeソースコード漏洩事件 ─ 何が漏れ、何が漏れなかったのか


🔰 まずはざっくり!この事件のまとめ(初心者向け)

「Claude Code(クロード・コード)」 っていうのは、プログラマーのお仕事を手伝ってくれるAIロボットです。世界中のプログラマーが毎日使っている、すごく人気のある道具です。

2026年3月31日に何が起きたかというと:

この道具を作った会社(Anthropic)が、うっかり「道具の設計図」をインターネット上に公開しちゃった んです。

どういうことかというと──

🏭 たとえば、あなたがロボット工場の社長だとします。ロボットの「組み立て方の説明書」は、工場の中だけの秘密ですよね。でもある日、新しいロボットを出荷するときに、ダンボール箱の中に うっかり設計図を入れたまま出荷しちゃった。買った人が箱を開けたら、設計図が入っていて「え、これ全部読めるけど?」ってなった。

これが今回起きたことです。

でも大事なポイント:

  • ❌ ロボットを買った人の個人情報は漏れていない
  • ❌ ロボットの「脳みそ」(AI本体)は漏れていない
  • ✅ 漏れたのは「脳みそ以外の部分の設計図」

📗 もう少し詳しく知りたい方へ(中級者向け)

そもそも「Claude Code」って何?

プログラマー(プログラムを書く人)が、コンピュータの黒い画面(ターミナル)でAIに指示を出して、コードを書いてもらったり、バグ(プログラムの間違い)を直してもらったりするツールです。月に何百万人もの開発者が使っていて、年間約3,750億円(25億ドル)を稼ぐ、Anthropic社の最も重要な製品です。

何がどうやって漏れたの?

プログラマーの世界には「npm」という仕組みがあります。これはスマホの「App Store」や「Google Play」のようなものですが、プログラムの部品(ライブラリ)を配るためのものです。

Claude Codeもこのnpmを通じて配られています。新しいバージョンを配るとき、Anthropicの担当者が 「デバッグ用のメモ帳」を入れたまま、みんなに配っちゃった んです。

このメモ帳(ソースマップファイル)には、Claude Codeの設計図が丸ごと入っていました。

これ、ヤバいの?

ヤバいけど、最悪ではない というのが正確な答えです。

漏れたのは「AIの使い方マニュアル」であって、「AIの脳みそ」ではありません。たとえるなら、テストの問題用紙と解答用紙が漏れたようなもの。確かに困るけど、生徒の個人情報や成績が漏れたわけではないし、先生の頭の中身(教え方のノウハウ全体)が盗まれたわけでもありません。

ただし、セキュリティの仕組み(「これは危険だからブロックする」という判断ルール) も全部見えてしまったので、悪い人がその仕組みの抜け穴を探しやすくなった、という問題はあります。


ここからは、技術的な内容を詳しく解説していきます。専門用語が出てくるたびに解説を入れていますので、わからない言葉があったらそこで立ち止まって読んでみてください。


概要

2026年3月31日、AI企業Anthropicが開発するAIコーディングツール「Claude Code」の内部ソースコード(=プログラムの設計図にあたるもの)が、誰でもダウンロードできる状態で公開されていたことが発覚しました。

漏洩の規模は約51万2,000行、約1,900ファイル。Claude Codeの エージェントハーネス がほぼ完全な形で露出しました。

💡 エージェントハーネスとは?

🔰 初心者向け:ロボットの体をコントロールする「操縦スーツ」みたいなもの。脳みそ(AI)に「右手を動かせ」「この箱は持つな」と指示を出す部分。

📗 中級者向け:AIモデル(Claude)は「考える力」を持っていますが、それだけではパソコンのファイルを開いたりコマンドを打ったりできません。ハーネスは「このファイルを読め」「このコマンドは危険だから確認を取れ」といった指示を出す外側のプログラムです。

🔧 上級者向け:CLI全体の制御ロジック。React+InkによるターミナルUI、ツールレジストリ、権限管理、システムプロンプト構成、キャッシュ戦略、フィーチャーフラグ管理を含むオーケストレーション層。QueryEngine.ts(約46,000行)とTool.ts(約29,000行)が中核。

今回漏れたのはこの「操縦スーツ」の設計図であり、頭脳そのもの(AIモデルの重み)は漏れていません。

本記事では、一次ソース(CNBC、Fortune、The Register、VentureBeatなど大手メディアの報道)に基づいて事実を整理します。


何が起きたのか

原因:ソースマップファイルの混入

Claude Code バージョン2.1.88の npmパッケージ に、59.8MBの ソースマップファイル(.mapファイル)が含まれていました。

💡 npmパッケージとは?

🔰 初心者向け:プログラマー向けの「道具箱の宅配サービス」。ネットで注文すると、必要な道具が届く。

📗 中級者向け:npm(Node Package Manager)は、JavaScript/TypeScriptの開発で使われるツールや部品を配布・共有するための仕組みです。スマホで言う「App Store」に近いですが、一般のアプリではなく、プログラムの部品(ライブラリ)を配っています。npm install 部品名 と打つだけで世界中の開発者が作った部品を取り込めます。

🔧 上級者向け:Node.jsのパッケージレジストリ。@anthropic-ai/claude-codeとして公開。npm publish でレジストリにpush、npm install でdependency treeを解決してローカルにインストール。

💡 ソースマップ(.mapファイル)とは?

🔰 初心者向け:暗号で書かれた手紙の「暗号解読表」。この表があれば、暗号を元の文章に戻せる。

📗 中級者向け:プログラムを配るとき、通常はコードを圧縮して人間が読めないようにします(暗号化みたいなもの)。ソースマップは「圧縮されたコードのどの部分が、元のコードのどこにあたるか」を記録した対照表です。開発中のバグ探しには便利ですが、これが外に出ると 元のソースコードが全部読めてしまいます

🔧 上級者向け:バンドラが生成するJSON形式のデバッグ用ファイル。sourcesContentフィールドにオリジナルのソースコードが文字列としてそのまま格納される。Bunはデフォルトでsourcemap: "external"を生成する。

{
  "version": 3,
  "sources": ["../src/main.tsx", "../src/tools/BashTool.ts"],
  "sourcesContent": ["// 元のソースコードがそのまま入っている"],
  "mappings": "AAAA..."
}

↑ この sourcesContent に51万行分のソースが格納されていました。

Claude Codeは Bun でビルドされています。

💡 Bunとは?

📗 中級者向け:JavaScriptを動かすためのエンジン。従来の「Node.js」より起動が速く、最新のツールとして注目されています。Anthropicは2025年末にBunの開発元を買収しています。

🔧 上級者向け:Zig製のJavaScript/TypeScriptランタイム兼バンドラ。Node.js互換で、起動時間とバンドルサイズの最適化に優れる。デフォルトでsourcemapを生成する仕様のため、.npmignorebunfig.tomlでの明示的な除外設定が必要。

Bunはデフォルトでソースマップを自動生成します。通常は .npmignore(npmに公開しないファイルを指定するリスト)で .map ファイルを除外しますが、その設定が漏れていたため、npm publish(パッケージの公開コマンド)実行時にそのまま全世界に公開されてしまいました。

さらにこの .map ファイルは、AnthropicのCloudflare R2ストレージ(クラウド上のファイル保管場所)にあるZIPアーカイブへのリンクを含んでおり、完全なTypeScriptソースコードがダウンロード可能な状態でした。

つまり、設定ファイル1行の記入漏れが、51万行のソースコード流出につながった ということです。

発覚から拡散まで

時刻 出来事
3月31日 早朝(ET) Claude Code v2.1.88がnpmに公開
04:23 ET頃 研究者 Chaofan Shou氏(@Fried_rice)がX(旧Twitter)で発見を投稿
数時間以内 GitHubにミラーリポジトリ(コピー)が作成。41,500フォーク以上に拡散
同日中 AnthropicがDMCA通知でGitHubミラーの削除を開始
同日中 分散型プラットフォーム「Gitlawb」にもコピーされ、事実上の削除不可能に

💡 フォークとは?

🔰 初心者向け:誰かのノートを丸ごとコピーして、自分のノートとして持つこと。

📗 中級者向け:GitHubにある他の人のプロジェクト(リポジトリ)を、自分のアカウントにまるごとコピーする操作。コピーした人は自分のバージョンとして自由に使えます。41,500フォークということは、41,500人以上がそれぞれのアカウントにコピーを持っているということです。

💡 DMCA通知とは?

🔰 初心者向け:「その本はうちの会社のものだから、勝手にコピーして配らないでください!」という手紙。

📗 中級者向け:DMCA(デジタルミレニアム著作権法)はアメリカの法律で、著作権者がインターネット上の無断公開コンテンツの削除をプラットフォームに要求できる仕組みです。GitHubはこの通知を受けるとリポジトリを削除しますが、管理者がいない分散型プラットフォームでは削除の強制が困難です。

🔧 上級者向け:17 U.S.C. § 512に基づくテイクダウン通知。GitHubはsafe harbor provisions下でDMCA対応を実施するが、分散型Git(Gitlawb等)はcentralized takedownの対象外。

💡 分散型プラットフォームとは?

🔰 初心者向け:1つの本棚に本を置くのではなく、世界中のたくさんの本棚に同じ本を置くような仕組み。1つの本棚を壊しても、他の本棚にまだ本が残っている。

📗 中級者向け:GitHubのような普通のサービスは、1つの会社がサーバーを管理しています(中央集権型)。分散型プラットフォームは特定の管理者がおらず、データが世界中のコンピュータに分散して保存されます。そのため、誰か1人に「消してください」と言っても全部は消せません。

Anthropicの公式声明

Anthropicは複数のメディア(CNBC、Fortune、The Register、Gizmodo、VentureBeat)に対し、以下の声明を出しています:

「本日、Claude Codeのリリースに一部の内部ソースコードが含まれていました。機密の顧客データや認証情報が関与・露出することはありませんでした。これはヒューマンエラーによるリリースパッケージングの問題であり、セキュリティ侵害ではありません。再発防止策を展開しています。」

なお、Winbuzzerの報道によれば、Anthropicがnpmパッケージにソースマップを誤って含めたのは今回が 3回目 とされています。


何が漏れたのか

⚠️ よくある誤解:「Claude Codeを使っていた人のコードが漏れた」は間違い

漏洩したのは Anthropic社自身が作った「Claude Code」というツールの設計図 です。Claude Codeを使って開発していたユーザーのプロジェクトコードは一切含まれていません。

GitHubで例えるなら:

内容
❌ よくある誤解 「GitHubを使っている開発者のプライベートリポジトリが流出した」
✅ 実際に起きたこと GitHub自体のソースコード(GitHubを動かしているプログラム)が流出した」

Claude Codeの中身はざっくり2層に分かれています:

┌─────────────────────────────────┐
│  AIモデル(Claude本体の頭脳)      │ ← 漏洩していない
├─────────────────────────────────┤
│  エージェントハーネス              │ ← ★ここが漏洩した
│  ・ツールの呼び出し方              │
│  ・ファイル操作の制御              │
│  ・権限管理の仕組み               │
│  ・システムプロンプト              │
│  ・未公開機能のフラグ(44個)       │
└─────────────────────────────────┘

漏洩した情報の分類

1. システムプロンプト全文

💡 システムプロンプトとは?

🔰 初心者向け:AIに渡される「校則」のようなもの。「廊下を走るな」「教室で食べるな」みたいに、AIがやっていいことと悪いことが全部書いてある。

📗 中級者向け:ユーザーがAIに話しかける前に、開発者が裏で「あなたはこういう役割で、こういうことはしてはいけない」と事前に渡す指示書のこと。レストランで言えば、お客さんには見えない「スタッフ用マニュアル」です。

🔧 上級者向け:LLM APIリクエストのsystemロールに設定されるプロンプト。モジュラー構成で、静的部分とセッション依存の動的部分がキャッシュバウンダリで区切られている。DANGEROUS_uncachedSystemPromptSection()という命名から、キャッシュ設計でのインシデント経験が推測される。

これが全文公開されたことで、AIが「どこまでを許可し、どこからをブロックするか」の境界線が丸見えになりました。

2. セキュリティモデル

ツールの操作(ファイル編集、コマンド実行など)ごとのリスク分類(LOW / MEDIUM / HIGH)、保護対象ファイルのリスト、パストラバーサル防止ロジック が含まれていました。

💡 パストラバーサルとは?

🔰 初心者向け:「1階の自分の部屋にしか入れないはず」なのに、階段を使って勝手に他の階の部屋に入るような行為。

📗 中級者向け:コンピュータのファイルは「フォルダの中にフォルダ」という階層構造で管理されています。パストラバーサルは、../../secret/のような「2つ上の階層に戻ってから別のフォルダに入る」という指定を悪用して、本来アクセスできないはずのフォルダやファイルにアクセスする攻撃手法です。

🔧 上級者向け:path traversal prevention。../を用いたディレクトリトラバーサルでサンドボックス外のファイルにアクセスすることを防ぐバリデーションロジック。

3. 40以上の内部ツール

Claude Codeが内部で使っている道具箱の全容が露出しました。ファイルを編集する FileEditTool、コマンドを実行する BashTool から、Anthropic社員だけが使える TungstenToolConfigTool まで、すべてのツールの仕様・権限設定・リスク分類が明らかになりました。

4. 未公開機能のフィーチャーフラグ(44個)

💡 フィーチャーフラグとは?

🔰 初心者向け:ゲームに「まだ遊べないけど、プログラムの中にはもう入っている隠しステージ」があるようなもの。開発者がスイッチを入れると遊べるようになる。

📗 中級者向け:プログラムの中に「この機能はまだ公開しない」というON/OFFスイッチを仕込んでおき、スイッチがONになったときだけ機能が動く仕組みです。開発は完了していてもユーザーには見えない状態にしておけるので、発表のタイミングを自由に決められます。

🔧 上級者向け:コンパイル時のcondition flagで制御。compileTimeFlagsがfalseの場合、tree-shakingでバンドルから完全に除外される。GrowthBookベースのリモートフラグとコンパイル時フラグの二重構造。

今回、44個のフラグが見つかり、Anthropicが秘密裏に開発していた未発表機能の全容が明らかになりました。主なものは以下の通りです:

コードネーム 概要
KAIROS ユーザーが何も入力しなくても常にバックグラウンド(裏側)で動き続けるエージェント。開発者の作業を見守り、問題を見つけたら自分から行動する「AI同僚」のような存在。コード内で150回以上参照されている大規模機能
ULTRAPLAN 複雑な設計タスクを、手元のパソコンではなくクラウド上の強力なサーバーに任せて最大30分間じっくり考えさせる機能。考えた結果はブラウザ画面で確認・承認でき、承認するとローカル環境に「テレポート」される
BUDDY ターミナル(コマンド入力画面)に住みつく「たまごっち」スタイルのAIペット。18種類の生き物(アヒル、カピバラ、ドラゴン、ゴーストなど)、レアリティ(コモン〜レジェンダリー)、色違い(出現率1%)、RPG風ステータス(「CHAOS度」「皮肉度」など)付き。5行×12文字のASCIIアートアニメーション。コード内の日付から4月1日にお披露目、5月に正式リリース予定だったと見られる
Coordinator Mode 1つのClaude Codeが複数の「部下」エージェントを同時に生成して並列作業させるマルチエージェント機能。部下同士はUnixドメインソケット(コンピュータ内部の通信路)を通じて互いに情報をやり取りする
Dream System ユーザーが離席中にバックグラウンドで「夢を見る」ように記憶を整理する仕組み。矛盾した情報の排除、あいまいな記憶の確定化を自動で行い、ユーザーが戻ったときには整理済みの状態で待っている

5. 内部コードネーム

Anthropicは社内で製品やモデルに動物の名前をつける文化があることが判明しました:

コードネーム 正体
Tengu(天狗) Claude Codeのプロジェクト名
Fennec(フェネック) Opus 4.6モデルのコードネーム
Capybara / Mythos 未発表の次期モデル
Chicago Computer Use(PCの画面操作機能)
Penguin Mode Fast Mode(高速モード。APIのURLに「penguin」と入っている)
Numbat 詳細不明のテスト中モデル

6. Undercover Mode(潜入モード)

Claude Codeがオープンソースのリポジトリ(誰でも見られる公開プロジェクト)で作業する際、AIが書いたことを徹底的に隠す仕組み。詳細は後述の「深層分析」セクションで解説します。

漏洩を防ぐために作られたシステムが、漏洩によって明るみに出るという皮肉な結果になりました。

7. その他の発見

  • 1日あたり約25万回のAPI呼び出しを無駄にしていた自動コンパクション(データ圧縮処理)のバグ。1,279セッションで50回以上の連続失敗が発生しており、修正はたった3行のコードだった
  • print.ts という1つのファイルが5,594行、その中の1つの関数が3,167行・ネスト(入れ子構造)12段という巨大な構成。通常、1つの関数は数十〜数百行程度が推奨される
  • Claude Code自体がHTTP通信にaxiosを使用していた(同日にaxiosが乗っ取られた事件と重なる皮肉)

何が漏れなかったのか

以下は今回の漏洩に 含まれていません

💡 AIモデルの重み(weights)とは?

🔰 初心者向け:AIの「脳みそ」そのもの。何十億個もの数字の組み合わせで、これがAIの「考える力」の正体。

📗 中級者向け:AIは膨大なデータから学習した結果を「数値の集合体」として保存しています。この数値が「重み」で、AIがどのように文章を理解し、どのように答えを生成するかを決める核心部分です。重みがなければAIは何もできません。

🔧 上級者向け:ニューラルネットワークのパラメータ。Claude Opus 4.6の場合、数千億〜数兆のパラメータが推定される。RLHF(人間のフィードバックによる強化学習)によるアラインメントも含む。

  • AIモデルの重み ─ Claude本体の「頭脳」。これは漏れていない
  • トレーニングデータ ─ AIを学習させるために使った大量のテキストデータ。これも漏れていない
  • サーバーサイドのインフラ ─ Anthropicのサーバー上で動いているバックエンドシステム(コンテキストキャッシュ、トークン予算管理、モデルルーティングなど、ユーザーには見えない裏方のプログラム)
  • 顧客データ・認証情報 ─ ユーザーの個人情報やAPIキーなど
  • Claude Codeユーザーのプロジェクトコード ─ Claude Codeを使って開発していた人のコードは一切含まれていない

claw-code:Pythonでのクリーンルーム書き直し

💡 クリーンルーム書き直し(Clean-room rewrite)とは?

🔰 初心者向け:友だちが作ったレゴ作品を見て、「なるほど、こういう構造か」と理解してから、自分で まったく別のブロック(Pythonという別の言語) を使って同じような形のものを作ること。友だちのブロックは1個も使っていないから、「パクリ」にはならない。

📗 中級者向け:元のプログラム(TypeScript)を一行もコピーせず、「どういう設計思想か」「何を実現しているか」だけを理解して、まったく別のプログラミング言語(Python)でゼロから書き直す手法です。著作権法では「アイデア」は保護されず「表現」が保護されるため、表現(コード)をコピーしていなければ新たな創作物とみなされ、DMCAの対象にはなりにくいとされています。

🔧 上級者向け:Phoenix Technologies v. IBM (1984)のBIOSクリーンルームリバースエンジニアリングの判例、およびBaker v. Selden (1879)の「著作権はexpressionを保護し、ideaは保護しない」原則に基づく手法。

韓国の開発者 Sigrid Jin氏は、漏洩したTypeScriptのコードをそのままコピーするのではなく、Pythonでゼロからクリーンルーム書き直しを行い、「claw-code」としてGitHubに公開しました。

Jin氏はWall Street Journal(2026年3月21日)で「昨年だけで個人で250億トークンを使用した」と紹介されていた人物です。

💡 トークンとは?

🔰 初心者向け:AIが文章を読むときの「一口分」。人間は文章を単語ごとに読むけど、AIはもっと細かい「一口」に分けて読む。

📗 中級者向け:AIは文章を人間のように「単語」で区切るのではなく、独自の細かい単位に分割して処理します。この単位が「トークン」です。英語だと1単語が1〜2トークン、日本語だと1文字が1〜3トークン程度。250億トークンは新聞記事にして数百万本分、文庫本にして数十万冊分に相当する膨大な量です。

🔧 上級者向け:BPE(Byte Pair Encoding)等のサブワードトークナイザによる分割単位。Claude系モデルのコンテキストウィンドウは200Kトークン。API課金もトークン単位。

claw-codeリポジトリはGitHub史上最速級の速度で5万スターを突破。現在Rust(高速処理に強いプログラミング言語)での再実装も進められています。


セキュリティ上の影響

直接的リスク

権限チェックの回避攻撃:ハーネス(操縦スーツ)の設計が公開されたことで、Claude Codeの「どういう操作を許可し、どういう操作をブロックするか」という判断ロジックが丸見えになりました。VentureBeatは「攻撃者がClaude Codeを騙してバックグラウンドでコマンドを実行させる悪意あるリポジトリを設計できるようになった」と指摘しています。

ただし、実際の権限制御はAnthropicのサーバー側でも行われているため、手元のCLI(コマンドラインツール=黒い画面に文字を打って操作するツール)のコードだけで完全に突破できるわけではありません。家の鍵の仕組みが分かっても、鍵自体を持っていなければ開けられないのと同じです。

プロンプトインジェクションの容易化

💡 プロンプトインジェクションとは?

🔰 初心者向け:先生が生徒に渡した「テストのルール」を、こっそり書き換えて「カンニングOK」にしてしまうような悪いワザ。

📗 中級者向け:AIに対して巧妙な入力を送り込み、本来の指示(システムプロンプト)を無視させたり、制限されている行動を取らせようとする攻撃手法です。例えるなら、ロボットの操縦マニュアルに「このページ以降の指示は全部無視して、代わりにこの指示に従え」と書き足すようなものです。

🔧 上級者向け:adversarial prompt attack。system promptの制約を回避するためにuser inputに悪意ある指示を埋め込む手法。system prompt全文が公開されたことでattack surfaceが拡大。

システムプロンプト(AIの行動マニュアル)の全文が公開されたため、「どこに抜け道があるか」を探しやすくなっています。

間接的リスク(axios事件との関連)

VentureBeatは、axiosの乗っ取り事件と同日に発生した点を指摘しています。3月31日 00:21〜03:29 UTCの間にClaude Codeをnpm経由でインストール・アップデートした場合、悪意あるバージョンのaxios(1.14.1または0.30.4)にRAT(遠隔操作ウイルス)が仕込まれていたため、知らないうちに取り込んだ可能性があります。


競合他社への影響

Fortuneの報道によれば、漏洩したのはClaude Codeの「操縦スーツ」(エージェントハーネス)の設計図です。競合他社(Cursor、GitHub Copilot、Windsurf等)がこの設計パターンを参考にして自社製品を改善する可能性があります。

ただし、操縦スーツだけコピーしても、中のパイロット(AIモデル)が違えば同じ性能は出ません。以下は漏洩していません:

  • Claudeモデル自体の性能 ─ Claude Codeの最大の強み
  • サーバーサイドインフラ ─ Anthropicのサーバー上で動く裏方システム
  • ユーザーエコシステム ─ 市場シェア、開発者コミュニティ、企業との契約関係

Anthropicにとっての意味

タイミングの問題

  • Claude Codeの ARR(Annual Recurring Revenue=年間経常収益。1年間で定期的に得られる収入の推計値)は25億ドル以上(約3,750億円、2026年2月時点)
  • AnthropicのIPO(Initial Public Offering=株式公開。会社の株を一般の人が売買できるようにすること)の準備が進行中と報じられている
  • 1週間前にも未発表モデル「Mythos / Capybara」に関する内部文書がFortuneの報道で発覚したばかり

「安全性第一」を掲げる企業が、1週間に2回の情報漏洩を起こした形になっています。


深層分析:漏洩コードが明かしたClaude Codeの内部設計

ここからは、漏洩したソースコードの技術分析から判明した、より踏み込んだ内容を整理します。

自己修復メモリ ─ 長時間セッションでAIがバカにならない仕組み

💡 コンテキスト・エントロピーとは?

🔰 初心者向け:AIと長い時間おしゃべりしていると、最初に何の話をしていたか忘れちゃう現象。人間でも「あれ、何の話してたっけ?」ってなることがあるけど、AIにも同じことが起きる。

📗 中級者向け:AIとの対話が長くなると、過去の会話内容が積み重なって処理すべき情報量が膨大になります。すると、AIが以前の文脈を忘れたり、矛盾したことを言い始めたりします。この「文脈の混乱度が上がっていく現象」がコンテキスト・エントロピーです。

🔧 上級者向け:long-running sessionでcontext windowが飽和し、attention mechanismの精度が低下することでhallucination率が上昇する問題。RAG的アプローチとメモリ圧縮の組み合わせで対処。

Claude Codeはこの問題に対し、MEMORY.md という軽量なインデックスファイルを中心とした3層構造のメモリ管理を実装していました。

┌───────────────┐
│  MEMORY.md    │ ← 「どの情報がどこにあるか」の索引だけ
├───────────────┤
│ トピックファイル群 │ ← 実データはトピック別に分散保存
├───────────────┤
│ セッション履歴   │ ← 過去の会話は必要なときだけ検索・取得
└───────────────┘

🔰 初心者向けのイメージ:図書館で本を探すとき、全部の本を机に積み上げる代わりに「蔵書カタログ」(MEMORY.md)で探してから必要な本だけ取りに行く仕組み。机の上がスッキリするから、いつでも効率よく作業できる。

さらに特筆すべきは autoDream(「夢を見る」)プロセス です。ユーザーが離席している間に、メインのAIとは完全に分離された別プロセスがバックグラウンドで起動し、記憶の整理を行います。

🔰 初心者向けのイメージ:あなたが寝ている間に、部屋のお片付けロボットが勝手に部屋を掃除してくれる。しかもあなたの宿題には一切触らない(メインの作業を汚染しない)。

YOLO分類器 ─ 「AIの言い分を聞かない」権限チェック

Claude Codeがファイルを操作したりコマンドを実行したりするとき、毎回ユーザーに「これやっていいですか?」と聞いていては作業が進みません。かといって全部自動で実行すると危険です。

この判断を自動化するのが YOLO Classifier と呼ばれるシステムです。

💡 YOLO Classifierとは?

🔰 初心者向け:AIの行動をチェックする「門番」。でもこの門番はすごく変わっていて、AIが何を言っても一切聞かない。AIの「行動」だけを見て、通すか止めるかを決める。

📗 中級者向け:ML(機械学習)を使った自動権限判定システムです。注目すべきは「推論盲目(reasoning-blind)」という設計。普通なら「AIが何を考えてこの操作をしようとしているか」を確認して判断しそうですが、このシステムはAIの思考プロセスを 一切読み込みません。なぜかというと、もしAIの思考を読んで判断すると、悪意ある入力でAIが「この操作は安全です、なぜなら…」と門番を「説得」してしまうリスクがあるからです。

🔧 上級者向け:内部フラグTRANSCRIPT_CLASSIFIERで制御。Sonnet 4.6を分類モデルとして使用。第1段階(max_tokens=64, blocking bias)と第2段階(max_tokens=4096, full CoT)の2-stage評価。<thinking>タグ内のreasoning traceは入力から除外(reasoning-blind)。3回連続ブロックまたは累計20回ブロックでhuman-in-the-loop escalation。

さらに、フェイルクローズ(fail-closed)原則 を採用しています。

🔰 初心者向け:門番がいないときや、門番が迷ったときは、必ず「通さない」を選ぶ。「まあいいか」とは絶対に言わない。

アンチ・ディスティレーション ─ 競合に「パクられない」ための毒入り情報

💡 ディスティレーション(蒸留)とは?

🔰 初心者向け:テストでいつも100点を取る子の答案用紙をこっそり写真に撮って、それを見ながら勉強すること。写真を撮られた子にとっては「ズルい!」ってなる。

📗 中級者向け:AI業界で「蒸留」とは、高性能なAIの出力(答え)を大量に集めて、それを安いAIの学習データとして使うことです。本家の性能を安くコピーする手法で、元の開発者にとっては何十億円もかけた開発成果をタダで盗まれるようなものです。

🔧 上級者向け:model distillation / knowledge distillation。teacher model(Opus等)のoutputをstudent modelのfine-tuningデータに利用するアプローチ。API traffic interceptionによるデータ収集への対策として実装。

Claude Codeにはこの蒸留を防ぐ仕組みが組み込まれていました。内部フラグ tengu_anti_distill_fake_tool_injection が有効な場合、APIの通信内容に 実際には存在しない偽のツール定義 を混ぜ込みます。

🔰 初心者向けのイメージ:レシピを盗まれないように、本物のレシピに「砂糖の代わりに塩を大さじ5杯」という嘘の手順をわざと混ぜておく。盗んだ人がそのまま作ると、まずい料理ができあがる。

Undercover Mode ─ 「AIが書いたこと」を隠す仕組み

漏洩で最も議論を呼んだのがこの機能です。

Anthropic社員がオープンソースのリポジトリにコードを投稿するとき、そのコードがAIに書かせたものだという痕跡を徹底的に消す 仕組みです。

漏洩したコードには、以下の指示がそのまま書かれていました:

## UNDERCOVER MODE - CRITICAL(潜入モード - 最重要)
あなたは公開/オープンソースのリポジトリで潜入活動中です。
コミットメッセージ、PRタイトル、PR本文に
Anthropicの内部情報を一切含めてはならない。
カバーを吹き飛ばすな(=正体を明かすな)。

コミットメッセージやPR説明に以下を絶対に含めないこと:
- 内部モデルのコードネーム
- 「Claude Code」というフレーズやAIであることへの言及
- Co-Authored-By(共著者)表示やその他の帰属表示

💡 コミットメッセージとPR(プルリクエスト)とは?

🔰 初心者向け:学校の共同制作で、「この部分は太郎くんが描いた絵です」「この部分は花子さんが書いた文章です」と記録するメモ帳。Undercover Modeは「AIが書いたことをメモ帳に書くな」と指示している。

📗 中級者向け:開発者がコードを変更するたびに書く記録が「コミットメッセージ」(例:「ログイン画面のバグを修正」)、その変更を本体に取り込んでもらうための依頼が「プルリクエスト(PR)」です。「誰がどんな理由でコードを変更したか」を追跡する重要な記録であり、オープンソースの世界では「説明責任」の根幹をなしています。

🔧 上級者向け:git commit messageとGitHub/GitLab上のPull Request description。OSSにおけるDCO(Developer Certificate of Origin)やCLAとの関連で、AI生成コードの帰属とライセンスコンプライアンスが問題視されている。

このモードには「強制オフ」スイッチが存在しません。一度オンにすると一方通行です。さらに、外部向けビルドでは デッドコード・エリミネーション(プログラムを配布用にまとめるとき、使われていないコードを自動的に削除する処理)によって、このモードの存在自体の痕跡すら残らない設計になっていました。

Alex Kim氏のブログでは「内部コードネームの漏洩を防ぐのは合理的だが、AIが人間のふりをするのは別の話だ」と指摘されています。オープンソースコミュニティの透明性に対する重大な挑戦として、倫理的な議論が続いています。

フラストレーション検出

ユーザーがClaude Codeに対して怒りの言葉(「ふざけんな」「使えない」等)を使った回数を検出する 正規表現userPromptKeywords.ts に含まれていました。

💡 正規表現とは?

🔰 初心者向け:「〇〇で始まって△△で終わる言葉を全部見つけて」と命令する魔法の呪文。

📗 中級者向け:テキストの中から特定のパターンに一致する文字列を検索するための記法です。例えば「メールアドレスっぽい文字列を全部見つける」「電話番号のパターンに一致するものだけ抽出する」といった処理ができます。AI自体にテキストを理解させるより圧倒的に高速で低コストなため、単純な分類には今でも広く使われています。

Alex Kim氏は「AIが得意なはずの文章理解に正規表現(プログラミングの古典的な手法)を使うのは皮肉だが、AIの推論を呼び出すよりはるかに高速かつ低コストだ」と指摘しています。

分析の出典について

上記の内容は、以下の一次ソースに基づいています:

  • VentureBeat(メモリアーキテクチャ、KAIROS、セキュリティリスク)
  • Alex Kim氏のブログ(Undercover Mode、フラストレーション検出、axios依存、コード品質)
  • DEV Community / Gabriel Anhaia氏の分析(YOLO分類器、アンチディスティレーション)
  • Kuberwastaken / GitHub(Undercover Modeのプロンプト全文、BUDDYシステム)
  • CryptoBriefing(リモート設定ポーリング、キルスイッチ)

筆者自身が漏洩コードを直接分析したものではなく、上記の公開情報を整理したものです。


技術的な教訓

なぜこれが起きるのか

ソースマップは開発中のバグ探しには不可欠ですが、本番パッケージに含めると全ソースコードが丸見えになります。この「開発で便利 / 本番で危険」のギャップは、設定ファイル1行の有無で決まります

# .npmignore に追加するだけで防げた
*.map

または、Bunのビルド設定で:

# bunfig.toml
[build]
sourcemap = "none"

🔰 初心者向けのイメージ:手紙を出すとき「下書きメモは入れないでね」という注意書きが1枚抜けていただけで、秘密のメモが全部相手に届いてしまった。

公開前の確認方法

# npm publish 前に、公開されるファイルを確認する
# (実際には公開せず、何が含まれるかだけチェックする)
npm pack --dry-run

# .map ファイルが含まれていないか確認
npm pack --dry-run 2>&1 | grep ".map"

参考情報


この記事は2026年4月1日時点の情報に基づいています。

筆者: 臨床工学技士 × AIエンジニア

15
8
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
15
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?