Claude Code がセッション ID を検索する仕組み
セッションはプロジェクトごとに保存されます。Anthropic のセッションドキュメントによると、Claude Code は履歴を「~/.claude/projects/<project>/<session-id>.jsonl に JSONL として保存します。ここで <project> は、英数字以外の文字を - に置き換えたワーキングディレクトリのパスです」。
ID 指定で再開(resume)する場合、Claude Code は以下の固定された順序で検索します:
- 現在のプロジェクトディレクトリとその git worktree
- このマシン上の他のすべてのプロジェクト
Anthropic は 2 番目のステップに条件を加えています。「プロジェクトをまたいだ検索で ID が解決されるのは、他のプロジェクトの中にその ID のメッセージを含む履歴がちょうど 1 つだけ存在する場合のみです。手動でコピーした重複がある場合、Claude Code は任意のコピーを再開するのではなく、見つからないと報告します」。
ここではバージョンが重要です。エラーリファレンスには次のように記されています。「v2.1.223 より前のバージョンでは、検索は現在のプロジェクトディレクトリとその git worktree で停止していたため、最後にセッションが動作していたディレクトリから再開してください」。古いバージョンでは、別のフォルダからコマンドを実行するだけでこのエラーが発生します。
原因 1: ID が間違っている
最も単純な原因は、ID の入力ミスまたは間違いです。対話形式で開始したセッションの場合、ID は Claude Code 内に表示されます。非対話形式の実行について、Anthropic は「ID は --output-format json 出力の session_id フィールドである」と述べています。
以下の 2 つの詳細により、ID を間違えやすくなります:
- 表示名は ID ではない。 名前を付けていないセッションには、フォルダ名に短いサフィックスが付いたようなデフォルトの表示名が割り当てられます。Anthropic は次のように述べています。「デフォルト名は再開用のハンドルではありません。これを
claude --resumeや/resumeに渡しても、Claude Code はセッションを見つけられません」。 - 生成されたタイトルは機能するが、名前としてのみ。 「生成されたタイトルのみが再開用ハンドルとして機能します」。名前による再開は、現在のリポジトリとその worktree 内で解決され、マシン上のすべてのプロジェクトを対象とはしません。
原因 2: 30日後に履歴が削除された
この原因は見落とされがちです。なぜなら、クリーンアップはサイレントに行われるからです。エラーリファレンスにははっきりと記載されています。「Claude Code は、保持期間(デフォルトで 30 日)が経過した後、保持スイープルールに従って履歴を削除します」。
これを制御する設定は cleanupPeriodDays です。Anthropic の設定リファレンスではその動作を説明しています。Claude Code は「セッション履歴およびその他のアプリケーションデータ」を指定された日数保持し、「スイープはメッセージを表示せずに履歴を削除します」。デフォルトは 30 で、最小値は 1 です。
つまり、最後に触れてから 1 ヶ月以上経過したセッションは、単に消滅している可能性があります。削除時にメッセージは出ないため、このエラーが最初の兆候となることがあります。
関連する 2 つのポイント:
- Desktop および Cowork セッションは扱いが異なります。 デフォルトでは、Claude Desktop または Cowork で開始または直近に継続したセッションの履歴は、この期間を過ぎても保持されます。別の設定
desktopSessionCleanupPeriodDaysでこれらに有効期限を設定できます。 - 履歴をより長く保持できる。
0を設定するとバリデーションに失敗するため、Anthropic は「長期保持のために3650などの大きな値」を設定することを推奨しています。
値を大きくしても、現在存在している履歴しか保護されません。一度スイープによって削除されたものは、設定を変更しても戻ってきません。
原因 3: 別のマシンで実行されたセッションである
履歴は同期されません。エラーリファレンスには「Claude Code は履歴をローカルに保存するため、セッションが実行されたマシンで再開してください」とあります。
仕事用のノート PC で開始したセッションをデスクトップで再開しようとしても、何も見つかりません。解決策は、それが実行された場所で再開することです。マシン間で頻繁に作業を移動させる場合は、Claude Code のセッション履歴の検索、再開、削除 に関するガイドで、各マシンの履歴の保存場所を確認してください。
原因 4: 2 つのコピーが同じ ID を持っている
プロジェクトフォルダを ~/.claude/projects 以下にコピーした場合、2 つの履歴が同じ ID を持つことになります。Anthropic によれば、この場合「Claude Code は一方のコピーを任意に再開するのではなく、このメッセージ(見つからない)を報告します」。
解決策は、重複したコピーを削除または名前変更して、その ID を持つ履歴が 1 つだけになるようにしてから、再度再開を試みることです。
ピッカーに表示されないセッション
一部のセッションは意図的にセッションピッカーから除外されており、紛失したように見えることがあります:
-pおよび Agent SDK セッション。 「Claude Code は、claude -pまたは Agent SDK で作成されたセッションをセッションピッカーおよびclaude --continueから除外します」。これらはセッション ID を渡すことで再開可能です。/loopセッション。 最初のプロンプトが/loopコマンドであったセッションはピッカーに表示されず、claude --continueでもスキップされます。- 実行中のバックグラウンドセッション。
claude --continueは終了したバックグラウンドセッションを開きますが、実行中のものは開きません。その場合、Claude Code は終了し、セッションがバックグラウンドで実行中であることとその ID を通知します。
-p や SDK での実行については、エラーリファレンスのアドバイスに従い、「元の実行時に出力された session_id と ID を再確認」してください。
このマシンのすべてのプロジェクトを検索する方法
対話型セッションの場合、セッションピッカーは現在のフォルダ以外も検索できます。Anthropic のセッションドキュメントでは、デフォルトで表示される内容を説明しています:現在の worktree のセッション(バックグラウンドセッションを含む)、および /add-dir で現在のディレクトリを追加したセッションです。
検索範囲を広げるには:
- 「
Ctrl+Wを使用してリポジトリのすべての worktree に広げるか、Ctrl+Aを使用してこのマシン上のすべてのプロジェクトに広げます」。
したがって、対話型セッションにおけるこのエラーの文書化された修正方法は、「claude --resume でセッションピッカーを開き、Ctrl+A を押してこのマシン上のすべてのプロジェクトに広げ、セッションを選択する」ことです。
無関係なプロジェクトからセッションを選択した場合、Claude Code はそれを移動させません。代わりに「cd と resume コマンドをクリップボードにコピーします」。そのプロジェクトのディレクトリが既に存在しない場合は、現在のディレクトリでセッションを再開します。
似ているが意味が異なるメッセージ
いくつかのエラーは似て見えますが、原因が異なります。
Failed to resume the conversation(会話の再開に失敗しました)。 これは Claude Code がセッションを見つけたものの、「保存された履歴を読み取ることや処理することができなかった」ことを意味します。不完全にロードされた状態で続行するのではなく終了し、メッセージには再試行コマンドが含まれます。Anthropic の手順:セッション ID で再試行する。v2.1.285 より前のバージョンの場合は、アップデートして再度再開する(「それらのバージョンは、保存された履歴に読み取れないエントリが含まれていると再開に失敗する」ため)。それでも失敗する場合は、新しいセッションを開始する。
The saved conversation is no longer on disk(保存された会話がディスク上にありません)。 これはバックグラウンドセッション用です。セッションが「バックグラウンドサービスがオフの間に終了し、その後、履歴のクリーンアップによって保存された会話が削除された場合(例:マシンが数週間オフだった後)」に表示されます。Claude Code はセッションの元のプロンプトを再実行するのではなく、拒否します。claude rm でその行を削除するか、claude respawn で元のプロンプトを新しい会話として再度実行できます。
The session has no saved transcript(セッションに保存された履歴がありません)。 これは、バックグラウンドに移動させたセッションにアタッチしようとしたが、そのセッションが「自身のターンを実行する前に停止した」場合に表示されます。別の会話からバックグラウンド化された場合、Anthropic はその元の会話はまだ無傷であると記しています。
履歴が保持するもの、保持しないもの
再開が成功すると、会話が戻ってきます。Anthropic のディレクトリリファレンスによると、履歴には「メッセージ、ツール呼び出し、およびツールの結果」が含まれます。これが、履歴を失うと痛手となる理由です。それはセッションの完全な作業記録だからです。内容の詳細については、Claude Code の transcript view が表示するもの に関するガイドを参照してください。
しかし、履歴は 1 台のマシン上のファイルであり、デフォルトの寿命は 30 日です。到達した決定、却下したアプローチ、特定したバグの原因など、そのセッションを超えて重要な部分は、他の場所にも書き留めておかない限り安全ではありません。
よくある間違い
表示名を貼り付けている。 デフォルトの表示名は再開用ハンドルではありません。
古いバージョンで別のフォルダからコマンドを実行している。 v2.1.223 より前では、他のプロジェクトを検索しませんでした。
1ヶ月前のセッションを探している。 履歴はデフォルトで 30 日後にメッセージなしで削除されます。
別のマシンで再開しようとしている。 履歴はローカルに保存されます。
バックアップとしてプロジェクトフォルダをコピーしている。 ID が重複すると、Claude Code は「見つからない」と報告します。
解決策:セッションを見つけるか、重要な情報を回収する
ステップ 1: ID を確認する
表示名ではなく、Claude Code が表示した ID、または -p 実行時の JSON 出力に含まれる session_id を使用してください。
ステップ 2: ピッカーの範囲を広げる
claude --resume を実行し、Ctrl+A を押してこのマシン上のすべてのプロジェクトを検索します。
ステップ 3: マシンと経過日数を確認する
セッションが実行されたマシンで再開してください。cleanupPeriodDays よりも古い場合は、履歴が消去されたものと考えてください。
ステップ 4: 古いセッションが必要な場合は保持期間を延ばす
設定で cleanupPeriodDays を大きな数値に設定し、今後の履歴をより長く保持するようにします。
ステップ 5: 失いたくない情報を書き留める
重要なセッションの後は、決定事項や調査結果を履歴以外の場所に記録してください。
MemoryLake でのセットアップ
履歴はセッションの完全な記録ですが、デフォルトでは 1 台のマシンに 30 日間しか保持されません。決定事項、根本原因、合意した規約など、来月必要になる数少ない情報は、期限切れにならない場所に書き留めておく価値があります。
MemoryLake は、決定事項、調査結果、規約などのプロジェクトのコンテキスト(context)のための記憶レイヤーです。一箇所で管理し、ChatGPT、Claude Code、Codex などの接続したアシスタントから利用できます。
エントリはあなた自身の言葉で書きます。セッション履歴、~/.claude フォルダ、セッションピッカー、CLAUDE.md ファイル、自動記憶、またはベンダーのストレージから読み取られたり、書き込まれたり、削除されたりすることはありません。再開、保持、クリーンアップは Anthropic が説明している通りに機能します。
ステップ 1: API キーを作成する
サインインしてダッシュボードからキーを生成します。他の認証情報と同様に、リポジトリの外に保存してください。

