2026年3月31日、npmパッケージの中にAnthropicのソースコード512,000行が丸ごと転がっているのを発見されたのは、エンジニアのChaofan Shouが眠れない夜を過ごした午前4時23分(米東部時間)のことだった。原因は .npmignore という設定ファイルの書き漏れという間抜けなミスだったが、その流出がなければ誰も知らなかったものがある——ターミナルで飼えるキャラクター「/buddy」だ。
鍵を閉め忘れた話
npmパッケージとは、JavaScriptやTypeScriptのプログラムを配布するための「荷物の箱」だ。開発者はその箱をインターネット上に公開し、世界中の誰もが npm install のコマンド一発でダウンロードして使える。
問題は「何を箱に入れるか」のルールが守られなかったことだ。.npmignore というファイルに「これは箱に入れるな」と書いておけば、ソースマップ(コンパイル後のコードと元のコードを対応させるデバッグ用ファイル)は除外される。ところが@anthropic-ai/claude-code v2.1.88では、その設定が漏れていた。さらにソースマップの保存先だったCloudflare R2バケットが認証なしで公開状態になっていた。

結果、59.8MBのソースマップファイルから TypeScript約512,000行・約1,900ファイルの実装が丸見えになった。家を出るとき鍵を閉め忘れたようなものだ。悪意はない。でも中身が全部見えた。
Anthropicは翌日、The Registerを通じて公式声明を出した。「これはリリースパッケージングの人的ミスによるものであり、セキュリティ侵害ではない。再発防止策を展開中だ」と述べた。
これは実は2度目の事故だった。1度目はClaude Codeのローンチ日である2025年2月24日に同様のインシデントが発生している。
自分でJavaScriptパッケージを公開する立場なら、同じミスを防ぐために .npmignore に以下を追加しておくといい。
# ❌ よくある設定漏れ(ソースマップが除外されていない)
node_modules/
.env
# ✅ ソースマップを明示的に除外
node_modules/
.env
**/*.map
*.map
dist/**/*.map
4月1日のターミナルに現れたもの
流出したソースコードを調べた研究者たちが発見したのは、エラーや脆弱性だけではなかった。ソースコードの中に、小さなキャラクターが住んでいたのだ。
コマンドは /buddy。実行すると、ターミナルにASCIIアートで描かれたキャラクターが出現する。タマゴッチ、という表現が一番近い。ただし現代のタマゴッチはガラケーの液晶ではなく、コードを書くターミナルに住んでいる。
ClaudeFast による詳細な解析によれば、以下のコマンドが使える。
# 初回起動——自分の相棒を召喚する
/buddy
# なでる(ハートアニメーションが出る)
/buddy pet
# ステータスカードを表示
/buddy card
# セリフを黙らせる / 復活させる
/buddy mute
/buddy unmute
# 非表示にする(消えても心の中にいる)
/buddy off
4月1日〜7日はティーザー期間で15秒間の虹色通知のみが表示され、4月8日以降に全コマンドが解放される設定だった(ソースコード内のコメントより。正式なリリースアナウンスではない)。利用にはPro/Maxサブスクリプションが必要だ。
18種類のキャラクター、5段階のレアリティ
/buddyに登場するキャラクターは18種類ある。duck、goose、cat、rabbit、owl、penguin、turtle、snail、dragon、octopus、axolotl、ghost、robot、blob、cactus、mushroom、chonk、capybara。
それぞれに5段階のレアリティが設定されている。
| レアリティ | 出現確率 |
|---|---|
| Common | 60% |
| Uncommon | 25% |
| Rare | 10% |
| Epic | 4% |
| Legendary | 1% |
さらに全レアリティに独立した1%の確率で「シャイニー」バリアントが存在し、虹色のアニメーションが付く。シャイニー+レジェンダリーを引く確率は0.01%——1万アカウントに1体の計算だ。
各キャラクターには5つのステータスがある。DEBUGGING(デバッグ力)、PATIENCE(忍耐力)、CHAOS(混沌度)、WISDOM(知恵)、SNARK(毒舌力)。それぞれ0〜100の値を持ち、レアリティが高いほど数値が高くなる仕組みだ。
帽子も存在する。8種類あり、レアリティに応じて解放される。
「ガチャ」に見えるが、運命は決まっていた
面白いのはここからだ。
/buddyは一見ガチャに見える。でも実態は違う。自分のキャラクターは、ユーザーIDが決まった瞬間にすでに確定している。DEVコミュニティの逆解析記事によれば、生成アルゴリズムは以下のような流れだ。
ソルト文字列の 'friend-2026-401' に含まれる 401 は April 1st(4月1日)を意味している。プログラマーが仕込んだ小さなジョークだ。
同じユーザーIDで実行すれば、いつ実行しても必ず同じキャラクターが出てくる。「ガチャ」の形をしているが、実態は「運命」だ。「お前の相棒はもう決まっている」——そういう設計になっている。
もう一つ面白い細工がある。ソースコードの中でキャラクター名はHEXエンコードで書かれていた(例:capybara = 0x63, 0x61, 0x70, 0x79, 0x62, 0x61, 0x72, 0x61)。kuber.studioの解析によれば、理由はAnthropicの内部ビルドスキャナー excluded-strings.txt を回避するためで、capybaraはAnthropicの内部モデルコードネームと一致するため検知を避ける必要があったようだ。自社のセキュリティツールから自社の隠し機能を隠す——という構図は、どこか滑稽でもある。
/buddyだけじゃない:流出で見えた他の機能
512,000行のソースコードには、/buddy以外の未公開機能も含まれていた。
Alex Kim's Blogの解析によれば、フラストレーション正規表現と呼ばれる仕組みが存在する。ユーザーが「wtf」や「goddamn」といった怒りのワードを入力すると、Claude Codeが検出して応答のトーンを調整するものだ。ユーザーが苛立っていることを察知して、応答の仕方を変える。感情センサーのようなものだ。
アンダーカバーモード(Undercover Mode)も見つかった。sabrina.devの包括的な解析によれば、外部リポジトリで使用する際に「Capybara」「Tengu」といった内部コードネームを絶対に言わない、AIが書いたコードの痕跡をコミットから消す——という設定が外部ビルドで強制有効になっているという。
常時起動エージェントの「KAIROS」は、GitHubウェブフックと統合し5分間隔で自律的にタスクを処理する設計だ。/dream コマンドによるバックグラウンドメモリ統合も実装されている。現時点ではフィーチャーフラグ制御下で未公開だが、コードは存在している。
ULTRAPLANは30分間のリモートプランニングセッションで、Opus 4.6を使いブラウザ経由の承認ワークフロー付きで動く設計だ。
さらにAlex Kim's Blogはアンチ蒸留機能も報告している。競合他社がAPIトラフィックを記録して自社モデルの訓練に使おうとした場合、意図的に「フェイクツール」を混入してデータを汚染する仕組みだ。
そしてkuber.studioによれば、ソースコードにはOpus 4.7、Sonnet 4.8、さらに1Mコンテキスト対応の「Capybara」モデルファミリーへの参照コードも含まれていた。

