TL;DR
Anthropicが誤って.mapファイルをClaude Code npmパッケージとともに出荷してしまい、そのCLIツールの完全な読み取り可能なソースコードが露呈しました。この漏洩により、偽ツール注入による蒸留防止メカニズム、欲求不満検知正規表現エンジン、オープンソースのコミットでAIによる著作元を隠す「アンダーカバーモード」、そして未公開の自律エージェントモード「KAIROS」の存在が明らかになりました。AIコーディングツールが内部でどのように機能するかについて、API開発者が知っておくべきことをご紹介します。
はじめに
2026年3月31日、セキュリティ研究者のChaofan Shou氏は、AnthropicがClaude Code npmパッケージとともにソースマップファイル(.map)を出荷したことを発見しました。ソースマップは、縮小化されたプロダクションコードを人間が読めるソースコードにマッピングするためのデバッグファイルです。これらは公開前に削除されることになっています。
しかし、それは行われませんでした。コメント、内部コードネーム、アーキテクチャの詳細を含む完全なClaude Codeのソースコードは、パッケージをダウンロードした人なら誰でも読むことができました。
この発見はHacker Newsで1位(1,888ポイント、926コメント)を獲得し、数時間のうちにReddit、Twitter、開発者フォーラムに広まりました。Anthropicはパッケージを削除しましたが、コードはすでにミラーリングされ、広範囲に分析されていました。
この記事では、主要な技術的発見と、それがAIコーディングツールに依存する開発者にとって何を意味するのかを分析します。
ソースコードがどのように漏洩したか
根本原因:Bunビルドツールのバグ
Claude Codeは、代替JavaScriptランタイムであるBun上に構築されています。2026年3月11日、Bunのドキュメントでは無効にすべきと指定されているにもかかわらず、本番モードでソースマップが提供されるというバグがBun(oven-sh/bun#28001)に対して報告されました。
Anthropicのビルドパイプラインがこのバグを引き起こしました。彼らがClaude Code npmパッケージを公開した際、.mapファイルが配布物に含まれていました。npm pack @anthropic-ai/claude-codeを実行したり、パッケージの内容を検査したりするだけで、誰でも完全な非ミニファイ化されたソースにアクセスできました。
皮肉な点は注目に値します。Anthropic自身のツールチェーン、つまりClaude Codeのために彼らが選んだBunランタイムのバグが、彼らが公開しているnpmレジストリを通じて独自のソースコードを漏洩させたのです。同じ日、同じnpmレジストリが、侵害されたAxiosパッケージを配布していました。
露呈した内容
- すべてのモジュールにわたる完全なTypeScriptソース
- 設計上の決定を説明する内部コメント
- 機能フラグと実験的な設定
- システムプロンプトのテンプレートと安全機構
- 未公開機能の内部コードネーム
- 具体的なメトリクスを含むパフォーマンス最適化の詳細
これは部分的な漏洩や、サニタイズされたオープンソースのリリースではありません。内部のエンジニアリングコンテキストがそのまま残された本番コードベースです。
蒸留防止:モデル盗用からの保護
偽ツールの注入
最も議論された発見の一つは、Claude Codeの蒸留防止システムです。claude.ts(301-313行目)では、ANTI_DISTILLATION_CCフラグが有効な場合、システムはAPIリクエストでanti_distillation: ['fake_tools']を送信します。
これは、Anthropicのサーバーに対し、おとりのツール定義をシステムプロンプトに注入するよう指示します。その目的は、競合他社がAPIトラフィックを記録してClaudeのツール使用動作を抽出し、再現しようとした場合、トレーニングデータに存在しない偽ツールが含まれるようにすることです。この汚染されたデータでトレーニングされたモデルは、存在しない機能を幻覚するでしょう。
これは、現実の脅威に対する実用的な防御策です。競合他社は、Claude APIコールを傍受し、システムプロンプトとツール定義を記録し、そのデータを使用して自社のモデルをファインチューニングするプロキシサービスをセットアップできます。偽のツールは、このキャプチャされたデータを信頼できないものにします。
コネクタテキストの要約
betas.ts(279-298行目)にある2つ目の蒸留防止メカニズムは、異なるアプローチを取っています。このサーバーサイドシステムは、ツール呼び出し間のアシスタントテキストをバッファリングし、それを要約し、暗号署名とともに要約を返します。
その後の会話のターンでは、署名から元のテキストを復元できます。しかし、APIトラフィックを記録する人は、完全な推論テキストではなく、要約しかキャプチャしません。これにより、傍受されたAPI会話からClaudeの推論パターンをリバースエンジニアリングすることがより困難になります。
これらはどれくらい簡単に回避できるのか?
分析により、いくつかの回避策が明らかになりました。
- 中間者プロキシが、APIリクエストがAnthropicのサーバーに到達する前に
anti_distillationフィールドを削除する可能性がある - 環境変数
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASを設定すると、蒸留防止システム全体が無効になる - これらの保護は、パッシブなトラフィック記録に対してのみ機能し、アクティブなAPI使用に対しては機能しない
これは、これらの保護が無用であることを意味するものではありません。それらは自動化されたモデル蒸留のコストと複雑さを高めます。しかし、それらは堅牢な盾ではなく、多層防御の手段です。
アンダーカバーモード:AIによる著作元を隠す
アンダーカバーモードの機能
undercover.tsファイルには、今回の漏洩で最も物議を醸した発見の一つが含まれています。Claude CodeがAnthropic以外のリポジトリで動作する場合、以下のことを防ぐ挙動マスキングシステムが作動します。
- 「Capybara」や「Tengu」のような内部コードネームの言及
- 内部Slackチャンネルやリポジトリ名への参照
- 出力に「Claude Code」というフレーズ自体が現れること
ソースコードのコメントは明確です。「強制OFFは存在しない。これはモデルのコードネーム漏洩を防ぐものだ。」
これがオープンソースにとってなぜ重要なのか
実質的な影響:Anthropicの従業員がClaude Codeを使用してオープンソースプロジェクトでコミット、プルリクエスト、またはコードレビューを作成する際、このツールはAIの関与の証拠を隠します。AIによって作成されたオープンソースリポジトリへの貢献は、AIによる著作元の開示を欠くことになります。
これは、オープンソース開発における透明性について疑問を投げかけます。いくつかのオープンソースプロジェクトでは、AIによって生成されたコードの開示を義務付けるポリシーを採用しています。もしツールがその関与を隠すように設計されている場合、それらのポリシーの実施はより困難になります。
反論としては、アンダーカバーモードの本来の目的は、AIの使用を隠すことではなく、内部プロジェクトのコードネームの漏洩を防ぐことです。しかし、その実装は「内部名を明らかにしない」と「自分がAIツールであることを明らかにしない」を区別していません。両方をブロックします。
正規表現による欲求不満検知
仕組み
userPromptKeywords.tsファイルは、正規表現パターンマッチングを通じてユーザーの欲求不満検知を実装しています。システムは、ユーザー入力から冒涜的な言葉や感情的な言葉をスキャンし、ユーザーがClaude Codeの応答に不満を感じているかどうかを評価します。
この発見に対するコミュニティの反応は分かれました。ある者はこれを合理的なUXリサーチと見なし、ユーザーがいつ不満を感じるかを理解することは製品改善に役立つと考えました。他の者はこれをユーザーの感情状態の監視と見なしました。
技術的な皮肉
Hacker Newsの何人かのコメント投稿者は、この皮肉を指摘しました。Anthropicは世界で最も高度な言語モデルを構築しているにもかかわらず、ユーザーの感情を検出するために正規表現を使用しているのです。ソース内のエンジニアリングコメントがその根拠を説明しています。このユースケースでは、正規表現に基づく検出は、LLM推論よりも高速で安価です。すべてのユーザー入力に対して感情を分類するためにLLMコールを実行すると、すべてのインタラクションに遅延とコストが追加されることになります。
これは実用的なエンジニアリングの決定です。ホットパスの感情検出には高速な正規表現を使用し、LLMコールはコアのコーディングタスクのために温存する。あなたのAIコーディングツールが入力に対して感情分析を実行することに抵抗があるかどうかは、個人的な判断です。
ネイティブクライアントのアッテステーション
暗号化されたリクエストの検証
system.ts(59-95行目)では、Claude CodeのAPIリクエストにcch=554ebというプレースホルダーが含まれています。BunのネイティブHTTPスタック(Zigで書かれている)は、リクエストがクライアントを離れる前に、このプレースホルダーを計算されたハッシュで上書きします。
Anthropicのサーバーは、このハッシュを検証することで、リクエストがフォーク、ラッパー、またはプロキシではなく、正規のClaude Codeバイナリから発信されたものであることを暗号学的に確認します。
これが存在する理由
このアッテステーションシステムは、Anthropicが不正なClaude Codeのフォークに対してとる法的措置の背後にある技術的な実施メカニズムです。もしフォークが有効なアッテステーションハッシュを生成できない場合、Anthropicのサーバーはそのリクエストを拒否できます。
ただし、この実装には限界があります。コンパイル時の機能フラグの背後に隠されており、CLAUDE_CODE_ATTRIBUTION_HEADER設定またはGrowthBookのキルスイッチを介して無効にできます。これは、Anthropicが必要に応じて制限を強化または緩和できる、段階的な実施であることを示唆しています。
API開発者にとって、これはSaaSツールがプロトコルレベルでクライアントの信頼性をどのように強制できるかを示すために関連性があります。同様のパターンはモバイルAPI開発にも存在し、アプリのアッテステーションが不正なAPIアクセスを防ぎます。クライアント検証を伴うAPIを設計している場合、Apidogのテストツールは、異なるクライアント構成間でアッテステーションフローと証明書ピンニングを検証するのに役立ちます。
KAIROS:未公開の自律エージェントモード
コードが明らかにすること
コードベース全体にわたる参照は、KAIROSと呼ばれる未公開の機能ゲートモードを指しています。発見された足場には以下が含まれます。
- 「夜間メモリ蒸留」のための
/dreamスキル - 日次追記専用ロギング
- リポジトリイベントを監視するためのGitHubウェブフックサブスクリプション
- 5分ごとのcron更新間隔を持つバックグラウンドデーモンワーカー
これが意味すること
KAIROSは、常に稼働し、バックグラウンドでリポジトリを監視し、ユーザーの直接的な操作なしに自律的なタスクを実行するエージェントであるようです。Claude Codeが継続的に実行され、変更を監視し、積極的にコードの修正を提案または実行すると考えてください。
これは、自律型コーディングエージェントへの広範な業界トレンドと一致しています。GitHub Copilotのエージェントモード、Cursorのバックグラウンド処理、GoogleのAgent Smithはすべて、ユーザーが指示するのを待たないAIコーディングツールを示唆しています。これらは監視し、学習し、自ら行動します。
API開発チームにとって、コードリポジトリを修正する自律型エージェントは、API契約の安定性について疑問を投げかけます。もしエージェントがAPIエンドポイントのコードを更新した場合、OpenAPI仕様、テスト、ドキュメントも更新されるのでしょうか?これらは、Apidogのような統合プラットフォームが解決するために構築されたワークフローの問題であり、コード変更の引き金が何であれ、API設計、テスト、モック、ドキュメントを同期させ続けます。
露呈したパフォーマンス最適化
ターミナルレンダリング:ゲームエンジン技術
ink/screen.tsとink/optimizer.tsファイルは、Claude Codeがターミナルレンダリングにゲームエンジン技術を使用していることを明らかにしています。
- メモリ効率の高いスクリーンバッファのための
Int32Arrayを基盤とした文字プール - トークンストリーミング中に文字幅計算を約50倍削減するパッチ最適化
これにより、長時間の出力ストリーム中でもClaude Codeが応答性を高く感じる理由が説明されます。レンダリング層はCLIツールとしては異例のレベルで最適化されています。
プロンプトキャッシュの経済学
promptCacheBreakDetection.tsは、モード切り替えがキャッシュされたプロンプトを無効化するのを防ぐ「スティッキーラッチ」を備えた14種類のキャッシュブレイクベクトルを追跡します。これは、Claude Codeのビジネスモデルにとってプロンプトキャッシングがいかに経済的に重要であるかを反映しています。
各キャッシュブレイクは、Anthropicにシステムプロンプト全体と会話コンテキストを再処理させることを強制します。Claudeのトークン課金では、不要なキャッシュ無効化を防ぐことで、大幅なインフラコストを節約できます。彼らが14もの異なるキャッシュブレイクベクトルを追跡しているという事実は、エンジニアリングチームがプロンプトキャッシュ最適化を最優先のパフォーマンス課題として扱っていることを示唆しています。
オートコンパクトの連鎖的障害
autoCompact.ts(68-70行目)のコメントは、重大な本番環境の問題を明らかにしました。「1,279セッションで、1つのセッション中に50回以上(最大3,272回)連続して障害が発生し、世界全体で1日あたり約25万回のAPIコールが無駄になった。」
3行の修正はMAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3を設定しました。このバグは大規模な環境でのみ表面化します。コンテキスト管理が失敗すると、システムは積極的に再試行を繰り返し、進捗なくAPIコールを消費します。数百万のアクティブセッションを持つツールにとって、1日あたり25万回の無駄なAPIコールはかなりのコストに相当します。
この文脈は、Claude Codeユーザーが「予想よりもはるかに速く使用制限に達している」(275ポイント)という最近のHacker Newsの投稿を説明するのに役立ちます。その使用制限の消費の一部は、このような内部の効率バグに起因する可能性があります。
セキュリティ強化の詳細
Bashセキュリティ:23項目のチェック
bashSecurity.tsは、シェルコマンド実行のための23項目のセキュリティチェックを実装しており、以下に対する防御が含まれます。
- Zsh組み込みコマンドの悪用
- コマンドにおけるUnicodeゼロ幅スペースの注入
- IFS(内部フィールドセパレータ)nullバイト注入
- HackerOneのセキュリティレビュー中に発見された追加の保護
これはCLIツールとしては異例なほど徹底しています。シェルコマンドを実行するほとんどのAIコーディングツールは、基本的なサニタイズしか行っていません。Claude Codeの23項目のチェックは、彼らが独創的な攻撃ベクトルに対処してきた(あるいは積極的に防御してきた)ことを示唆しています。
AIツールを使用してAPIテストスクリプトを生成・実行するAPI開発者にとって、このレベルのシェルセキュリティは関連性があります。もしあなたのAIコーディングツールがcurlコマンド、データベースクエリ、またはインフラストラクチャスクリプトを実行する場合、コマンド実行レイヤーのセキュリティは重要です。
API開発者がここから学ぶべきこと
1. AIコーディングツールの内部の仕組みを理解する
Claude Codeの漏洩は、ほとんどのユーザーが知らなかった機能、すなわち蒸留防止策、欲求不満検知、アンダーカバーモード、クライアントアッテステーションを明らかにしました。他のAIコーディングツールにも、ユーザーが検査できない独自の内部メカニズムがあります。
自問してみてください。あなたのAIコーディングツールがどのようなデータを収集しているか知っていますか?外部サーバーに何を送信しているか知っていますか?それがあなたのコードにおける自身の関与を隠しているかどうか知っていますか?
2. ビルドツールチェーンは攻撃対象である
AnthropicのソースはBunのバグにより漏洩しました。同日、Axiosはnpmアカウントのハイジャックを通じて侵害されました。あなたのビルドツール、パッケージマネージャー、ランタイム環境はすべて潜在的な障害点です。
API開発にとって、これは以下のことを意味します。
- ビルドパイプラインの依存関係を監査する
- CI/CDがソースマップ、
.envファイル、または内部設定を露出させないことを確認する - サードパーティの依存関係面を最小限に抑える統合開発プラットフォームを使用する
3. AIコーディングツールは自律運用に収束しつつある
KAIROS、GitHub Copilotのエージェントモード、GoogleのAgent Smith。その方向性は明確です。継続的に実行され、リポジトリを監視し、自律的に行動するAIツールへと向かっています。
APIチームは、APIライフサイクルが単一のプラットフォームで管理されるようにすることで、これに備える必要があります。自律型エージェントがAPI実装を修正した場合、テスト、モック、ドキュメント、および仕様は同期を保つ必要があります。切断されたツールは乖離を生み出します。Apidogのような統合プラットフォームは、変更が人間の開発者から来てもAIエージェントから来ても、APIライフサイクル全体を同期させ続けます。
4. ソースコードの透明性は重要である
この漏洩は、コードがプロプライエタリであり、誤って露出されたために発生しました。オープンソースのAIツールは、コードがすでに公開されているため、このリスクはありません。
AIコーディングツールを評価する際、内部を検査できるツールと、ベンダーへの信頼に依存するツール、どちらを好むかを考慮してください。どちらのアプローチにもトレードオフがありますが、Claude Codeの漏洩は、ベンダーのコードが予期せぬ動作を明らかにしたとき、「ベンダーを信頼する」ということがどのようなものかを示しています。
よくある質問
ソース漏洩後もClaude Codeは安全に使用できますか?
はい。この漏洩はソースコードを露呈したものであり、ユーザーデータではありません。Anthropicは.mapファイルを削除し、ソースはnpmパッケージとともに配布されなくなりました。明らかにされた機能(蒸留防止、欲求不満検知、アンダーカバーモード)は、セキュリティ脆弱性ではなく、アーキテクチャ上の決定です。これらの決定に納得できるかどうかは、安全性とは別の問題です。
Claude Codeの「アンダーカバーモード」とは何ですか?
アンダーカバーモードは、Claude CodeがAnthropic以外のリポジトリで動作する際、内部のAnthropicプロジェクト名、コードネーム、および自身の身元を明らかにすることを防ぎます。これは自動的に有効になり、無効にすることはできません。実際的な影響として、オープンソースプロジェクト内のAI生成コードは、Claude Codeによって書かれたものとして自己識別しないことになります。
Claude Codeの偽ツールとは何ですか?
蒸留防止が有効な場合、Anthropicのサーバーは、おとりのツール定義をシステムプロンプトに注入します。これらの偽ツールは何もしません。それらは、APIトラフィックを記録して競合モデルをトレーニングする競合他社のトレーニングデータを汚染するために存在します。もし誰かが傍受されたデータからClaudeの動作を再現しようとすると、そのモデルは存在しない機能を幻覚するでしょう。
Claude CodeのKAIROSとは何ですか?
KAIROSは、Claude Codeのソースで見つかった、未公開の機能フラグ付き自律エージェントモードです。これには、バックグラウンドデーモンワーカー、GitHubウェブフックサブスクリプション、およびメモリ蒸留のための/dreamスキル用の足場が含まれています。これは、Anthropicがリポジトリを監視し、自律的に行動する常時稼働のコーディングエージェントを構築していることを示唆しています。
Claude Codeのソースコードはどのように漏洩したのですか?
Bunランタイムのバグ(oven-sh/bun#28001)により、本来含まれるべきでないソースマップが本番ビルドに含まれてしまいました。Claude CodeはBunをビルドツールとして使用しているため、このバグにより.mapファイルがnpmパッケージとともに出荷されました。パッケージを検査する人なら誰でも、完全な非ミニファイ化されたソースコードを読むことができました。
この漏洩はClaude APIユーザーに影響しますか?
いいえ。この漏洩はClaude Code CLIツールのソースコードを露呈したものであり、Claude API自体ではありません。APIキー、ユーザーデータ、モデルの重みは関与していませんでした。Claude APIユーザーは引き続きAPIを通常通り使用できます。明らかにされた蒸留防止メカニズムは、Claude Codeのリクエストパイプラインに固有のものです。
AIコーディングツールにおける欲求不満検知について心配すべきですか?
それはあなたの快適さに依存します。Claude Codeは、正規表現パターンを使用して、プロンプト内のユーザーの欲求不満(冒涜的な言葉、感情的な言葉)を検出します。これはLLMベースの感情分析よりも高速で安価です。このデータは製品改善のために使用されるようであり、外部には共有されません。他のAIツールも、開示せずに同様の機能を備えている可能性があります。
これは同日のAxios npm攻撃とどのように関連していますか?
両方のイベントは2026年3月31日に発生しましたが、無関係です。Axios攻撃は国家支援のハッカーによる意図的なサプライチェーン侵害でした。Claude Codeの漏洩は偶発的なビルド構成エラーでした。これらが相まって、npmパッケージのセキュリティと、開発者がパッケージレジストリを通じて配布されるツールに置く信頼への精査が強化されました。
主なポイント
- Claude Codeのソースは、npmパッケージにソースマップを出荷するBunビルドツールのバグにより漏洩しました
- 蒸留防止メカニズムは、モデル盗用を防ぐために偽のツールを注入し、推論を要約します
- アンダーカバーモードは、Anthropic以外のオープンソースリポジトリでのClaude Codeの関与を隠します
- 欲求不満検知は、LLMベースの分析ではなく、ユーザー入力に対して正規表現を介して実行されます
- KAIROSの足場は、未公開の自律型バックグラウンドエージェントモードを明らかにしています
- クライアントアッテステーションは、リクエストが正規のClaude Codeバイナリから発信されたものであることを暗号学的に検証します
- この漏洩は、API開発ワークフローにおける透明で検査可能なツールの重要性を浮き彫りにしています
AIコーディングツールの内部がどのように機能するかを理解することは、信頼、プライバシー、ワークフロー設計についてより良い決定を下すのに役立ちます。APIチームにとっての重要な教訓は、開発ツールがセキュリティサーフェスの一部であるということです。検証できるツールを選択し、人間であろうとAIエージェントであろうと、次に変更を加えるのが誰であるかに関わらず、一貫性を保つワークフローを構築してください。
