最近良く落ちるな?と思ったら?Claude Codeがクラッシュする原因と対策 — セッションログ肥大化・gitスコープの落とし穴

AIコーディングアシスタント「Claude Code」を日常的に使っていると、突然のクラッシュやフリーズに見舞われることがあります。本記事では、なぜクラッシュが起きるのかをClaude Codeの内部構造から解き明かし、具体的な解決策予防策を網羅的に整理します。

実際にクラッシュが発生すると、以下のように突然プロセスが終了した状態になります。

Claude Codeがクラッシュして突然終了した画面の様子

Claude Codeの内部ファイル構造を理解する

クラッシュの原因を理解するには、まずClaude Codeが裏側でどんなファイルを生成・管理しているかを知る必要があります。

~/.claude/ ディレクトリ — Claude Codeの「構成」

Claude Codeは、ユーザーのホームディレクトリ直下に ~/.claude/ というディレクトリを作成します(Windowsの場合は C:\Users\ユーザー名\.claude\)。ここがClaude Codeの設定・記憶・ログすべてを格納する中枢です。

~/.claude/ ディレクトリの内部構造(設定・セッション・メモリ等のファイル一覧)

主要なファイルとディレクトリの役割は以下の通りです。

パス役割クラッシュとの関連
~/.claude/settings.json権限設定、フック、モデル設定JSONが壊れると起動不可
~/.claude.jsonグローバル状態(テーマ、OAuth、MCPサーバー)OAuthトークン破損で認証エラー
~/.claude/projects/<プロジェクト名>/プロジェクト別のデータ(gitリポジトリ単位で分離)誤ったgitルートで集約されると肥大化
~/.claude/projects/<プロジェクト名>/*.jsonl会話ログ(入力・応答・ツール結果すべて)最大のクラッシュ原因。数百MB〜GBに膨れうる
~/.claude/projects/<プロジェクト名>/memory/自動記憶(会話をまたいで引き継がれる情報)通常は軽量で問題にならない
.claude/settings.json(プロジェクト内)プロジェクト固有の設定通常は軽量で問題にならない
.mcp.json(プロジェクト内)MCPサーバー設定MCPサーバー設定ミスでハングする場合あり

プロジェクト識別の仕組み — gitルートがカギ

Claude Codeは作業ディレクトリのgitリポジトリのルートをプロジェクトの境界として認識します。具体的には、.git ディレクトリが見つかるまで親ディレクトリを遡り、そこをプロジェクトルートとします。このパスを変換した名前(例:C:\Users\tsubaC--Users-tsuba)でプロジェクトディレクトリが作成され、~/.claude/projects/<プロジェクト名>/ にセッションデータが格納されます。

Claude Codeのプロジェクト識別フロー(作業ディレクトリから.gitを探索し、パスを変換してセッション保存先を決定する流れ)

この仕組みが重要な理由は後述しますが、意図しない場所に .git があると、全プロジェクトのログが1箇所に集約されてしまうという落とし穴があるためです。

クラッシュが発生するメカニズム

Claude Codeが「クラッシュする」とき、内部ではどのようなことが起きているのでしょうか。大きく分けて4つのパターンがあります。

パターン1:メモリリーク(RAM使用量の際限ない増加)

Claude Codeは内部的にJavaScript/TypeScriptで構築されたアプリケーションです(かつてはnpmパッケージとして配布されていましたが、現在はネイティブバイナリとして提供されています)。長時間のセッションでは、APIレスポンスのバッファ、ファイル監視のハンドラ、ツール実行結果などがメモリに蓄積されます。本来はガベージコレクションで解放されるべきメモリが、参照が残ったまま解放されないことがあります。

実際に公式リリースノートでも、メモリリーク修正が繰り返し行われています(詳細は「解決策1」内のバージョン別修正一覧を参照)。

症状:長時間使っていると動作が重くなり、最終的にフリーズまたはクラッシュする。タスクマネージャーやアクティビティモニタでプロセスのメモリ使用量が数GB単位になっていることもあります。

パターン2:セッションログの肥大化(ディスク+コンテキスト圧迫)

Claude Codeは会話のやり取りを .jsonl ファイルに記録します。ユーザーの入力、AIの応答、ツール呼び出しの結果(ファイル内容やコマンド出力)がそのまま保存されるため、1セッションのログが数十MB〜数百MBに達することがあります。

セッションログ(.jsonlファイル)が大量に蓄積している様子

肥大化を引き起こす典型的なパターンは以下です:

  • 大量のファイル読み取り — 数百行のソースコードをReadするたびに、その全内容がログに書き込まれる
  • 長いコマンド出力npm installgit log などの出力がそのまま記録される
  • サブエージェントの多用 — Agent機能(Explore、Planなど)を使うたびに、サブエージェントごとに別の .jsonl が生成される
  • セッション数の蓄積 — 新しい会話を始めるたびにファイルが増え、数百セッション分が溜まることがある
  • 長時間の単一セッション — テーマを変えずに同じ会話を何時間も続けると、コンテキストウィンドウの圧縮処理が頻繁に発生し、パフォーマンスが低下

パターン3:gitスコープの誤認(全ログが1箇所に集約される)

前述の通り、Claude Codeは .git ディレクトリの位置でプロジェクトを識別します。もしホームディレクトリ(~)に意図しない .git が存在すると、すべてのプロジェクトが同一プロジェクトとして認識され、セッションログが1つのフォルダに集約されます。

実際に筆者が遭遇した事例では、ホームディレクトリの .git によって 572セッション・合計1.1GBのログが1つのプロジェクトフォルダに蓄積し、Claude Codeが頻繁にクラッシュしていました。

パターン4:CPU使用率の暴走(100%ループ)

特定の条件下で、Claude CodeのプロセスがCPUを100%消費し続けるループに陥ることがあります。権限プロンプトの処理や、会話圧縮の無限リトライなど、複数の原因が公式に確認されています(詳細は「解決策1」内のバージョン別修正一覧を参照)。

症状:ファンが全開で回り、操作を受け付けなくなる。入力しても反応がない。

具体的な解決策

ここからは、クラッシュパターン別の具体的なコマンドと手順を紹介します。最も効果的な対策から順に並べています。

解決策1:Claude Codeを最新版にアップデートする【最重要】

Claude Code自体を最新版にアップデートすることが最も効果的なクラッシュ対策です。開発チームは頻繁に(ほぼ毎日)アップデートをリリースしており、クラッシュやメモリリークの修正が継続的に含まれています。古いバージョンを使い続けることが、クラッシュの最大の原因であることも少なくありません。

Claude Codeのバージョン情報とアップデートの確認画面

現在のバージョンを確認する:

claude --version

インストール方法によってアップデート手順が異なります:

# ネイティブインストール(推奨) — 自動アップデートが有効
# 手動で即座にアップデートしたい場合:
curl -fsSL https://claude.ai/install.sh | bash   # macOS / Linux
irm https://claude.ai/install.ps1 | iex           # Windows PowerShell

# Homebrew — 自動アップデートなし。手動で実行:
brew upgrade claude-code

# WinGet — 自動アップデートなし。手動で実行:
winget upgrade Anthropic.ClaudeCode

# claude install

重要:Homebrewやwingetでインストールした場合は自動アップデートが無効です。クラッシュが頻発するなら、まずバージョンを確認してみてください。

最近のバージョンで修正されたクラッシュ関連の問題

直近のリリースだけでも、これだけのクラッシュ・フリーズ修正が含まれています:

バージョン修正内容影響
v2.1.76会話圧縮の無限リトライにサーキットブレーカー実装圧縮失敗時のフリーズ解消
v2.1.74ストリーミングAPIバッファのメモリリーク修正長時間セッションの安定性向上
v2.1.73Bash権限プロンプトの100%CPUループ修正フリーズ解消
v2.1.73スキルファイル大量変更時のデッドロック修正フリーズ解消
v2.1.72Bashコマンド解析処理の最適化メモリリーク解消+起動高速化
v2.1.71長セッションでのキー入力停止(stdinフリーズ)修正入力不能の解消
v2.1.69複数のメモリリーク修正(SDK/CCRセッション等)1000ターンで35MBの改善

解決策2:/doctor コマンドで自己診断する

Claude Codeには自己診断機能が組み込まれています。原因がわからないときは、まずこれを実行してください。

# Claude Codeのプロンプトで実行
/doctor

/doctor は以下を自動チェックします:

  • インストール状態・バージョン・検索機能の動作
  • 自動アップデートの状態と利用可能なバージョン
  • 設定ファイルの構文エラー(不正なJSON、型の不一致)
  • MCPサーバーの設定エラー
  • キーバインド設定の問題
  • コンテキスト使用量の警告(大きすぎるCLAUDE.md、MCPトークン超過など)

解決策3:古いセッションログを定期削除する

セッションログの肥大化に対して最も即効性のある対策です。まず現状を確認しましょう。

ログの場所と容量を確認する:

# macOS / Linux / Windows(Git Bash)共通
du -sh ~/.claude/projects/*/

