Claude Code 自身にバグをデバッグさせて GitHub Issue に報告した話

AI

発端:/insights が動かない

Claude Code を v2.1.33 にアップデートした直後、/insights を実行したらクラッシュしました。

❯ /insights
  ⎿  TypeError: undefined is not an object (evaluating 'Object.keys(b)')

/insights は Claude Code のセッション履歴を分析して、使い方の改善提案を出してくれる組み込みコマンドです。自分の使い方のクセを振り返るのに便利で、定期的に使っていました。

エラーの原因がわからなかったので、Claude Code 自身に「このエラーを解消して」と頼みました。自分がやったのは本当にこれだけです。

Claude Code が勝手に調査を進めてくれた

試行1:セッションファイルの修復

最初に Claude Code はセッションファイルの破損を疑いました。空の .jsonl ファイルや不正な JSON 行を見つけて修復してくれましたが、直りません。

試行2:facet キャッシュの調査

次に ~/.claude/usage-data/facets/ のキャッシュファイル(過去のセッション分析結果の保存先)を調べ始めました。API エラーレスポンスをそのまま保存したファイルが見つかりました。

削除しても /insights を実行するたびに再生成されます。何度消しても壊れたファイルが増えていく。ここで Claude Code が「根本的にはこれ Claude Code 側のバグです」と言い始めました。

試行3:自分自身のバイナリをデコンパイル

ここで驚いたのですが、Claude Code が自分自身のバイナリをデコンパイルし始めました。自分で自分のコードを読んで、クラッシュ箇所を特定したわけです。正直、ここまでやってくれるとは思っていませんでした。

let w = G.get(F);        // facet Map からセッションの facet を取得
if (!w) return !1;        // facet がなければスキップ
let b = w.goal_categories;
u = Object.keys(b)...    // ← b が undefined でクラッシュ

Claude Code の説明によると、こういうことでした。

  • if (!w) のガードは facet オブジェクト自体が falsy かどうかしか見ていない
  • API エラーレスポンス {"type":"error","error":{...}} は truthy なのでガードを通過する
  • しかし goal_categories フィールドがないので Object.keys(undefined) で落ちる
  • facet 保存関数が、API エラーレスポンスをバリデーションせずにキャッシュへ保存していたのが根本原因

さらにワークアラウンドの Python スクリプトと、修正案(if (!w?.goal_categories) return !1 で十分)まで出してくれました。

自分は横で見ていただけです。

GitHub Issue に投稿

せっかくここまで調査結果が揃ったので、バグ報告することにしました。

gh issue list で検索したら、すでに同じエラーの Issue が立っていました。

#23138 – TypeError in insights command

12 件以上コメントがついていて、他のユーザーも同じ問題にハマっていました。ただ、根本原因の特定までは至っていません。

既存の Issue にコメントする形で、Claude Code がまとめてくれた調査結果を投稿しました。

投稿したコメント

投稿した内容はこちらです。

  • クラッシュ箇所のデコンパイル結果
  • バグのメカニズム(エラーレスポンスがキャッシュされる流れ)
  • 再現手順
  • Python スクリプトによる回避策
  • 修正案

他のユーザーが検証してくれた

投稿した翌日、別のユーザーが回避策を検証してくれました。

I can confirm that the workaround suggested by @atani works perfectly.

このコメントを見たとき、素直に嬉しかったです。自分が手を動かしたわけではないけれど、投稿してよかったと思いました。

Anthropic が修正してくれた

2026 年 2 月 13 日、Anthropic のエンジニアからコメントがつきました。

This is late but we fixed this in a recent release. Let me know if this isn’t fixed and thanks for the report!

Issue はクローズされ、最新版では /insights が正常に動作するようになりました。対応してくださった Anthropic のエンジニアの方に感謝です。

振り返り

今回やったことを整理すると、自分がやったのは 2 つだけです。

  1. Claude Code に「このエラーを解消して」と頼んだ
  2. Claude Code がまとめた調査結果を GitHub Issue に投稿した

根本原因の特定もワークアラウンドの作成も、すべて Claude Code がやってくれました。

OSS への貢献というとコードを書くイメージがありますが、バグの調査結果を共有するだけでも誰かの役に立ちます。そしてその調査自体、AI へ任せられる時代になっています。

「バグに遭遇したけど自分では原因がわからない」という場面でも、AI に投げてみると根本原因まで辿り着けることがあります。その結果を Issue に投稿するだけで、同じ問題に困っている人の助けになります。

検証してくれたユーザーの方、修正してくれた Anthropic の方のおかげでバグが直りました。

リンク

タイトルとURLをコピーしました