メインコンテンツへスキップ
セッションは、プロジェクトディレクトリに紐付けられた保存済みの会話です。Claude Code は作業中にセッションをローカルに保存するため、中断したところから再開したり、別のアプローチを試すために分岐したり、タスク間を切り替えたりできます。 デスクトップアプリ、Web 上の Claude Code、および VS Code 拡張機能はそれぞれ独自のセッション履歴を保持しており、デスクトップアプリは CLI セッションを再開することもできます。このページでは CLI について説明します。

セッションを再開する

セッションは作業中に ローカルトランスクリプトファイルに継続的に保存されるため、終了後または /clear を実行した後に再開できます。これらのエントリポイントを使用します。

実行中のバックグラウンドセッションを再開する

claude --resume または /resume で再開する会話が、実行中の バックグラウンドセッションに属する場合、Claude Code は実行中のセッション自体を開きます。コマンドラインで --bg を使用すると、再開は代わりに バックグラウンドディスパッチになります。v2.1.285 より前は、Claude Code は拒否し、claude attach <id> でセッションを開くか、先に claude stop <id> で停止するよう指示していました。
  • シェルから:claude --resume <session> は、トランスクリプト自体を読み込む代わりに、同じターミナルでそのセッションに対して claude attachを実行します。claude --resume <session> "check the tests too" のようにコマンドラインで渡すプロンプトは、最初にセッションの次のターンとして送信され、Claude Code は Sent your prompt to the background session (<id>); opening it… を出力してからアタッチします。ターミナルで入力した claude -p --resume <session> "prompt" も同じように動作するため、-p はその実行を非対話型に保ちません。 Claude Code は、コマンドラインに以下のいずれかがある場合、セッションを開きません。
    • パイプまたはリダイレクトされた入力または出力
    • --permission-mode、--model、--settings などのセッションを設定するフラグ
    • --output-format json または --json-schema などの出力を読み込むフラグ
    • --max-turns または --max-budget-usd などの実行を制限またはリワインドするフラグ
    これらのいずれかがある場合、または エージェントビューがオフになっている場合、Claude Code は何も送信せず、ステータス 1 で終了し、セッションがバックグラウンドで実行中であることを出力し、それを開く claude attach <id> コマンドを表示するか、ID を判定できない場合は claude agents で見つけるよう指示します。代わりに会話のコピーを再開するには、--fork-session を追加します。フラグを適用した自分のセッションで会話そのものを続行するには、claude stop <id> を実行してからコマンドを再度実行します。 / または ! で始まるプロンプトは送信されず、セッションが質問への回答を待っている間のプロンプトも送信されません。どちらの場合も Claude Code はセッションを開かず、メッセージには Your prompt was not sent to it と理由が含まれます。
  • セッション内から:/resume は現在の会話をバックグラウンドに移動し、このターミナルを実行中のセッションにアタッチし、Opening "<title>", running in the background (<id>) を出力します。空のプロンプトで ← を押すとエージェントビューに戻ります。エージェントビューには、離れた会話も一覧表示されます。現在の会話をバックグラウンドに移動できない場合(例えば、すでにバックグラウンドセッションにアタッチしている場合や、セッション永続性がオフの場合)、/resume は代わりに実行する claude attach コマンドを出力します。

再開されたセッションが復元するもの

