AIツール

Claude Codeにタマゴッチが住んでいた——ソースコード流出で明かされた「/buddy」の全貌

2026年3月31日、npmパッケージにソースコード59.8MBが丸ごと混入。その調査中に見つかったのが、ターミナルで飼えるASCIIキャラクター「/buddy」だった。

公開: 2026年4月4日約12分

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バケットが認証なしで公開状態になっていた。

Anthropic accidentally exposes Claude Code source code: Oopsy-doodle: Did someone forget to check their build pipeline?theregister.com

結果、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段階のレアリティが設定されている。

レアリティ出現確率
Common60%
Uncommon25%
Rare10%
Epic4%
Legendary1%

さらに全レアリティに独立した1%の確率で「シャイニー」バリアントが存在し、虹色のアニメーションが付く。シャイニー+レジェンダリーを引く確率は0.01%——1万アカウントに1体の計算だ。

各キャラクターには5つのステータスがある。DEBUGGING(デバッグ力)、PATIENCE(忍耐力)、CHAOS(混沌度)、WISDOM(知恵)、SNARK(毒舌力)。それぞれ0〜100の値を持ち、レアリティが高いほど数値が高くなる仕組みだ。

帽子も存在する。8種類あり、レアリティに応じて解放される。


「ガチャ」に見えるが、運命は決まっていた

面白いのはここからだ。

/buddyは一見ガチャに見える。でも実態は違う。自分のキャラクターは、ユーザーIDが決まった瞬間にすでに確定している。DEVコミュニティの逆解析記事によれば、生成アルゴリズムは以下のような流れだ。

Loading diagram...

ソルト文字列の '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」モデルファミリーへの参照コードも含まれていた。

Claude Code's Entire Source Code Was Just Leaked via npm Source Maps — Here's What's InsideA security researcher found Anthropic's full CLI source code exposed through a source map file. 1,900 files. 512,000+ lines. Everything.dev.to

ミスが明かした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レベルのチームでさえ、鍵の閉め忘れをする。プロセスとチェックリストが、実力の代わりにはならないが、実力を補う。

Comprehensive Analysis of Claude Code Source Leak!Technical deep dive of Claude source code 2nd time leak!sabrina.dev