Claude Code

Claude Codeでセッションを引き継ぐ4つの方法を解説!

本記事にはプロモーション(広告)が含まる場合があります。

「Claude Codeのセッションを引き継ぐには、どうすればいいの?」
「昨日の続きから、そのまま作業を再開したい!」

Claude Codeを毎日使っていると、必ずぶつかるのがセッションの断絶です。
ターミナルを閉じた瞬間、あれだけ噛み合っていた会話がまるごと消えたように見えます。
ところが実際には消えていません。

Claude Codeは会話をローカルに保存していて、コマンド1つで呼び戻せます
ただし「全部そのまま戻る」わけではなく、戻らない領域がはっきり存在するんですよね。
この記事では、Claude Codeのセッション引き継ぎを4つの方法で比べながら、何が戻って何が失われるのかまで整理しました。

この記事でわかること

  • Claude Codeのセッションがどこに、どんな形で保存されているのか
  • セッションを引き継ぐ4つの方法と、それぞれで失われるもの
  • 初心者がそのまま真似できる引き継ぎの3つの手順
  • 引き継ぎのコストそのものを下げる運用の作り方
著者について

🧑‍💻

Web Director|Engineer

ITエンジニア歴15年超。設計・実装・運用まで一気通貫でこなすエンジニア。最近はAIエージェント開発・今後のキャリアを軸に発信中。

AIエージェント開発
フルスタックエンジニア
インフラ構築・運用

Claude Codeのセッション引き継ぎとは何か|保存される仕組みから理解する

引き継ぎの話に入る前に、Claude Codeが会話をどう保存しているかを押さえておくと、あとの手順で迷わなくなります。

ここでは、セッションの単位・記録の残り方・引き継ぎが要る場面の3点を見ていきましょう。

Claude Codeのセッションが保存される仕組み

  • セッションがプロジェクトのフォルダ単位で管理されていること
  • 会話の記録が.jsonlという形式のファイルで残っていること
  • 引き継ぎが必要になる3つの場面

セッションはプロジェクトのフォルダごとに保存される

Claude Codeでいうセッションは、1つのプロジェクトディレクトリに紐づいた「保存済みの会話」のことです。

ターミナルで claude と打った瞬間に新しいセッションが始まり、そこからのやり取りが1本の会話として記録されていきます。

ここで大事なのが、セッションは「Claude Code全体」ではなく「そのフォルダ」に属している点です。
別のフォルダで起動すると、さっきまでの会話は一覧に出てきません。

履歴が見つからないときに最初に疑うところ

  • 作業していたフォルダとは違う場所でClaude Codeを起動している
  • gitのworktreeを切り替えていて、別ディレクトリ扱いになっている
  • デスクトップアプリやVS Code拡張など、CLIとは別の履歴を見ている

「昨日の会話が消えた」という相談のほとんどは、この3つのどれかでした。
消えたのではなく、単に見ている場所が違うだけなんです。

まずは cd で元のプロジェクトフォルダに戻ってから起動し直してみてください。

会話の記録は.jsonlというファイルでローカルに残る

セッションの中身は、作業中ずっとローカルのファイルへ書き出され続けています。

保存先は既定で ~/.claude/projects/<プロジェクト>/<セッションID>.jsonl です。
フォルダ名は作業ディレクトリのパスから作られ、英数字以外の文字がハイフンに置き換わります。

Claude Codeのセッションが保存され復元される仕組み

拡張子の .jsonl は、1行につき1つのJSONが並んだ形式です。
メッセージ・ツールの実行結果・メタデータが、発生順に1行ずつ積み上がっていきます。

この保存期間は既定で30日で、settings.jsoncleanupPeriodDays で変えられます。

トランスクリプトまわりで覚えておく値

  • 保存場所:~/.claude/projects/<プロジェクト>/<セッションID>.jsonl
  • 保存期間:既定30日(cleanupPeriodDays で変更)
  • 保存先の移動:環境変数 CLAUDE_CONFIG_DIR

詳しい仕様はClaude Code公式ドキュメントの「セッションの管理」にまとまっています。

Claude Codeで引き継ぎが必要になる3つの場面

引き継ぎというと「翌日に続きをやる」だけを思い浮かべがちですが、実際にはもっと手前で発生します。

