v2.1.304 での変更点
リリースノートは1行ですが、そこには3つの重要なポイントが含まれています。
対象となるユーザー。 この警告は Pro および Max プランに適用され、これらのプランに設定されている5時間の利用制限に対するコストを測定します。リリースノートには、他のプランや API キーでのサインインについては言及されていません。
表示されるタイミング。 非アクティブな会話を再開する際、それが5時間の制限の「顕著な割合を消費する」場合に表示されます。具体的なしきい値は記載されていません。後述する仕組みから考えると、キャッシュの有効期限を超えて長時間放置されたセッションがこれに該当します。
提供される選択肢。 「そのまま再開する」か、「新しい会話を開始し、言及した際に Claude に以前の会話を参照させる」かの2つの選択肢があります。後者は、古いセッションを再ロードするのではなく、参照用の資料として扱う方法です。
公式ドキュメントはまだこのリリースに対応していません。セッションに関するページには再開、ピッカー、ブランチについての説明はありますが、参照機能や警告についてはまだ記載されていません。現時点ではリリースノートを機能の説明として捉え、この記事の残りの部分を、なぜこの警告が存在するのかを理解するための背景知識としてお読みください。
再開後の最初のメッセージが高コストになる理由
Claude Code のプロンプトキャッシュに関するドキュメントには、その仕組みが直接説明されています。「セッションを再開すると、Claude Code は会話全体を再度送信し、リクエストはキャッシュから、変更されておらず、かつキャッシュの有効期限内にあるプレフィックス部分を読み取ります。」
重要なのは「キャッシュの有効期限(ライフタイム)」です。作業中は、各リクエストがすでに処理された会話を再利用するため、安価なキャッシュ料金が適用されます。しかし、作業を中断すると、キャッシュのカウントダウンが始まります。コストに関するページには、「キャッシュの有効期限を超える休憩の後の最初のメッセージは、キャッシュミスとなり、コンテキスト全体を再処理します」と明記されています。
有効期限はどのくらいでしょうか?サブスクリプションの場合、「サブスクリプションでは1時間で、利用クレジットを消費し始めると5分に短縮されます」。プロンプトキャッシュのページに完全な表がありますが、プランの利用枠内にある Claude サブスクリプションでは、メインの会話はデフォルトで1時間保持されます。API キーまたはクラウドプロバイダーを使用している場合、デフォルトは5分です。
したがって、高コストになるケースは予測可能です。サブスクリプションで1時間以上放置したセッションには、ウォームキャッシュ(有効なキャッシュ)が残っていません。これを再開すると、すべてのツール出力や読み込まれたファイルを含む会話全体が新しい入力として再送信され、セッションが大きければ大きいほど、その最初の入力リクエストも大きくなります。
多くの人が最初に行う対策が、実は最も高コスト
肥大化した古いセッションに直面したとき、自然な対応は、セッションを再開してすぐに /compact を実行し、これ以上の作業を行う前に会話を小さくすることでしょう。しかし、ドキュメントによると、これは間違った手順です。
圧縮(Compaction)は、同じ履歴を持つ要約リクエストを送信することで機能します。キャッシュがウォームな状態であれば、そのリクエストは履歴の大部分をキャッシュから読み取ります。しかし、長い中断の後には、読み取るべきキャッシュが残っていません。「キャッシュの有効期限を超える中断の後、読み取るべきキャッシュは残っていないため、要約リクエストはキャッシュされていない入力として履歴全体を再処理します。これが、古いセッションを再開した直後の /compact が最も高コストになる理由です。」
コールド状態(キャッシュ切れ)での再開直後に圧縮を行うと、要約を作成するために古い会話の全コストを支払うことになります。コストを回避するどころか、前倒しで支払っているだけなのです。
巻き戻し(Rewind)にも同様の制限があります。ドキュメントでは、破棄したい作業プロセスに進んでしまった場合、圧縮よりも /rewind を推奨しています。その理由は「巻き戻しは、圧縮のように新しいプレフィックスを構築するのではなく、すでにキャッシュされているプレフィックスまで切り詰めるため」です。しかし、このアドバイスはキャッシュがウォームであることを前提としています。古いセッションでは、巻き戻し先となるキャッシュされたプレフィックスが存在しないため、この方法による節約効果は得られません。
コストページで唯一「無料」とされているアクションは、最初からやり直すことです。「継続性ではなく、新しくスタートしたい場合、 /clear はコストがかかりません」。これが、警告の2番目の選択肢の背景にあるロジックです。
再開されたセッションが復元するもの、新しいセッションが復元しないもの
セッションを再開する理由は、会話以上のものが復元されるからです。セッションのドキュメントには、復元される内容がリストアップされています。アクティブなゴール(目標)を設定したまま終了したセッションは、そのゴールを保持します。期限切れになっていないスケジュールされたタスクも復元されます。ターミナルから -p なしで ID または名前を指定して再開すると、セッションが設定されていた権限モードが復元されます。前のプロセスで終了したバックグラウンド処理は、未完了のメモとして表示され、「Claude は次のプロンプトでそれらを読み取ります。」
一部の要素は自動的には復元されません。ドキュメントによると、--mcp-config、--settings、--plugin-dir、--fallback-model、--add-dir などのフラグは再度渡す必要があり、「セッションの途中で /add-dir を使って追加されたディレクトリも復元されません」。設定ファイルは起動時に再読み込みされるため、そこに記述されている設定は問題ありません。
離れる前にセッションが圧縮されていた場合、復元される内容は短くなります。セッションのページによると、そのような会話は「Conversation compacted(会話が圧縮されました)の行から開きます。Claude は、最後の圧縮の要約、圧縮で要約されずに残ったメッセージ、およびそれ以降のすべてのメッセージを引き継いで続行します。」これは、ターミナルで長いセッションをアイドル状態のまま放置した場合に重要になります。Claude Code は、キャッシュが期限切れになる前に自動的に圧縮を行うことができます。プロンプトキャッシュのページによると、長い会話が1時間の TTL でアイドル状態になっている場合、「Claude Code はキャッシュが期限切れになる直前にそれを圧縮できます。」Claude Codeにおけるアイドル時の自動圧縮に関する解説記事では、この動作とそれをオフにする設定について説明しています。
新しいセッションは、これらの履歴を一切持たずに開始されます。Claude Code の仕組みは次のように説明されています。「新しいセッションはそれぞれ、前のセッションの会話履歴を持たない、新しいコンテキストウィンドウで開始されます。」ただし、プロジェクトのコンテキスト(すべてのセッションの開始時に読み込まれる CLAUDE.md ファイルや自動メモリなど)は保持され、これによって「Claude はセッション間で学習内容を維持する」ことができます。新しい警告は、3番目のソースとして、以前の会話そのものを追加します。これは全体を再ロードするのではなく、言及されたときにのみ参照されます。
古いセッションのコストを不必要に高めてしまう誤解
「新しい作業をしていないから、再開したセッションは安いはずだ」という誤解。 コストは新しい作業に対して発生するわけではありません。キャッシュが期限切れになった後に、会話全体が再送信されることに対して発生します。
「圧縮すればサイズを縮小できる」という誤解。 コールド状態のセッションで圧縮を実行すると、要約するためにすべての内容が一度読み込まれます。圧縮したい場合は、ドキュメントのヒントが推奨するように、作業を再開した後ではなく、作業中の自然な区切りのタイミングで行ってください。
「この警告はすべての環境に適用される」という誤解。 リリースノートでは、この警告の対象を Pro および Max プランに限定しています。API キー、クラウドプロバイダー、または利用クレジットを使用している場合、デフォルトのキャッシュ有効期限は5分であるため、より短い中断でもコールド再開のコストが発生します。その場合、プラン制限に関する警告は表示されません。
解決策:セッションの冷却度を確認し、必要なものを判断し、より良い引き継ぎを残す
ステップ 1:再開する前に、セッションのサイズと冷却度を確認する
セッションピッカーは、2つのシグナルを提供します。セッションのドキュメントによると、各行にはセッションの名前またはタイトルに加えて、「最後のアクティビティからの経過時間、git ブランチ、およびファイルサイズ」が表示されます。サブスクリプションで1時間以上アイドル状態だったセッションは、デフォルトのキャッシュ有効期限を過ぎています。ファイルサイズが大きいということは、最初の要求も大きくなることを意味します。
セッションから離れる前に /usage を実行すると、セッションブロックに Prompt cache (main) 行が表示されます(会話の最初の応答の後に追加されます)。コストに関するページによると、これは「現在キャッシュがウォームであるかどうか」を報告し、キャッシュがコールドである場合は「セッションがアイドル状態になってからの経過時間」を示します。この行の表示には、Claude Code v2.1.251 以降が必要です。
最初の要求を送信する前にトークン数を確認したい場合は、SessionStart フックで取得できます。セッション再開時、フックのドキュメントによると、フックは context_tokens(「再開されたセッションの最初の要求がプロンプトとして再送信するトークン」と説明されています)や prompt_cache_likely_expired などのフィールドを受け取ります。ドキュメントで推奨されている使い方は、「最初の要求の前に、古い会話を再開するコストを報告する」ことです。これらのフィールドも v2.1.251 以降が必要です。
ステップ 2:セッションの状態が必要な場合は再開し、結論が必要な場合は新しく始める
簡単に再構築できない状態(進行中のゴール、承認直前の計画、未完了のバックグラウンド処理、意図的に設定した権限モードなど)がセッションに含まれている場合は、コストを受け入れて再開します。これらのケースでは、復元された状態そのものに価値があります。再開後に反射的に /compact を実行するのは避け、そのまま作業を続けてください。
必要なものが「情報」である場合は、新しく始めます。警告の2番目の選択肢を選択し、最初のメッセージで古い作業から何を得たいかを指定します(どのような変更を行っていたか、どの手法を却下したか、どのテストが失敗していたかなど)。リリースノートには、Claude は「言及された場合に以前の会話を参照できる」とあります。具体的に指定することで、Claude が探すべき対象が明確になります。
古いセッションから1つの回答だけが必要な場合は、対話型モードに戻らずに質問することもできます。セッションのドキュメントでは、claude -p --resume にセッション ID を渡して「要約リクエストなどのフォローアッププロンプトを送信する」方法が説明されています。ただし、これも「再開」であるため、同じキャッシュルールが適用される点に注意してください。
ステップ 3:離れる前に、会話履歴を必要としない引き継ぎを残す
最も安価な再開とは、再開する必要がない状態にすることです。戻る予定のセッションから離れる前に、次の2つのことを行います。
名前を付ける。コストページでは、「クリアする前に /rename を使用して後でセッションを見つけられるようにし、その後 /resume で戻る」ことを推奨しています。
会話履歴を不要にするためのメモを残す。Claude に重要なポイントを CLAUDE.md や自動メモリに追加するよう依頼するか、自分で書き留めます(到達した決定、機能したコマンド、作業を停止したファイルなど)。これらは、新しいセッションが開始されるたびに読み込まれます。Claude Codeセッション間でのコンテキスト共有に関するガイドでは、これらの選択方法について説明しています。
API キーやクラウドプロバイダーでサインインしており、5分以上離れることが多い場合は、プロンプトキャッシュのページに記載されているメインの会話用の promptCacheTtl を設定できます。これを 1h に設定すると、キャッシュの書き込みレートは高くなりますが、キャッシュをより長くウォームに保つことができます。これはトレードオフであり、万能の解決策ではありません。
MemoryLake での設定方法
ステップ3の引き継ぎは、特定のセッションから独立した場所に存在するときに最も効果的です。会話履歴(トランスクリプト)には会話全体が含まれており、それを復元するにはコストがかかります。しかし、そこから必要な情報は、決定事項、その理由、そして残されたタスクといった短い内容であるはずです。
MemoryLake は、そのような結論を1つのリストとして維持するためのメモリレイヤーです。Claude Code や、接続している他のアシスタント(ChatGPT や Codex など)から利用できるため、新しいセッションをそこから開始できます。
エントリーは、ご自身の言葉で自分で記述します。セッションの会話履歴、~/.claude ディレクトリ、自動メモリ、CLAUDE.md ファイル、またはベンダーのストレージから何かが読み取られたり、書き込まれたり、削除されたりすることはありません。機密情報や認証情報は含めず、プロジェクトの詳細については組織のポリシーに従ってください。
ステップ 1:API キーを作成する
サインインし、ダッシュボードからキーを生成します。このキーは MemoryLake のワークスペースに属し、Anthropic のアカウントとは異なります。

