Claude Codeのトラブルシューティング
- 症状の表を使って、Claude Codeのあらゆる問題をワンステップで対処法にたどり着かせる
- 手作業でデバッグを始める前に、たいていのセットアップ問題を解決する2つの診断コマンドを実行する
- プラグイン、MCPサーバー、フックのどれが真の原因かを切り分ける
- 典型的な4つのランタイム障害を直す: メモリ肥大、ハング、コンパクションのスラッシング、検索が何も見つけない
- バグ報告を出す前に、適切な証拠を集める
大きな考え方
Claude Codeの問題はほぼすべて2種類のどちらかであり、その対処法はまったく異なります:
- セットアップが間違っている — プラグイン、MCPサーバー、フック、設定ファイル、足りないバイナリ。対処法は設定です。
- セッションに負荷がかかっている — コンテキストウィンドウが一杯、巨大なファイルがメモリを膨れ上がらせた、ターミナルが描画できない。対処法は衛生管理です。
どちらなのかを当てずっぽうで探るのが、人が午後をまるごと失うポイントです。下の表は、その当てずっぽうを省きます。
:::tip 別の種類の「おかしさ」ですか? このページはツールの不具合についてです — 起動しない、ハングする、検索が何も見つけない。モデルの挙動がおかしい場合 — 事実をでっち上げた、指示を忘れた、まっとうな依頼を拒否した — それは別のページです: Claudeはなぜそうしたのか? :::
ここから始める: 症状 → 行き先
自分の症状を見つけてください。このページの残りは読まなくて構いません。
| 症状 | 行き先 |
|---|---|
command not found、インストール失敗、EACCES、PATH や TLS のエラー | 公式: インストールとログイン |
ログインのループ、OAuthエラー、403 Forbidden、「organization disabled」 | 公式: ログインと認証 |
| 設定が反映されない、フックが発火しない、MCPサーバーが読み込まれない | 下の設定を切り分ける |
API Error: 5xx、529 Overloaded、429、バリデーションエラー | エラーとレート制限 |
model not found / 「アクセス権がない可能性があります」 | 最新のモデルと料金 |
| VS Code や JetBrains が Claude を検出しない | IDE統合 |
| CPU やメモリの使用率が高い | 下のメモリとCPU |
| ハング、フリーズ、無反応 | 下のハングとフリーズ |
Autocompact is thrashing | 下のコンパクションのスラッシング |
検索、@file、エージェント、Skillがファイルを見つけられない | 下の検索が何も見つけない |
| IDEのターミナルで四角、にじみ、誤ったグリフが出る | 下のターミナルの文字化け |
まず実行すべき2つのコマンド
手作業でデバッグを始める前に、組み込みの健康診断を実行しましょう。インストール、設定、拡張機能、コンテキスト使用量を診断し、確認のうえ適用できる修正を提案してくれます。
- /doctor(エイリアスは /checkup)は、インストール、設定、拡張機能、コンテキスト使用量を検査し、適用できる修正を提案します。これだけで、セットアップに関する不満のほとんどは解決します。
- claude doctor はセッションの外から同じ健康診断を行うため、壊れた設定が、それを診断するはずのツールを妨げることがありません。
- /mcp は設定済みの全MCPサーバーのライブステータスを表示します — サーバーが誤動作したのではなく読み込みに失敗したのかを見分ける最速の方法です。
壊れたセットアップを診断する
# inside a session /doctor # if the session won't start at all claude doctor # check MCP server status /mcp
設定を切り分ける
設定が反映されない、フックが発火しない、あるいは単に何かがおかしいとき、問うべきは「何が壊れているか」ではありません — 自分のカスタマイズのどれが壊れているかです。それは、すべてを一度に取り除くことで答えられます。
--safe-mode は、あらゆるカスタマイズを無効にしてClaude Codeを起動します: プラグインなし、MCPサーバーなし、フックなし。
クリーンな設定で試す
claude --safe-mode
これにより、きれいな二択の結果が得られます:
カスタマイズが原因だと分かったら、二分探索しましょう: 問題が再発するまで、グループ単位で再有効化していきます。犯人になりやすい順に並べると、MCPサーバー、フック、プラグイン、設定です。
- --safe-mode は、あからさまな故障だけでなく、原因不明の遅さに対しても正しい第一手です。おしゃべりなMCPサーバーは、その両方の非常によくある原因です。
メモリとCPU
Claude Codeはたいていの環境で動作しますが、大規模なコードベースでは相応のリソースを消費することがあります。安いものから順に並べてあるので、上から順に試してください。
- /compact を実行してコンテキストを縮小します。コンテキストウィンドウの肥大は、セッションが重くなる最大の原因です。/docs/claude-code/context-management を参照してください。
- 1つのプロセスに午後いっぱいの状態を溜め込ませるのではなく、無関係な作業に切り替えるときはClaude Codeを閉じて起動し直しましょう。
- ビルド成果物、キャッシュ、ベンダー依存物を .gitignore に追加し、そもそも検索や読み込みの対象に入らないようにします。
- claude --safe-mode で起動し直します。使用量が下がれば、プラグイン、MCPサーバー、フックが原因です — そこから二分探索しましょう。
- /heapdump を実行すると、JavaScriptヒープのスナップショットとメモリの内訳が ~/Desktop(Desktopフォルダのない Linux ではホームディレクトリ)に書き出されます。
/heapdump の内訳は、レジデントセットサイズ、JSヒープ、array buffer、および計上されていないネイティブメモリを報告します。この内訳こそが有用な部分です: メモリの増加がJavaScriptオブジェクトにあるのか、それともネイティブコード側にあるのかが分かります。何がメモリを保持し続けているかを調べるには、.heapsnapshot ファイルを Chrome DevTools の Memory → Load で開いてください。
ハングとフリーズ
Claude Codeが応答しなくなったら:
- Ctrl+C を押します。セッションを終了させずに、実行中の処理を中断します。
- ターミナルを閉じて起動し直します。破壊的に感じますが、そうではありません。
- 同じディレクトリで claude --resume を実行します。再起動しても会話は失われません — トランスクリプトはプロセスより長く残ります。
- 長い会話を失うのが怖いからこそ、人はハングを終了させずに耐えてしまいます。その必要はありません — 同じディレクトリで claude --resume を実行すればセッションは戻ってきます。
コンパクションのスラッシング
このエラーは不穏に見えますが、実際には保護です:
Autocompact is thrashing: the context refilled to the limit...
これは、自動コンパクションが成功したことを意味します — そのうえで、ファイルやツールの出力が即座にコンテキストウィンドウ全体を埋め直す、という事態が数回続いたのです。Claude Codeは、前進していないループでAPI呼び出しを浪費するより、リトライをやめます。
原因はほぼ常に、大きすぎる何かを丸ごと読み込んでいることです。自分の状況に合う対処法を選んでください:
| 状況 | 対処法 |
|---|---|
| 巨大なファイル1つが問題 | ファイル全体ではなく、行範囲や単一の関数を読むようClaudeに頼む |
| もう不要な大きな出力がコンテキストにある | それを捨てるフォーカスを付けて /compact |
| その大きな読み込みが本当に必要 | サブエージェントに移し、別のコンテキストウィンドウを消費させる |
| それまでの会話がもう重要でない | /clear |
肥大を捨てるフォーカス付きでコンパクトする
/compact keep only the plan and the diff
サブエージェントという選択肢は忘れられがちですが、多くの場合これが最善です: サブエージェントは自分のコンテキストで巨大なファイルを読み、結論だけをあなたのコンテキストに返します。コンテキスト管理とサブエージェントを参照してください。
検索が何も見つけない
Searchツール、@file メンション、カスタムエージェント、カスタムSkillが、存在すると分かっているファイルを見つけられない場合、同梱の ripgrep バイナリがあなたのシステムで実行できていない可能性が高いです。対処法は、プラットフォーム純正の ripgrep をインストールし、それを使うようClaude Codeに伝えることです。
- macOS: brew install ripgrep — Ubuntu/Debian: sudo apt install ripgrep — Alpine: apk add ripgrep — Arch: pacman -S ripgrep — Windows: winget install BurntSushi.ripgrep.MSVC
- 環境に USE_BUILTIN_RIPGREP=0 を設定します。この手順を踏まないと、ripgrep をインストールしても何も変わりません。
- 失敗していた検索や @file メンションをやり直します。それでも空振りなら /doctor を実行してください。
macOSで検索を直す
brew install ripgrep export USE_BUILTIN_RIPGREP=0
WSLという例外
WSLでは、検索結果が不完全なのはたいてい壊れたバイナリのせいではありません。Windows/Linux間のファイルシステム境界をまたぐ読み込みにはディスク性能上のペナルティがあるため、検索は期待より少ない件数を返します。検索は動いてはいます — ただ、取りこぼすのです。
- WSLでは、結果が不完全であっても claude doctor は Search を OK と報告します。診断が緑でも、この可能性は排除できません — まさにそれが、この問題の診断を難しくしています。
抜け出す方法は3つ、良い順に: プロジェクトを /mnt/c/ ではなく Linux のファイルシステム(/home/)へ移す。WSL経由ではなく Windows でネイティブに Claude Code を動かす。あるいは検索対象のファイルが減るよう検索を絞り込む — 「auth のコードを探して」より「auth-service パッケージ内の JWT 検証ロジックを検索して」の方が優れています。
ターミナルの文字化け
VS Code、Cursor、Devin Desktop の統合ターミナル内で、文字が四角、にじみ、誤ったグリフとして描画されるのは、GPUレンダラーの問題であり、フォントやエンコーディングの問題ではありません。
IDEターミナルのグリフ化けを直す
/terminal-setup
これは terminal.integrated.gpuAcceleration を "off" に設定します。エディタの設定で手動で設定し、ウィンドウを再読み込みしても構いません — 結果は同じです。
大きな表が途中で切れる
200行を超えるMarkdownの表は、最初の200行を描画し、続けて … N more rows not shown という行を表示します。これは表示上の上限のみです — 表の全体は会話の中に残っており、/copy はすべての行をコピーします。ターミナルで読むには大きすぎる表なら、ファイルに書き出すようClaudeに頼みましょう。
良いバグ報告を出す
ここに当てはまるものが何もなければ報告してください — ただし証拠を携えて。「遅いです」という報告はどこにも行き着きませんが、ヒープスナップショットと --safe-mode の結果が付いた報告は修正されます。
- 健康診断の内容と、実際に読み込まれているMCPサーバーを記録します。報告されるバグの半分はここで答えが出ます。
- この1つの事実が、メンテナにClaude Code側を見るべきか、あなたのカスタマイズ側を見るべきかを伝えます。報告の中で最も価値のある一行です。
- メモリの問題では、/heapdump が書き出した両方のファイル — スナップショットと内訳 — を添付してください。
- Claude Code内で /feedback を使ってAnthropicに直接報告するか、まず github.com/anthropics/claude-code で既知の問題を確認しましょう。
- まず /doctor(エイリアス /checkup)を実行する — セッションが起動しないなら、シェルから claude doctor として実行します。インストール、設定、拡張機能、コンテキスト使用量を診断し、修正を適用できます。
- claude --safe-mode はすべてのカスタマイズを一度に無効化します。問題がそれを生き延びるかどうかは、集められる中で最も情報量の多い事実です。
- メモリ肥大: /compact、タスク間の再起動、ビルドディレクトリの .gitignore、次に --safe-mode、そして証拠として /heapdump。
- ハングは会話の喪失ではありません — Ctrl+C、次にターミナルを再起動、そして同じディレクトリで claude --resume。
- Autocompactのスラッシングは、大きすぎる読み込み1つがウィンドウを埋め直していることを意味します。分割して読む、フォーカス付きで /compact、あるいは読み込みをサブエージェントに委ねましょう。
- 検索が何も見つけないのは、たいてい同梱の ripgrep が実行できないためです: プラットフォームの ripgrep をインストールし、かつ USE_BUILTIN_RIPGREP=0 を設定しましょう。WSLではファイルシステム境界のペナルティが原因で、しかも claude doctor は Search を OK と報告し続けます。
理解度チェック
0/5次へ
- Claudeはなぜそうしたのか? — ツールではなくモデルの挙動のトラブルシューティング
- コンテキスト管理 —
/compactと/clear、そしてセッションを軽く保つこと - エラーとレート制限 —
429、529、そしてAPIでのリトライ戦略 - MCPのトークンコスト — 接続したサーバーが静かに問題を起こしているとき