Claude Code がトランスクリプトから会話を読み込むと、再開されたセッションは会話とそれに保存された状態を復元します。
  • 会話履歴:メッセージ、ツール呼び出し、および結果。セッションが コンテキスト圧縮されていた場合、会話は Conversation compacted 行から開きます。Claude は、最後の圧縮の要約、その圧縮で要約されずに残ったメッセージ、およびそれ以降のすべてのメッセージを使って続行します。最後の圧縮で要約されたメッセージは再度読み込まれません。
  • 中断されたツール呼び出し:前のプロセスが終了したとき(例えばクラッシュ時)に実行中だったツールは、再開時に再実行されません。
  • モデル:セッションは使用していたモデルで続行されます。ただし、モデルの設定に記載されている場合は除きます。
  • エージェント:--agentまたは agent 設定で開始されたセッションはそのエージェントとして続行され、ツール制限とモデルを保持します。別のエージェントを選択するには、再開時に --agent を渡します。どちらの場合のシステムプロンプトについては、再開された会話のシステムプロンプトフラグを参照してください。Claude Code は 2 つの場所でエージェントを検索します。セッションの元のディレクトリ(そのワークスペースを信頼している場合)と、次に再開元のディレクトリです。そのため、プロジェクトスコープのエージェントは別のディレクトリから再開する場合でも読み込まれます。Claude Code がどちらの場所でもエージェントを見つけられない場合、セッションはデフォルトのツールで再開され、エージェント名を示す警告が表示されます。
  • 権限モード:claude --continue、claude --resume <session-id>、または claude --resume <name>(名前が 1 つのセッションと一致する場合)で -p なしでターミナルから再開する場合、Claude Code はセッションが使用していた権限モードを復元します。ただし、再開時の権限モードに記載されている場合は除きます。このセクションでは、セッションピッカー、/resume、および claude -p で再開する場合も扱います。復元されたモードを上書きするには、--permission-mode または --dangerously-skip-permissions を渡します。
  • アクティブなゴール:セッションが終了したときにまだアクティブだった ゴールは引き継がれます。ターン数、タイマー、およびトークン支出ベースラインはリセットされます。
  • セッションスコープのスケジュールタスク:有効期限が切れていないタスクが復元されます。バックグラウンド Bash およびモニタータスクは復元されません。
  • バックグラウンド作業:前のプロセスとともに終了した バックグラウンドサブエージェント、バックグラウンド Bash コマンド、または ワークフローは、再開されたトランスクリプトに完了しなかったというメモとして表示されます。Claude Code はそれらのメモからターンを開始しません。Claude は次のプロンプトとともにそれらを読みます。
元の起動時のすべての設定フラグが復元されるわけではありません。セッションが --mcp-config、--settings、--plugin-dir、--fallback-model、または --add-dir で追加されたディレクトリに依存していた場合、再開時に再度渡します。セッション中に /add-dir で追加されたディレクトリも復元されませんが、セッションピッカーはセッションを見つけるためにそれらを使用します。settings.json や settings.local.json などの標準設定ファイルは起動時に再度読み込まれるため、それらに含まれる設定を再度渡す必要はありません。--system-prompt および --append-system-prompt については、再開された会話のシステムプロンプトフラグを参照してください。

再開時の権限モード

Claude Code が再開されたセッションをどの権限モードで開始するかは、再開方法によって異なります。以下のケースは、Claude Code がトランスクリプトから会話を読み込む場合に適用されます。代わりに 実行中のバックグラウンドセッションを開く場合、そのセッションは現在の権限モードを保持します。
  • ターミナル:claude --continue、claude --resume <session-id>、または claude --resume <name>(名前が 1 つのセッションと一致する場合)で -p なし。Claude Code はセッションが使用していた権限モードを復元します。ただし、表に記載されている場合は除きます。復元されたモードを上書きするには、--permission-mode または --dangerously-skip-permissions を渡します。
  • 非対話型:claude -p --resume または claude -p --continue。Claude Code は新しい claude -p 実行が開始される権限モードで実行を開始します。ただし、plan モードで終了したセッションは、以下の条件を満たす場合に plan モードで再開されます。
  • VS Code:拡張機能の会話パネル。表は、plan モードで終了した会話のみを扱います。その他については、過去の会話を再開を参照してください。
  • 起動時のセッションピッカー:セッションピッカーから選択したセッション。claude --resume だけで開いたか、claude --from-pr で開いたか、複数のセッションと一致する名前で開いたかに関わらず。Claude Code は、同じコマンドラインから新しいセッションを開始する場合の権限モードでセッションを開始します。ただし、plan モードで終了したセッションは plan モードで再開されます。--permission-mode、--dangerously-skip-permissions、または --fork-session を渡した場合、Claude Code は plan モードを復元しません。それ以外の保存された権限モードは復元されません。
  • セッション内の /resume(引数の有無を問わず):切り替え先の会話は、現在のセッションの権限モードで続行されます。ただし、plan モードで終了した会話は、--permission-mode または --dangerously-skip-permissions で Claude Code を起動した場合でも plan モードで再開されます。その会話がこの Claude Code の実行中にすでに開かれていた場合(開始時の会話や、/clear または /resume で離れた会話など)は、代わりに現在の権限モードで続行されます。