ステップ 2:最初のメモリをアップロードする
最も頻繁に戻るセッションから始めます。それぞれのセッションについて、新しいセッションが必要とする情報(決定事項、理由、次のステップ)を記述します。1つのエントリーにつき1つのポイントを、日付と適用されるリポジトリとともに記載します。

ステップ 3:AI とエージェントを接続する
Claude Code や、使用している他のアシスタントを接続します。警告が表示されたとき、引き継ぎがすでに作成されているため、新しく始めることが容易になります。

実務における変化
第1の変化は、コストを支払う前にそれを確認できる点です。Pro および Max での警告、ピッカーに表示されるアイドル時間とファイルサイズ、そして /usage のキャッシュ行により、再開が低コストで済むか高コストになるかを事前に判断できます。
第2の変化は、二重にコストを支払うことがなくなる点です。コールドセッションを再開してから圧縮を行うと、要約を作成するために古い会話全体が読み込まれます。再開するか新しく始めるかを意図的に選択することで、これを回避できます。
第3の変化は、古いセッションが学習内容の唯一のコピーではなくなる点です。短い引き継ぎを残すことで、新しいセッションは結論から開始し、必要な場合にのみ残りの部分を参照できます。Claude Codeの自動圧縮時に保持すべきものに関するガイドでは、圧縮後も残る情報について説明しています。
Claude Code セッション再開のベストプラクティス
選択する前にピッカーを確認する。 アイドル時間とファイルサイズを確認すれば、警告が表示されるかどうかの大部分を予測できます。
コールド再開の直後に圧縮しない。 キャッシュがウォームな作業の区切りのタイミングで圧縮を行います。
状態が必要な場合は再開し、回答が必要な場合は新しく始める。 ゴール、計画、未完了のバックグラウンド処理は再開する価値があります。決定事項やコマンドの確認だけであれば、再開する必要はないかもしれません。
新しく始める場合は具体的に指定する。 Claude に参照させたい変更内容、ファイル、または決定事項を明記します。
離れる前に引き継ぎを書き留める。 CLAUDE.md や自動メモリへの数行の記述は、読み込みコストがかかりません。
結論
古い Claude Code セッションを再開すると、会話全体が再送信され、キャッシュの有効期限が過ぎている場合は全コストが発生します。サブスクリプションの場合、この有効期限はデフォルトで1時間です。Claude Code v2.1.304 では、再開によって5時間の制限の大部分が消費される場合に Pro および Max ユーザーに警告が表示されるようになり、言及されたときに古い会話を参照する新しい会話を開始するという2つ目の選択肢が提供されます。
セッションの状態を復元する必要がある場合は再開してください。結論が必要な場合は新しく始め、コールドセッションの圧縮は避けましょう。そして、離れる前に短い引き継ぎを残すことで、次のセッションで会話履歴が不要になります。セッションを別のコンピュータに移行する場合は、Claude Codeのセッションを別のマシンにエクスポートするためのガイドをご覧ください。