私がよく引き継ぎを意識するのは、次の3つの場面でした。

引き継ぎを意識したい場面

  • コンテキストウィンドウが埋まってきて、自動圧縮が走りそうなとき
  • 作業を中断して別のタスクに移り、また戻ってくるとき
  • 自宅のMacから外出先のマシンへ、作業ごと移したいとき

1つ目が一番やっかいです。
長い会話を続けていると、Claude Codeは古い部分を要約に置き換えて容量を空けます。

要約に置き換わった時点で、細かいやり取りの手触りは失われています。
ターミナルを閉じていなくても、実質的には引き継ぎが起きているわけですね。

なお、ここで扱う機能はすべてClaude Codeの有料プランが前提です。無料プランでは使えず、最低でもProプラン(月20ドル)への加入が要ります

APIキーによる従量課金でも動きますが、長時間のセッションほど費用が読みにくくなるため、慣れないうちは定額プランのほうが安全です。

Claude Codeでセッションを引き継ぐ4つの方法

ここからが本題です。Claude Codeのセッション引き継ぎには、性格の違う4つの方法があります。

それぞれ「どこまで戻せるか」が違うので、順番に見ていきましょう。

Claude Codeでセッションを引き継ぐ方法

  • セッションピッカーから選ぶ /resume
  • 直前の会話に戻る claude --continue
  • .jsonlの記録を新しいセッションに読ませる方法
  • 自作の引き継ぎコマンドでメモを残す方法

【方法1】/resumeで一覧から選んで再開する

もっとも素直な引き継ぎが /resume です。
セッションの中で打つと会話を切り替えられ、ターミナルから claude --resume として起動するとセッションピッカーという一覧画面が開きます。

# 過去のセッション一覧から選んで再開する
claude --resume



# 名前を付けてあるセッションを直接再開する
claude --resume auth-refactor

ピッカーは矢印キーで移動し、Enter で再開します。
スペースキーを押すと中身をプレビューできるので、似た会話が並んでいても選び間違えません。

意外と知られていないのが検索とスコープの切り替えです。

セッションピッカーで使うキー操作

  • Ctrl+A:このマシンの全プロジェクトからセッションを表示
  • Ctrl+W:同じリポジトリの全worktreeに表示を広げる
  • Ctrl+B:いま開いているgitブランチのセッションだけに絞る
  • Ctrl+R:選択中のセッションに名前を付け直す

「別のフォルダで作業していたセッションが見つからない」ときは、Ctrl+A で一気に解決することが多いです。

【方法2】claude –continueで直前のセッションに戻る

--continue は、いまのフォルダで最後に使っていたセッションを問答無用で再開します

一覧を見る手間がないぶん速く、「さっき閉じたばかりの続き」に戻るなら断然こちらが楽でした。

# カレントディレクトリの最新セッションを再開する
claude --continue



# 短縮形も使える
claude -c

逆に、複数のタスクを並行で走らせているときは向きません。
「最新のセッション」が自分の意図した会話とは限らないからです。

–continueで事故りやすい状況

  • 同じフォルダで用途の違う会話を複数走らせている
  • 直前にちょっとした調べ物のセッションを挟んでしまった
  • 別ターミナルで同じセッションを開いたまま再開した

3つ目は特に注意したいところです。
分岐せずに同じセッションを2画面で開くと、両方の発言が1本の記録に混ざってしまいます。

【方法3】.jsonlのトランスクリプトを直接読ませる

ここからは公式コマンド以外の手段です。
セッションが壊れて再開できないときや、別のマシンへ会話ごと持っていきたいときは、記録ファイルそのものを新しいセッションに読ませるという手が使えます。

# 更新の新しい順にトランスクリプトを探す
ls -lt ~/.claude/projects/-Users-you-projects-myapp/



# 新しいセッションを開いて、そのファイルを読ませる
claude
> ~/.claude/projects/-Users-you-projects-myapp/xxxx.jsonl を読んで、
> これまでの作業内容と決定事項を要約してください

私も一度、通信エラーでセッションが応答しなくなったときにこれで救われました。
会話そのものは復元されませんが、作業の文脈だけは十分に引き継げます。