拒否ルールによって ExitPlanMode ツールが削除されている場合、Claude はプランを承認のために提示できないため、Claude Code は plan モードを復元しません。セッションは、同じコマンドラインから新しいセッションが開始される場合の権限モードで開始されます。/resume の場合、会話は現在の権限モードで続行されます。 非対話型および VS Code の経路で plan モードを復元するには Claude Code v2.1.246 以降が必要です。各行は、セッションが終了した権限モード、ターミナル、非対話型、および VS Code の経路のどれで再開するか、および Claude Code が再開されたセッションを開始する権限モードを示します。
-p で plan モードで再開する
claude -p --resume または claude -p --continue の実行は、以下の条件がすべて成立する場合にのみ plan モードで再開されます。
  • --permission-prompt-toolを渡し、--permission-prompts noneを渡さないことで、Claude Code がプランを承認のために提示できること
  • --permission-mode または --dangerously-skip-permissions を渡さない
  • --fork-session を渡さない
  • 実行が チャネルを通じて開始されていない
  • 拒否ルールによって ExitPlanMode ツールが削除されていない

「Resume this conversation?」ダイアログ

セッションの再開時に「Resume this conversation?」ダイアログが表示された場合、その見積もりは、保存された会話だけで 5 時間の使用制限のうちどれだけを使用するかの割合です。この見積もりには、すでに使用した分は含まれません。 Pro、Max、および Ultra プランでは、長い会話を 長い休憩の後に再開する場合、または別のモデルで再開する場合に、このダイアログが表示されることがあります。見積もられた使用量は、Resume を選択した時点ではなく、その後に最初のメッセージを送信した時点で発生します。次のタスクに保存された会話がまだ必要かどうかで選択してください。
  • Resume:保存された会話で作業を続けます。
  • Start a new conversation:保存された会話を必要としない作業に切り替えます。後で再び開くには、プロンプトで /resume を実行します。この見積もりは、新しい会話での最初のメッセージには適用されません。Claude がこの会話を参照できるとオプションに表示されている場合は、新しい会話でも以前の作業に言及できます。

セッションピッカーが検索する場所

Claude Code はセッションをプロジェクトディレクトリごとに保存します。デフォルトでは、セッションピッカーは以下を表示します。
  • 現在の worktree からのセッション。バックグラウンドセッションを含み、リストで bg とマークされています
  • 他の場所で開始され、/add-dir で現在のディレクトリを追加したセッション
Ctrl+W を使用してリポジトリのすべての worktree に拡張するか、Ctrl+A を使用してこのマシン上のすべてのプロジェクトに拡張します。

/loop、-p、Agent SDK、およびバックグラウンドセッション

最初のプロンプトが /loopコマンドだったセッションはピッカーに表示されず、claude --continue もそれらをスキップします。会話の後半で /loop を実行してもセッションは非表示になりません。 Claude Code は claude -pまたは Agent SDKで作成されたセッションをセッションピッカーから除外し、claude --continue からも除外します。それでも、セッション ID を claude --resume <session-id> に渡すことで再開できます。claude -p --continueを実行すると、Claude Code は -p、SDK、および /loop セッションを含めます。 claude --continue は完了した バックグラウンドセッションを開きますが、実行中のセッションは開きません。完了したバックグラウンドセッションを開くには Claude Code v2.1.257 以降が必要です。最新の会話が バックグラウンドに移動したセッションで、そこで実行中の場合、Claude Code は Your most recent conversation is running in the background と表示して終了し、そのセッションの ID を表示します。claude agentsからセッションにアタッチするか、claude --resume を実行して別のセッションを選択します。

