「Failed to resume the conversation」の対処法
claude --resumeのピッカーで出る「Failed to resume the conversation」の原因と対処、/resume内蔵ピッカーとの挙動の違いをまとめます。
claude --resumeのセッションピッカーで会話を選んだ直後に、次のメッセージが出て処理が止まることがあります。
Failed to resume the conversation.
Run claude --resume <session-id> to retry, or claude to start a new session.原因は保存済みの会話ファイル(トランスクリプト)を読み込めなかったことで、対処はメッセージが示すとおりリトライか新規セッションの二択です。この記事では発生条件・実行中セッション内で出る別バージョンとの違い・保存場所を含めてたどります。
「Failed to resume the conversation」の意味
このメッセージは、claude --resumeのピッカーから選んだセッションの保存済みトランスクリプトを、Claude Codeが読み込めなかった(または処理できなかった)ときに表示されます。中途半端に読み込んだ状態で会話を続けるより、いったんプロセスを終了するという設計です。表示直後にプロセスは終了コード1で終わります。
このエラーは「セッションIDが見つからない」場合とは別物です。IDそのものが見つからないケースは「No conversation found with session ID」の対処で扱っています。今回のエラーは、ピッカー上には確かにセッションが表示され、選択もできたのに、いざ読み込む段階で失敗したときに出ます。
すぐに実行する対処
メッセージにそのまま従うのが最短です。まずは同じセッションIDでリトライします。
claude --resume <session-id>リトライしても同じエラーが出る場合は、そのトランスクリプトの読み込みを諦めて新規セッションを開始します。
claudeセッションIDは、直前に表示されたエラーメッセージの中にそのまま書かれています。ピッカーの表示から手作業でコピーする必要はありません。
claude --resumeのピッカーと/resumeの違い
同じ「resume失敗」でも、どこから操作したかで挙動が変わります。実行中のセッション内で/resumeコマンドを使い、その中で読み込みに失敗した場合は、プロセスごと終了せず、会話の中に失敗の報告だけが出ます。表示される文言も微妙に異なり、「the」が付きません。
| 操作した場所 | 表示される文言 | プロセスの扱い |
|---|---|---|
claude --resumeのピッカー(起動直後) | 表示される文言Failed to resume the conversation. | プロセスの扱い終了コード1でプロセス終了 |
実行中セッション内の/resume | 表示される文言Failed to resume conversation | プロセスの扱いプロセスは継続、いまの会話も維持 |
/resume内蔵ピッカーで失敗しても、いま進めている会話が消えるわけではありません。読み込みたかった別のセッションだけが開けなかった、という扱いです。作業中の会話を失いたくないなら、claude --resumeをコマンドラインから起動し直すよりも、実行中セッションの中で/resumeを試すほうが安全に切り分けられます。
なぜ読み込みに失敗するのか
公式ドキュメントは「保存済みトランスクリプトを読み込めなかった、または処理できなかった」とだけ説明しており、個別の破損原因までは列挙していません。実務でありうるのは、書き込み中にプロセスが強制終了してファイルが中途半端な状態になったケースや、ピッカーが一覧を表示した直後に該当ファイルが保持期間の掃除対象になって消えたケースです。切り分ける際は、まずファイルが実際に存在するか(保存先パスは後述)を確認し、存在するのに読み込めない場合は中身が壊れていないかを見るとよいでしょう。
トランスクリプトの保存先は~/.claude/projects/<プロジェクト名>/<セッションID>.jsonlです。保存先を変えている場合はCLAUDE_CONFIG_DIR環境変数で移動先を確認できます。既定の保持期間は30日で、settings.jsonのcleanupPeriodDaysで変更できます。長く再開する予定のセッションがあるなら、この保持期間を延ばしておくと選択肢が広がります。
リトライでも直らないときに知っておきたいこと
会話の生データそのものが完全に消えているとは限りません。保存先のパスが分かっていれば、.jsonlファイルの中身を直接開いて過去の発言を目視で確認することはできます。ただしこれはClaude Codeの正規の復旧手段ではなく、あくまで内容を読み返すための最終手段です。ファイル形式は内部仕様でバージョンごとに変わるため、これを前提にしたスクリプトは作らないほうが安全です。
会話の生データを機械的に取り出したいだけなら、/exportコマンドで人間が読める形式にエクスポートできます。読み込み自体が失敗している今回のケースでは/exportも使えないため、これは次回以降の備えとして覚えておくとよい習慣です。
claude -pやAgent SDKで作ったセッションを再開する場合
claude -pやAgent SDK経由で作ったセッションは、対話型のセッションピッカーには一覧表示されません。しかしセッションIDさえ分かっていれば、通常のセッションと同じようにclaude --resume <session-id>で再開でき、今回のエラーも同じ条件で起こり得ます。スクリプトから続きの質問を投げて構造化データで受け取りたい場合は、次のように--output-format jsonを組み合わせます。
claude -p --resume <session-id> --output-format json "続きの要約をお願いします"このコマンドが「Failed to resume the conversation」に相当するエラーで失敗した場合も、対処は対話型のときと同じです。IDを再指定してリトライし、直らなければ新規セッションとして仕切り直します。自動化パイプラインに組み込む場合は、リトライ失敗を検知して新規セッション開始にフォールバックする分岐を用意しておくと、処理が止まりません。
リトライが成功したときに出る別のダイアログ
リトライで読み込みに成功しても、それで即座に会話が再開しないことがあります。Pro / Maxプランでは、1時間以上操作しておらず、かつトークン数が10万を超えるセッションを再開すると、最初のメッセージを送る前に確認ダイアログが挟まります。プロンプトキャッシュがすでに切れているため、どの選択肢を選んでも次の1回は履歴全体を読み直す点は共通です。
- Resume from summary: その場で
/compact相当の要約処理を実行し、以降のリクエストは要約版の履歴を使う。トークン消費は抑えられるが、要約から漏れた細部は文脈に残らない - Resume full session as-is: 会話をそのまま読み込む。以降のリクエストはキャッシュが温まり直すまで、会話が長いほどコストが履歴サイズに比例する
- Don't ask me again: フル読み込みを選び、以降このダイアログ自体を表示しなくする
「Failed to resume the conversation」の失敗とは別の場面ですが、リトライ後に見覚えのないダイアログが出て戸惑うことがあるため、あらかじめ知っておくと判断が早くなります。
v2.1.216より前はどう違ったか
このエラーメッセージ自体は比較的新しい改善です。v2.1.216より前のバージョンでは、claude --resumeのピッカーで読み込みに失敗しても明確なエラーは出ませんでした。代わりに「Resuming conversation…」というスピナーが表示されたまま止まっていました。ユーザーは失敗したのか単に時間がかかっているのか判断できず、待ち続けるか強制終了するしかありませんでした。現在のバージョンでは失敗を即座に報告し、リトライのコマンドまで提示するようになっています。
よくある質問
Failed to resume the conversationとFailed to resume conversationは同じエラーですか
表示される場面が異なります。前者はclaude --resumeのピッカーから起動した直後に出て、プロセスが終了コード1で終わります。後者は実行中セッション内の/resumeで出て、プロセスは終了せず、いまの会話も維持されたままです。
セッションIDはどこで確認できますか
エラーメッセージ内に該当のIDがそのまま表示されるので、そこからコピーできます。非対話実行のスクリプトからIDを取得したい場合は、--output-format jsonの出力に含まれるsession_idフィールドを参照します。GitHub Actions等でヘッドレス実行する場合の詳細はClaude CodeをGitHub Actionsに組み込むにまとめています。
リトライを何度繰り返せば直りますか
公式が案内しているのは「リトライ、それでもだめなら新規セッション」という手順で、回数の目安は示されていません。トランスクリプトの読み込み失敗は一時的な通信エラーとは性質が異なるため、1〜2回試して状況が変わらなければ、前述のとおりファイルの手動確認か新規セッションへの切り替えに進むのが早いです。
/rewindや/branchでこのエラーを避けられますか
/rewindはチェックポイントへの巻き戻し、/branchは会話の分岐であり、どちらも今回の読み込み失敗とは別の仕組みです。会話を安全に区切っておきたい場合の考え方はClaude Code rewindコマンドで/clear前まで戻るで扱っています。
claude --continueでも同じ現象は起きますか
公式ドキュメントが明記しているのはclaude --resumeのピッカーと/resumeの2パターンだけです。ただしclaude --continueもカレントディレクトリの最新セッションを自動選択して読み込む点は同じ処理です。対象のトランスクリプトに問題があれば、同種の失敗が起きても不思議ではありません。遭遇したら同じ対処(セッションIDを指定したリトライ、それでも直らなければ新規セッション)で切り分けられます。
まとめ
「Failed to resume the conversation」は、claude --resumeのピッカーが選んだセッションのトランスクリプトを読み込めなかったときに出ます。まずは同じセッションIDでのリトライ、それでも直らなければclaudeで新規セッションを開始するのが公式の案内です。実行中セッション内の/resumeで起きる失敗は文言も挙動も別物で、いまの会話には影響しません。読み込みに失敗しやすい状況を減らしたいなら、保持期間の設定と保存先を一度確認しておく価値があります。一般的なエラーの切り分け方はClaude Codeでよくあるエラー10選も参考になります。