ただし、この形式はClaude Codeの内部仕様で、バージョンによって中身が変わります。

.jsonlを直接扱うときの前提

  • 行の構造はバージョン間で変わるため、自作の解析スクリプトは壊れやすい
  • ファイルが長いと、読ませるだけでコンテキストをかなり消費する
  • 安定して持ち出したいなら /export のほうが向いている

常用するというより、非常口として覚えておく方法だと思ってください。

【方法4】自作の/handoverコマンドで引き継ぎメモを残す

4つ目は、引き継ぎメモの作成自体を自動化してしまう方法です。
Claude Codeは .claude/commands/ にMarkdownファイルを置くと、その中身がそのまま自分専用のスラッシュコマンドとして使えるんです

---
description: 作業の引き継ぎメモを生成して保存する
---



いまのセッションの内容を handover.md に書き出してください。
含める項目:
1. 今日やったこと(変更したファイルと理由)
2. 途中で捨てた案と、その理由
3. 次にやること(優先順に3つまで)
4. 詰まっている点・判断待ちの点

これを .claude/commands/handover.md として保存すれば、作業の区切りで /handover と打つだけでメモができあがります。

翌日は生成された handover.md を読ませれば、会話履歴なしでも文脈が立ち上がります。
他の3つと違って、「なぜそう決めたか」という判断理由まで残せるのが強みでした。

引き継ぎメモに書かせておきたい項目

  • 変更したファイルと、そう変更した理由
  • 検討したうえで採用しなかった案
  • 次に着手する予定だったこと(優先順に3つまで)
  • 判断を保留している論点

スラッシュコマンドの作り方そのものはClaude Code Skillsの使い方の記事で扱っている考え方と地続きです。

ここまでの4つの方法を、引き継げる範囲で並べてみます。

方法 引き継げるもの 失われるもの 向く場面
/resume 会話全体・読み込み済みの文脈 圧縮済みの詳細・権限の許可 同じマシンで続きをやる
--continue 直前の会話全体 選ぶ余地(意図しない会話に戻る) 閉じた直後に戻る
.jsonlを読ませる やり取りの記録(テキストとして) 会話状態そのもの・トークン効率 セッションが壊れた・別マシンへ移す
自作 /handover 決定事項・判断理由・次の一手 細かいやり取りの経緯 日をまたぐ・人に渡す

並べてみると、上の2つは「会話を戻す」方法で、下の2つは「文脈を組み直す」方法だとわかるはずです。

この性格の違いが、引き継ぎで何が欠けるのかという話につながっていきます。

Claude Codeのセッション引き継ぎで失われるものを4つの層で確認

再開したはずなのに、なぜか噛み合わない。この違和感の正体を層に分けて見ていきます。

Claude Codeの引き継ぎで欠けやすいもの

  • 自動圧縮によって要約に置き換わった会話の細部
  • 「このセッションで許可」した権限の設定
  • 作業ディレクトリやworktreeというセッションの居場所
  • そう判断した理由という、記録に残らない前提

圧縮された会話の細部は再開しても戻らない

Claude Codeには、コンテキストウィンドウが埋まってきたときに古い会話を要約へ置き換える仕組みがあります。

これが働くと容量は空きますが、置き換わった部分の細部はもう参照できません

コンテキスト圧縮で残るものと消えるもの

やっかいなのは、Claude Code側は要約を読んでいるので会話が成立してしまう点です。
こちらは全部覚えている前提で話しかけるため、微妙にズレた返答が返ってきます。

現在の消費量は /context で確認できます。
埋まりきる前に区切るクセをつけると、この手のズレはかなり減りました。

圧縮に振り回されないための小さな習慣

  • 作業の区切りで /context を打って残量を見る
  • 話題が変わるタイミングで /clear して仕切り直す
  • 残したい前提は会話ではなくファイルに逃がしておく

「このセッションで許可」した権限は分岐先に引き継がれない

意外な落とし穴がこれでした。

ツールの実行を確認されたときに「このセッションで許可」を選ぶと、そのセッションの間は聞かれなくなります。
ところが /branch などでセッションを分岐させると、この許可は新しい側へ引き継がれません

分岐した直後に急に確認ダイアログが増えて戸惑うのは、この仕様が理由です。