他の worktree やプロジェクトのセッション

同じリポジトリの別の worktree からセッションを選択すると、Claude Code はそこで再開します。セッション自体の worktree が存在しなくなった場合、Claude Code は 現在のディレクトリで再開します。関連のないプロジェクトからセッションを選択すると、Claude Code は代わりに cd と再開コマンドをクリップボードにコピーします。そのプロジェクトのディレクトリが存在しなくなった場合、Claude Code は失敗する cd コマンドをコピーするのではなく、現在のディレクトリでセッションを再開します。 /cdでセッションを移動すると、新しいディレクトリのプロジェクトストレージに再配置されるため、その後そのディレクトリのピッカーに表示されます。

セッション ID または名前で再開する

claude --resume <session-id> は任意のディレクトリから実行できるため、別の場所で開始されたセッションや /cdで移動したセッションも再開できます。Claude Code は次の順序で ID を検索します。
  1. 現在のプロジェクトディレクトリとその git worktree
  2. このマシン上の他のすべてのプロジェクト
プロジェクト横断の検索では、その ID のメッセージを含むトランスクリプトを保持している他のプロジェクトがちょうど 1 つの場合にのみ ID が解決されます。そのため、手動でコピーされた重複がある場合、Claude Code は任意のコピーを再開するのではなく、見つからないと報告します。保存されたセッションが ID と一致しない場合、Claude Code は No conversation found with session ID: <session-id> と報告します。 名前で再開する場合は、現在のリポジトリとその worktree 全体で解決されます。どちらの形式も完全一致を探し、別の worktree に存在する場合でも直接再開します。

セッションに名前を付ける

セッションに説明的な名前を付けて、セッションピッカーで見つけやすく、名前で再開できるようにします。これは複数のタスクを並行して処理している場合に最も重要です。 CLI ルートまたは claude.ai からセッションに名前を付けたら、claude --resume <name> または /resume <name> で再開できます。デスクトップアプリセッションはデスクトップアプリで再開されます。worktree 全体での名前解決の動作については、セッションを再開するを参照してください。 名前を付けないセッションでも、Claude Code が割り当てる 2 つのラベルが付けられます。生成されたタイトルのみが再開ハンドルとして機能します。
  • デフォルト表示名:名前を付けないインタラクティブセッションでも、起動時にデフォルト表示名が付けられます。デフォルト名は、作業ディレクトリの名前と 2 文字のサフィックスを組み合わせたもので、例えば my-app-3f のようになり、agent viewや claude agents --json 出力などの実行中セッションのリストでセッションを識別します。デフォルト名は再開ハンドルではありません。claude --resume または /resume に渡した場合、Claude Code はセッションを見つけません。
  • 生成されたタイトル:セッションに名前を付けない場合、Claude Code はセッションのタイトルを生成します。タイトルは最初のプロンプトの短い要約で、通常は Haiku クラスモデルである小型/高速モデルへのバックグラウンドリクエストで作成されます。シェルまたはスクリプトから直接開始する claude -p 実行は生成されません。 プランを受け入れると、生成されたタイトルがプランに基づいたタイトルに置き換わります。claude --resume または /resume にいずれかのタイトルを渡すことができ、Claude Code は設定した名前と同じ方法で解決します。

セッションピッカーを使用する

セッション内で /resume を実行するか、引数なしで claude --resume を実行して、インタラクティブセッションピッカーを開きます。これらのキーボードショートカットを使用して、ナビゲート、検索、リストを拡張します。 各行は、セッション名が設定されている場合はそれを表示し、そうでない場合は AI が生成したセッションタイトル、会話の概要、または最初のプロンプト、最後のアクティビティからの経過時間、git ブランチ、およびファイルサイズを表示します。 /branch または --fork-session で作成されたセッションは独自のセッション ID を取得し、別の行として表示されます。ピッカーが同じセッションの複数のエントリを見つけた場合、それらは単一の行の下にグループ化されます。グループを展開するには → を押します。 Claude Code が claude --resume ピッカーから選択したセッションを読み込めない場合、Failed to resume the conversation を出力し、再試行するコマンドを表示してから、終了コード 1 で終了します。セッション内の /resume ピッカーから、Claude Code は失敗を報告し、現在の会話は実行を続けます。

