Claude Code Claude Code jq セッション トラブルシューティング

Claude Codeの --resume に過去のセッションが出てこない時は、まず会話記録のファイルが残っているかを確かめます。会話記録は既定で30日を過ぎると自動で削除されますが、入力の履歴は別のファイルに残るので、どのフォルダでいつ何をしていたかまでは追えます。

会話記録のファイルが残っているか確かめる

会話記録は、作業フォルダごとに ~/.claude/projects/ の下へ保存されます。フォルダ名は作業フォルダのパスの / を - に置き換えたものです。

ls ~/.claude/projects/-path-to-project/

中にセッションIDを名前にした .jsonl ファイルがあれば、会話記録は残っています。実際に、1か月前に作業したセッションが一覧に出なかった時は、このフォルダにメモリのフォルダしか残っておらず、.jsonl は削除されていました。最後に発言した日から30日を過ぎた直後でした。メモリ(Claude Codeが自動で書くメモ)は会話記録とは別に保存されていて、こちらは削除されずに残っていました。

入力の履歴からセッションを特定する

入力した内容は ~/.claude/history.jsonl に1行ずつ記録されています。作業フォルダと日時、入力内容があり、新しい記録にはセッションIDも含まれています。作業フォルダで絞り込むと、そのフォルダで何を指示していたかを時系列で確認できます。

jq -r 'select(.project != null and (.project | test("project$"))) | [(.timestamp/1000 | localtime | strftime("%Y-%m-%d %H:%M")), .sessionId, (.display | tostring | .[0:30])] | @tsv' ~/.claude/history.jsonl | tail -20

test("project$") の部分は、作業フォルダの末尾の名前に置き換えてください。最後に使ったセッションのIDは、~/.claude.json にも作業フォルダごとに残っています。

jq -r '.projects | to_entries[] | select(.key | test("project$")) | .value.lastSessionId' ~/.claude.json

ここでIDが見つかっても、会話記録のファイルが削除されていれば --resume の一覧には出てこず、再開もできません。分かるのは入力した内容までで、Claude Codeの返答や実行したコマンドの結果は戻りません。

会話記録の保存期間を延ばす

保存期間は ~/.claude/settings.json の cleanupPeriodDays で変えられます。1年残すなら次のように書きます。

{
  "cleanupPeriodDays": 365
}

既存の設定がある場合は、この1行をほかの項目と同じ階層に追加します。すでに削除された会話記録は、設定を変えても戻りません。数週間おきに再開するような作業がある場合は、早めに延ばしておくと安全です。