権限まわりで引き継がれないもの

  • 「このセッションで許可」で通したツールの実行許可
  • そのセッション限りで緩めた確認設定

毎回同じツールを許可しているなら、セッション単位ではなく設定ファイル側へ書いてしまうほうが早いです。

プロジェクト直下の .claude/settings.json に許可リストを置けば、新しいセッションでも最初から通ります。

作業ディレクトリの違いでセッションが見つからなくなる

セッションはプロジェクトのフォルダに紐づくため、起動場所を間違えると存在ごと見失います

とくにgitのworktreeを使っていると、同じリポジトリなのに別の場所として扱われるため混乱しやすいです。

この場合はセッションピッカーで Ctrl+W を押すと、リポジトリ内の全worktreeまで表示が広がります。

セッションが見つからないときの探し方

  • まず元のフォルダへ cd してから claude --resume
  • それでも出なければピッカーで Ctrl+W(worktree横断)
  • 最後の手段として Ctrl+A(マシン全体)

ちなみに claude -p やAgent SDKから作ったセッションは、ピッカーには並びません。
この場合はセッションIDを控えておいて、直接指定して再開します。

いちばん失われるのは「そう決めた理由」という前提

ここが個人的に一番大きいと感じている損失です。

会話履歴が戻っても、そこに書かれているのは「何をしたか」であって「なぜそうしたか」ではありません

たとえばライブラリAを捨ててBにした経緯は、頭の中だけで完結していることが多いんですよね。
翌日の自分もClaude Codeも、その理由を知らないままAに戻そうとします。

記録に残りにくい前提

  • 検討したうえで採用しなかった案と、その却下理由
  • あえて直さずに残しているコードの事情
  • 次にどこから手を付けるつもりだったのかという段取り

だからこそ、方法4で紹介した引き継ぎメモが効いてきます。
会話を戻すのではなく、判断を文字に落としておく発想へ切り替えると、引き継ぎは一気に安定しました。

Claude Codeでセッションを引き継ぐ手順

ここまでの内容を、そのまま真似できる手順に落とし込みます。

最初はこの3つの手順だけ回せば十分です。

Claude Codeのセッションを引き継ぐ手順

  • 作業を始めるときにセッションへ名前を付ける
  • 区切りで引き継ぎメモかエクスポートを残す
  • 翌日は名前を指定してセッションを呼び戻す

【ステップ1】セッションに名前を付けて見分けられるようにする

名前のないセッションは、翌日にはただの「昨日の会話」になります。
並行して3本も走らせていると、どれがどれだか本当にわからなくなるんですよね。

そこで最初にやるのが、セッション名を付けることです。起動時のオプションでも、会話の途中でも設定できます。

# 起動時に名前を付ける
claude -n handover-article



# 途中で名前を付ける・付け直す
> /rename handover-article

会話の途中で思い立ったときは /rename で付け直せますし、セッションピッカー上で Ctrl+R を押しても変更できます。