ミスが明かしたAnthropicの設計思想
エイプリルフールのジョークだと思って読んでいた人も多いかもしれない。4月1日にターミナルペットが出てきたというニュースは、タイミングが絶妙すぎる。
でも違う。/buddyは冗談ではない。ソースコードを見れば、レアリティの計算ロジック、決定論的生成のアルゴリズム、リリーススケジュールを管理するフラグ、ステータスの数値計算——これは本物のプロダクト実装だ。
何が面白いか。Claude Codeは現時点でコーディングツールとして世界最高レベルの評価を受けているプロダクトだ(ARR $25億超という数字が示す通りだ)。そのチームが、主要機能とは関係のないターミナルペットに本気でリソースを投下している。
5つのステータス設計、決定論的な「運命」の仕組み、シャイニーバリアントの虹色アニメーション、HEXエンコードで内部スキャナーをかわす工夫。「どうせ誰も見ないから」という姿勢では作れないものだ。
ソースコードを読んだ人間はその温度を感じ取った。そういう話が流出の翌日には世界中でシェアされていた。
/buddyは2026年4月8日以降、Claude Code v2.1.89以上のPro/Maxサブスクリプションユーザーで利用可能になる予定だ(ソースコード内のコメントによる。公式アナウンスではない)。まだの人は /buddy を試してみてほしい。
流出は防げた
最後に実務的な話をしておく。
今回の流出はセキュリティ侵害ではなかった。攻撃者はいなかった。ただの設定ミスだ。でも設定ミスで512,000行のコードが世界に公開された。
npmパッケージを公開する立場なら、同じことが自分にも起きうる。.npmignore にソースマップを除外する設定を入れるのは、1行の追記で済む。「そんな間違いしない」と思うかもしれないが、Anthropicのエンジニアたちも同じことを思っていたはずだ。
Anthropicレベルのチームでさえ、鍵の閉め忘れをする。プロセスとチェックリストが、実力の代わりにはならないが、実力を補う。