セッションを分岐させる

分岐は、これまでの会話のコピーを作成し、それに切り替え、元のセッションはそのままにしておきます。別のアプローチを試す際に、進めていたパスを失わないようにするために使用します。 セッション内から、オプションの名前を付けて /branch を実行します。
名前を省略した場合、Claude Code は会話の最初のプロンプトに基づいて新しいブランチに名前を付けます。 コマンドラインから、--continue または --resume を --fork-session と組み合わせます。
/branch 確認は 2 つのセッション ID を出力します。現在いる新しいブランチと元のセッションです。元のセッションは変更されず、セッションピッカーで利用可能なままです。/resume <original-name> で元のセッションに戻るか、その ID を /resume に渡します。 /branch はトランスクリプトをコピーし、実行中の Claude Code プロセスをそれに書き込むように切り替えます。この区別により、ブランチが継承するものが決まります。 フォークせずに 2 つのターミナルで同じセッションを再開すると、両方からのメッセージが 1 つのトランスクリプトにインターリーブされます。単一セッション内のチェックポイントベースの巻き戻しについては、チェックポイントを参照してください。

セッション内でコンテキストを管理する

これらのコマンドは、セッションを離れることなくコンテキストウィンドウ内の内容を制御します。
  • /clear:空のコンテキストで新たに開始します。Claude Code は以前のセッションを保存します。/resume で再開するか、同じ Claude Code プロセス内では、rewind メニューの前のセッションエントリから再開できます。引数がない場合、新しいセッションは --name または /rename で設定した名前を保持しますが、AI が生成したセッションタイトルは保持しません。代わりに、離れるセッションに名前を付けるには、/clear release-prep のように名前を渡します。その後、新しいセッションは名前なしで開始します
  • /compact [instructions]:履歴を概要に置き換え、オプションで指定した内容に焦点を当てます
  • /context:現在コンテキストを消費しているものを表示します
コンテキスト圧縮が CLAUDE.md、スキル、およびルールとどのように相互作用するかについては、コンテキストウィンドウガイドを参照してください。クリアと圧縮のどちらを使用するかについての戦略については、ベストプラクティスを参照してください。

セッションデータをエクスポートして見つける

/export を実行して、現在の会話をクリップボードにコピーするか、プレーンテキストファイルとして保存するメニューを開きます。メッセージとツール出力は読みやすいテキストとしてレンダリングされます。ファイル名を渡して、メニューをスキップしてそのファイルに直接書き込みます。

スクリプトから会話にアクセスする

/export は人が読むためのレンダリングされたトランスクリプトを生成します。以下のインターフェースはスクリプトが解析するための構造化データを生成します。実行からの JSON 結果、セッションのトランスクリプトファイルへのパス、またはイベントのライブストリームです。スクリプトをトリガーするものによって選択してください。
  • Claude を 1 回実行して結果をキャプチャする: --output-format json または stream-json で claude -p を呼び出して、非インタラクティブ実行の結果、セッション ID、使用状況、およびコストを構造化 JSON としてキャプチャします。
  • 既存のセッションに質問する: claude -p --resume にセッション ID を渡して、フォローアップ プロンプト(要約リクエストなど)を送信し、構造化された応答をキャプチャします。
  • セッションイベントに反応する: hooks と status line commands が入力として受け取る transcript_path フィールドを読みます。SessionEnd hook はセッションが終了したときにトランスクリプトをアーカイブできます。
  • TypeScript または Python アプリに Claude を埋め込む: Agent SDK を使用して、各メッセージをプログラムで受け取ります。
以下の例は 2 番目のインターフェースを使用しています。既存のセッションにフォローアップ プロンプトを送信し、jq で答えを読みます。

トランスクリプトが保存される場所