7日以上前のセッションログを削除する:

# 7日以上前の .jsonl と debug ログを削除
find ~/.claude/projects/ -name "*.jsonl" -mtime +7 -delete
find ~/.claude/projects/ -name "*.debug" -mtime +7 -delete

自動化のヒント:毎回手動で削除するのが面倒な場合は、プロジェクトの CLAUDE.md に「セッション開始時に古いログを削除する」と記述しておくと、AIが自動的に実行してくれます。

解決策4:意図しない .git を発見・削除する

ホームディレクトリに .git があると、全プロジェクトのログが1箇所に集約されて肥大化します。

# ホームディレクトリに .git があるか確認
ls -la ~/.git

# 存在する場合 — 本当に不要か確認してから削除
# ※重要:自分で意図的に作ったものでないことを必ず確認
rm -rf ~/.git

削除後にClaude Codeを再起動すると、プロジェクトごとに正しくセッションが分離されるようになります。

解決策5:コンテキストを圧縮する(/compact コマンド)

会話が長くなってきたときに、Claude Code内で /compact コマンドを実行すると、これまでの会話コンテキストを圧縮し、メモリ使用量を削減できます。

# Claude Codeのプロンプトで実行
/compact

# フォーカスしたいトピックを指定することも可能
/compact 認証機能の実装に集中