ステップ 2: 最初の記憶をアップロードする
解決策のステップ 5 で書いた内容から始めましょう。重要だったセッションの決定事項、根本原因、規約などです。1 エントリにつき 1 項目にします。

ステップ 3: AI とエージェントを接続する
Claude Code やその他の使用しているアシスタントを接続します。どのマシンからでも、新しいセッションで同じエントリを利用できます。

実践で何が変わるか
第一の違いは、再開(resume)への依存度が下がることです。履歴が消えても、結論は残ります。
第二に、すべてのマシンで同じコンテキスト(context)を利用できることです。エントリはセッションが実行されたフォルダに縛られません。
第三に、保持期間との競争がなくなることです。あなたが書いた内容は cleanupPeriodDays に左右されません。
Claude Code セッション再開のベストプラクティス
重要なセッションには名前を付ける。 claude -n または /rename を使用し、名前で再開します。
実際のセッション ID を控えておく。 表示名は再開用ハンドルとして機能しません。
ピッカーで Ctrl+A を活用する。 マシン上のすべてのプロジェクトを検索します。
保持期間を把握する。 履歴はデフォルトで 30 日後に削除されます。
プロジェクトフォルダを複製しない。 1 つの ID に 2 つのコピーがあると、再開時に「見つからない」と報告されます。
失敗した再開をリトライする前にアップデートする。 古いバージョンは読み取れないエントリがあると失敗します。
結果を書き留める。 履歴だけが唯一の記録であってはなりません。
結論
Claude Code で claude --resume にセッション ID を渡した際、一致する保存済み履歴がない場合に「no-conversation-found」エラーが表示されます。v2.1.223 以降では、まず現在のプロジェクトを検索し、次にマシン上の他のすべてのプロジェクトを検索します。文書化されている原因は、ID の入力ミス、30 日間のデフォルト保持期間を過ぎた履歴の削除、別のマシンでの実行、および同じ ID を持つ重複コピーです。
復旧するには、ID を確認し、claude --resume でピッカーを開いて Ctrl+A を押し、セッションが実行されたマシンで再開してください。履歴が期限切れで消去された場合は復元できないため、将来のために cleanupPeriodDays を増やし、重要なセッションの決定事項は履歴の外に書き留めておくようにしましょう。