デフォルトでは、Claude Code はトランスクリプトを ~/.claude/projects/<project>/<session-id>.jsonl に JSONL として保存します。ここで <project> は作業ディレクトリパスで、英数字以外の文字が - に置き換えられています。作業ディレクトリの変換後の名前が 200 文字を超える場合、Claude Code は名前を 200 文字に切り詰め、フルパスのハッシュを追加するため、ディレクトリ名はファイルシステムの制限内に留まります。 各行は JSON オブジェクトで、メッセージ、ツール使用またはその結果、Claude Code がモデルに送信したリクエストの記録、またはメタデータエントリのいずれかです。エントリ形式は Claude Code の内部形式であり、バージョン間で変更されるため、これらのファイルを直接解析するスクリプトはリリースごとに破損する可能性があります。セッションデータを構築するには、代わりに /export または スクリプトインターフェース を使用してください。 場所、保持期間、および書き込み動作は設定可能です。

セッションデータを削除する

トランスクリプトは保持スイープルールに基づいて期限切れになります。プロジェクトのトランスクリプトと関連する状態をより早く削除するには、claude purge を実行してください。claude rm <id> でバックグラウンドセッションを削除した場合、そのトランスクリプトはディスク上に残り、claude --resume を通じて利用可能なままです。

プロジェクトディレクトリに自分で名前を付ける

デフォルトでは、Claude Code は <project> 名をワーキングディレクトリパス全体から導出します。自分で名前を選択するには、CLAUDE_CONFIG_DIR と一緒に CLAUDE_CODE_PROJECT_DIR_NAME を設定してください。Claude Code はそのセッションのトランスクリプトと 自動メモリ をあなたの名前の下に保存します。これは Claude Code を埋め込み、各セッションに独自の設定ディレクトリを与えるホストに適しています。Claude Code v2.1.234 以降が必要です。 たとえば、このローンチはテナント A のデータを /srv/tenant-a の下に保持し、そのプロジェクトディレクトリに work という名前を付けます。
Claude Code はセッションのトランスクリプトを /srv/tenant-a/projects/work/ に、その自動メモリを /srv/tenant-a/projects/work/memory/ に書き込みます。ワーキングディレクトリがどこであるかは関係ありません。 これを設定する場合、3 つのルールが適用されます。
  • CLAUDE_CONFIG_DIR も設定してください: 名前はワーキングディレクトリによって変わらないため、デフォルトの ~/.claude の下では、すべてのプロジェクトのトランスクリプトと自動メモリが 1 つのディレクトリにマージされます。Claude Code は CLAUDE_CONFIG_DIR が設定されていない場合、CLAUDE_CODE_PROJECT_DIR_NAME を無視します。
  • 1 ~ 64 文字の英字、数字、ハイフン、またはアンダースコアを使用してください: con などの Windows デバイス名を使用しないでください。Claude Code は他の値を無視し、導出された名前を使用します。
  • claude を開始するシェル環境で設定してください: Claude Code はスタートアップ時にその環境から一度だけ読み込むため、設定ファイルの env ブロックはそれを設定できません。
設定ディレクトリのプロジェクトディレクトリに名前を付けたら、その名前でローンチし続けてください。同じ CLAUDE_CONFIG_DIR で Claude Code を開始しても CLAUDE_CODE_PROJECT_DIR_NAME がない場合、導出されたディレクトリを再度読み書きします。あなたの名前の下に保存されたセッションはディスク上に残ります。セッションピッカー で Ctrl+A を押して、その設定ディレクトリの下のすべてのプロジェクトディレクトリ(ピン留めされたものを含む)からセッションをリストアップし、どのようにローンチしても、claude --resume <session-id> はどちらの名前の下に保存されたセッションでも見つけます。

関連項目

これらのページは関連するセッションと並列処理のメカニクスについて説明しています。
  • Worktrees:別のブランチで分離された並列セッションを実行します
  • Checkpointing:コードと会話を以前のポイントに巻き戻します
  • Context window:コンテキストを満たすもの、圧縮後に残るもの
  • Non-interactive mode:claude -p の下でのセッション動作