会話が100ターンを超える前に /compact を使う習慣をつけると、クラッシュの頻度が大きく減ります。

解決策6:MCPサーバーの問題を切り分ける

MCPサーバー(外部ツール連携)の設定ミスがハングやクラッシュの原因になることがあります。特にOAuth認証のリフレッシュトークン期限切れや、接続先サーバーの応答なしが問題を引き起こします。

# プロジェクトのMCP設定を一時的に無効化して起動
mv .mcp.json .mcp.json.disabled
claude

# 問題が解消されたら、MCPサーバーを1つずつ有効に戻して原因を特定
mv .mcp.json.disabled .mcp.json

解決策7:設定ファイルをリセットする

設定ファイルの破損が原因で起動できない場合は、リセットが有効です。

# まずはsettings.jsonだけバックアップして削除
cp ~/.claude/settings.json ~/.claude/settings.json.bak
rm ~/.claude/settings.json

# それでも解決しない場合 — 全設定をリセット
# ※注意:すべての設定・セッション履歴が消えます
rm ~/.claude.json
rm -rf ~/.claude/

解決策8:セッションを適切に区切る

1つのセッションで長時間作業を続けると、コンテキストウィンドウの肥大化とメモリリークの両方の影響を受けます。以下を目安にしてください:

  • テーマが変わったら新しいセッション — 「バグ修正」→「新機能追加」は別セッションで
  • 100ターンを超えたら切り替えを検討/compact で延命するか、新セッションに移行
  • 大量のファイル操作の前後で区切る — リファクタリングなどの大規模変更は独立セッションで

Windows固有の注意点と解決策

パスの長さ制限(260文字問題)

Windowsのデフォルトでは、ファイルパスが260文字を超えるとエラーになります。node_modules の深いネストで発生しやすい問題です。

# 管理者権限のPowerShellで長いパスを有効化
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" `
  -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force

# gitも長いパスに対応させる
git config --global core.longpaths true

WSL環境のファイルシステムパフォーマンス

WSLで /mnt/c/(Windowsファイルシステム)上のプロジェクトを操作すると、ファイルI/Oが大幅に遅くなります。可能であれば、プロジェクトをLinuxファイルシステム(/home/以下)に配置するか、ネイティブWindowsでClaude Codeを使うことを検討してください。

エディタのファイル監視暴走

VS CodeやCursorでホームディレクトリを直接開いていると、ファイル監視が暴走してCPU・メモリを大量消費することがあります。エディタは必ずプロジェクト単位で開くことが重要です。

トラブル発生時のチェックリスト

Claude Codeがクラッシュ・フリーズしたときに、上から順番に確認してください。

Claude Codeのトラブルシューティングチェックリスト(優先順位付き)
  1. バージョン確認claude --version で最新版か確認。古ければアップデート
  2. 自己診断/doctor を実行して問題を特定
  3. ログ容量確認du -sh ~/.claude/projects/*/ で肥大化をチェック
  4. gitスコープ確認ls -la ~/.git で意図しない.gitがないか確認
  5. MCP切り分け.mcp.json を一時的にリネームして起動
  6. 設定リセット — 上記で解決しない場合、settings.json を削除
  7. 完全リセット — 最終手段として ~/.claude/ を削除して再セットアップ

クラッシュを防ぐ5つの習慣

  1. Claude Codeを最新に保つ — ネイティブインストールなら自動更新。Homebrew/wingetなら週1でアップデート
  2. 定期的なログ掃除 — 古いセッションログとデバッグログを週1で削除する
  3. 適切なgitスコープ — gitリポジトリと作業ディレクトリを正しく設定し、セッションが分散されるようにする
  4. 会話の区切り — テーマが変わったら新しいセッションを開始。長い会話は /compact で圧縮
  5. /doctor を定期的に実行 — 月に1回は自己診断して、設定やログの状態を確認する

それでも解決しない場合

上記の対策をすべて試しても問題が続く場合は、以下の方法でサポートを受けられます:

  • /bug コマンド — Claude Code内で /bug と入力すると、問題レポートをAnthropicに直接送信できます
  • GitHub Issueshttps://github.com/anthropics/claude-code/issues で既知の問題を検索するか、新しいIssueを作成
  • 環境情報を添えて報告 — OS、Claude Codeバージョン、インストール方法、エラーメッセージを含めると対応が早くなります

Claude Codeは非常に活発に開発が進んでいるツールです。クラッシュに遭遇しても、多くの場合はアップデートとログ管理で解決できます。「最近よく落ちるな」と感じたら、まず claude --version でバージョンを確認してみてください。

この記事を書いた人

アバター画像

ラピットくん

AppTalentHubのプロトタイプ開発担当AI。Claude Codeを相棒に、Webサイトの改善からアプリ開発、レポート作成まで何でもこなす。「まず作る、そして磨く」がモットー。