名前の付け方で迷わないコツ

  • 作業対象+動詞にする(例:auth-refactor
  • 日付は入れない(あとで検索しにくくなる)
  • 1タスク1セッションを崩さない

名前を付けていないセッションにも、起動時に作業ディレクトリ由来の表示名が自動で割り当てられます。
ただしこれは画面に出すためのラベルで、--resume <名前> の呼び出しには使えません。

つまり、あとから名前で呼び戻せるのは、自分で付けたセッション名だけという理解でいてください。

最初のうちは面倒に感じますが、数日分の会話がたまってから効き目がわかりました。

【ステップ2】区切りで引き継ぎメモかエクスポートを残す

その日の作業を終えるとき、5秒だけ使って状態を書き出しておきます。

手段は2つあり、人に渡すのか自分が読むのかで使い分けると迷いません。

# 会話をテキストとして書き出す
> /export handover-2026-08-17.txt



# 自作コマンドで要点だけをまとめる
> /handover

/export はメニューを開いてクリップボードかファイルを選べます。
ファイル名を渡せばメニューを飛ばして直接書き出せるので、日課にするならこちらが速いです。

Claude Code公式ドキュメントのセッション管理ページ

出典:Claude Code Docs「セッションの管理」

全文が要るのか要点だけでいいのかは、翌日の自分に聞いてみるとだいたい後者でした。

【ステップ3】翌日は名前を指定してセッションを呼び戻す

翌日は、必ず元のプロジェクトフォルダに移動してから起動します。

ここを飛ばすと、どんなに正しいコマンドを打っても目当てのセッションは出てきません

cd ~/projects/myapp



# 名前で直接再開する
claude --resume handover-article



# 名前を忘れたら一覧から選ぶ
claude --resume

再開したら、いきなり作業を頼まずワンクッション挟むのがコツです。
「いまどこまで終わっていて、次は何をする予定でしたか」と聞くと、認識のズレをその場で潰せます。

再開直後にやると事故が減ること

  • 現状と次の予定を要約させて、認識を合わせる
  • git status で作業ツリーの状態を確認させる
  • 引き継ぎメモを残していれば、それを先に読ませる

この一手間だけで、的外れな修正が走る事故がほとんどなくなりました。

Claude Codeのセッションを分岐・整理して引き継ぎやすくする

引き継ぎがうまい人は、そもそもセッションの持ち方が違います。

ここでは、会話を分けたり畳んだりする道具を整理しておきましょう。

セッションを扱いやすくする道具

  • 会話を枝分かれさせる /branch
  • 文脈を空にする /clear と要約する /compact
  • コードごと巻き戻す /rewind

/branchで会話を分岐させて別案を試す

/branch は、ここまでの会話をコピーして新しい枝に移る機能です。
元のセッションはそのまま残るので、「この方針でダメだったら戻ればいい」と思いながら試せます

# 名前を付けて分岐する
> /branch try-streaming-approach



# コマンドラインから分岐する
claude --continue --fork-session

分岐したセッションはピッカー上で元セッションの下にまとまり、 キーで展開できます。

さっき触れたとおり、「このセッションで許可」した権限は枝の側に引き継がれません。
分岐直後に確認が増えても、壊れたわけではないので落ち着いて通してください。

/clearと/compactはどちらを使うか決めておく

この2つは似ているようで、残るものがまったく違います。

/clear は文脈を空にして仕切り直し、/compact は履歴を要約に置き換えて圧縮します

/clearと/compactの使い分け

  • 話題がまるごと変わる → /clear(前の会話は保存され、あとで再開できる)
  • 同じ作業を続けたいが容量が苦しい → /compact
  • 残したい観点があるときは /compact 認証まわりの決定事項を残して のように指示を添える

迷ったら /clear を選び、必要な前提はファイルから読ませ直すほうが結果的に速いです。
/compact を繰り返すと要約の要約ができあがり、じわじわ精度が落ちていきました。

ここで安心材料になるのが、/clear しても会話そのものは消えないという点です。

クリアした前の会話はちゃんと保存されていて、/resume から呼び戻せます。
同じClaude Codeを起動したままなら、巻き戻しメニューの「前のセッション」からも戻れますし、「消えるのが怖くて区切れない」という気持ちはこの仕様を知るとかなり軽くなるはずです。

/rewindでコードごと以前の状態に巻き戻す

会話だけでなく、ファイルの変更ごと戻したい場面もあるはずです。

そのときに使うのが /rewind で、セッション内のチェックポイントまでコードごと巻き戻せます
詳しい挙動は公式ドキュメントのチェックポイントにまとまっています。

ただ、これを安全網として当てにしすぎると痛い目を見ました。

巻き戻しに頼りすぎないために

  • チェックポイントはgitのコミットの代わりにはならない
  • 大きめの作業に入る前は、先に自分でコミットしておく
  • 巻き戻したあとは、必ず作業ツリーの状態を確認する

Claude Codeとgitの連携そのものはClaude CodeのGit連携方法で扱っています。

Claude Codeのセッション引き継ぎを仕組み化する運用のコツ

最後に、引き継ぎそのものを軽くする話をします。

毎回きれいに引き継ぐより、引き継ぐ量を減らすほうがずっと現実的でした。

引き継ぎコストを下げる運用

  • 毎回説明していることをCLAUDE.mdへ移す
  • 別マシンやチームへ渡すときの持ち出し方を決めておく
  • セッションの切り方そのものを設計する

毎回説明している前提はCLAUDE.mdへ移す

セッションを再開するたびに同じ説明をしているなら、それは会話ではなく設定に置くべき情報です。

プロジェクト直下の CLAUDE.md に書いておけば、新しいセッションでも最初から読み込まれます

CLAUDE.mdに逃がすと効く情報

  • 使っている言語・フレームワークとバージョン
  • テストやビルドの実行コマンド
  • 触ってほしくないファイル・守ってほしい規約

逆に、その日限りの作業内容をCLAUDE.mdへ書くのはおすすめしません。
常時読み込まれるぶん、無駄にコンテキストを食い続けます。

書き方のコツはClaude Code CLAUDE.mdの書き方で詳しくまとめました。

別マシンやチームへ渡すときの持ち出し方を決める

自宅のMacから外出先のノートへ作業を移すとき、会話そのものは持っていけません。

ローカルに保存されている記録は、そのマシンのものだからです。

そこで、持ち出すのは会話ではなく成果物と判断に絞ります

マシンをまたぐときに持っていくもの

  • コードの変更(gitでコミットしてpush)
  • 引き継ぎメモ(リポジトリに含めてしまう)
  • プロジェクト共通の前提(CLAUDE.md)

この3つがそろっていれば、移動先で新しいセッションを開いても数分で追いつけます。

チームに渡す場合も同じで、/export した長大な会話ログより、要点をまとめたメモのほうが確実に読まれました。

セッションの切り方そのものを設計する

引き継ぎが重い人ほど、1本のセッションを引っぱりすぎている傾向があります。

長く続けるほど圧縮が走り、圧縮が走るほど引き継げるものが減っていく。この悪循環が起きているんですよね

セッションを切る目安

  • 1タスク=1セッションを原則にする
  • 調べ物と実装は別のセッションに分ける
  • コンテキストが7割を超えたら、区切りを探し始める

区切るタイミングで /handover を挟めば、次のセッションは軽い状態で立ち上がるはずです。

この流れを自動で走らせたい場合は、フックを使う手もあります。Claude Code hooksの使い方で扱っているイベント連携を組み合わせると、セッション終了時にメモを自動保存できます。

Claude Codeのセッション引き継ぎに関するよくある質問

Q:Claude Codeのセッションはどのくらい保存されますか?

A:既定では30日間です。settings.jsoncleanupPeriodDays で日数を変更できます。
長期の案件で古い会話を残したいなら、先に伸ばしておくと安心でした。

Q:–continueと–resumeはどちらを使えばいいですか?

A:閉じた直後に同じ作業へ戻るなら --continue、複数のタスクを行き来しているなら --resume が向きます。
並行作業が多い方は、セッションに名前を付けたうえで --resume <名前> を使うと迷いません。

Q:セッションが一覧に出てこないときはどうすればいいですか?

A:まず作業していたフォルダへ cd してから claude --resume を実行してください。
それでも出ない場合は、ピッカーで Ctrl+W(worktree横断)と Ctrl+A(マシン全体)を順に試します。

Q:別のパソコンにセッションを引き継げますか?

A:会話そのものはローカル保存のため、そのままでは移せません。
コードをgitで同期し、引き継ぎメモとCLAUDE.mdをリポジトリに含めておくのが現実的なやり方です。

まとめ

Claude Codeのセッション引き継ぎは、コマンドを覚える話に見えて、実は「何を残すか」を決める話でした。

/resume--continue は会話を戻す道具で、.jsonl の読み込みと自作の /handover は文脈を組み直す道具です。

そして、どの方法でも判断理由だけは自動では残りません。

今日から試せること

  • 次のセッションに claude -n で名前を付けてみる
  • 作業の終わりに /export を1回だけ試す
  • .claude/commands/handover.md を作って /handover を生やす

会話を完璧に復元しようとするほど、引き継ぎは重くなります。

あなたの手元のセッションで、明日の自分に本当に必要なのはどの情報でしょうか。
そこを一度書き出してみると、引き継ぎの形が自然と決まってくるはずです。

手を動かして覚えるのが一番早い一方で、腰を据えて学び直したくなる場面もあります。そのときの選択肢は、社会人におすすめの生成AI研修スクール|スクール6校を比較にまとめてあります。