Claude Codeのrewindとfork:セッション管理を極める
Claude Codeのチェックポイント・rewind・fork・summarize機能を体系的に解説。コンテキスト管理を制して生産性を最大化する方法を学びます。
🎯 この記事で学べること
- 1Claude Codeのチェックポイントシステムの仕組みを理解できます
- 2rewindの5つのオプションを使い分けられるようになります
- 3summarizeでコンテキストを効率的に圧縮できるようになります
- 4forkでセッションを分岐させる方法と活用場面がわかります
- 5rewind・fork・compact・clearを状況に応じて判断できるようになります
読了時間: 約14分
あの完璧な実装、なかったことにされました
こんにちは!今日はClaude Codeのセッション管理について学びましょう。
こんな経験はありませんか?
Claude Codeにリファクタリングを任せていたら、途中で方向性がズレてしまった。「ここまでは良かったんだけど、直近3ステップだけ巻き戻したい...」と思っても、どうすればいいか分からない。結局セッションを閉じて最初からやり直し。あの良かった部分の実装も、全部消えてしまいました。
あるいはこんなケースはどうでしょう。設計の方針を2パターン試したいけど、片方を試すともう片方には戻れない。「パラレルワールドがあれば...」と思ったこと、ありますよね?
実は、Claude Codeにはこれらを解決する強力な機能が最初から備わっています。rewind(巻き戻し)とfork(分岐)です。
この記事では、チェックポイントの仕組みからrewindの全オプション、summarize、fork、そしてcompact/clearとの使い分けまで、セッション管理の全体像を体系的に解説します。
チェックポイント:知らないうちに守られている
rewindやforkの話に入る前に、まずその土台となるチェックポイントの仕組みを理解しておきましょう。
自動チェックポイントとは
Claude Codeは、ファイルを変更するたびに自動でチェックポイントを作成しています。これはgitの仕組みを利用したもので、ユーザーが意識しなくても裏側で動いています。
上の図でCPがチェックポイントです。ファイルに変更が加わるたびに、その時点のスナップショットが保存されます。
チェックポイントの仕組み
具体的には、Claude Codeはプロジェクトの.gitディレクトリ内でチェックポイントを管理しています。通常のgitコミット履歴とは別に保存されるので、あなたのコミットログが汚れることはありません。
チェックポイントが記録するのはファイルの変更だけです。以下の点に注意してください:
- ファイルの追加・変更・削除は記録される
- bashコマンドの実行結果は記録されない
- 外部ツール(エディタ等)で行った変更は記録されない
- 会話の内容そのものは記録されない(コンテキストウィンドウに保持される)
チェックポイントは内部的にgitの仕組みを使っていますが、通常のブランチやコミットとは独立して管理されています。git logには表示されないので安心してください。
チェックポイントの有効期限
チェックポイントは永久保存ではありません。セッション終了後、約30日間保持されます。それ以降はガベージコレクションによって削除される可能性があります。
重要な変更を行った後は、通常のgitコミットで明示的に保存することをおすすめします。チェックポイントはあくまで「一時的なセーフティネット」と考えましょう。
rewind:タイムマシンを使いこなす
チェックポイントの仕組みが分かったところで、いよいよrewindの使い方を見ていきましょう。
rewindの起動方法
rewindを起動する方法は2つあります:
| 方法 | 操作 | 用途 |
|---|---|---|
Escキー2回 | キーボードでEscを素早く2回押す | 直前のターンを巻き戻したいとき |
/rewindコマンド | プロンプトに/rewindと入力 | 特定のターンまで巻き戻したいとき |
どちらの方法でも、rewindのインターフェースが表示され、過去の会話ターンの一覧から巻き戻し先を選択できます。
rewindの5つのオプション
巻き戻し先のターンを選択すると、以下の5つのオプションが表示されます:
| オプション | 動作 | ファイル | 会話 |
|---|---|---|---|
| Restore files and conversation | ファイルも会話も巻き戻す | 復元される | 巻き戻される |
| Keep files, restore conversation | ファイルはそのまま、会話だけ巻き戻す | 変更なし | 巻き戻される |
| Restore files, keep conversation | ファイルだけ巻き戻し、会話は維持 | 復元される | 維持される |
| Summarize and continue | 選択地点までの会話を要約して続行 | 変更なし | 要約される |
| Create a fork | 選択地点から新しいセッションを分岐 | 復元される | 分岐先にコピー |
最もよく使うのは「Restore files and conversation」(完全巻き戻し)です。「あの操作全部なかったことにしたい」という場面で使います。迷ったらまずこれを選びましょう。
オプションの使い分け
それぞれのオプションが活躍する場面を見てみましょう。
Restore files and conversation(完全巻き戻し)
- Claude Codeが間違った方向に進んでしまったとき
- 「3ステップ前の状態に戻してやり直したい」というとき
Keep files, restore conversation(ファイル維持・会話巻き戻し)
- ファイルの変更自体は正しいが、Claudeの理解がズレてしまったとき
- 「コードは合ってるけど、会話の文脈をリセットしたい」というとき
Restore files, keep conversation(ファイル復元・会話維持)
- Claudeの理解は正しいが、ファイルへの変更だけ取り消したいとき
- 「議論の流れはこのままで、コードだけ戻したい」というとき
Summarize and continue(要約して続行)
- セッションが長くなりすぎてコンテキストが圧迫されてきたとき
- 次のセクションで詳しく解説します
Create a fork(分岐)
- 別のアプローチを試したいが、今の状態も残しておきたいとき
- forkセクションで詳しく解説します
summarize:コンテキストを圧縮する裏ワザ
summarizeとは
rewindのオプションの一つであるsummarizeは、選択した地点までの会話履歴を要約文に圧縮して、そこから会話を続行する機能です。
なぜこれが便利かというと、Claude Codeにはコンテキストウィンドウという制約があるからです。会話が長くなるほどコンテキストが消費され、やがてClaudeの応答精度が落ちたり、古い会話が自動で切り捨てられたりします。
summarizeのイメージ
上の図のように、ターン1〜4の詳細な会話が1つの要約に圧縮されます。これによりコンテキストウィンドウの空きが増え、以降の会話でClaudeがより多くの情報を処理できるようになります。
summarizeの使い方
- ①
Escを2回押すか、/rewindを入力してrewind UIを開く - ②要約の区切りにしたいターンを選択する
- ③Summarize and continueを選ぶ
選択した地点までの会話が自動で要約され、その要約を起点として会話が続行されます。
/compact との違い
Claude Codeにはsummarizeの他に/compactというコマンドもあります。混同しやすいので整理しておきましょう。
| 特徴 | summarize(rewind内) | /compact |
|---|---|---|
| 起動方法 | rewind UI内で選択 | /compactコマンド |
| 圧縮範囲 | 選択した地点まで | 会話全体 |
| 選択の自由度 | どこまで要約するか選べる | 全体を一括圧縮 |
| ファイルの変更 | なし | なし |
| 使いどころ | 途中までの議論を圧縮したいとき | セッション全体がコンテキストを圧迫しているとき |
summarizeも/compactも、要約の過程で詳細な情報が失われる可能性があります。重要な仕様や決定事項は、事前にファイルやコメントに書き出しておくと安全です。
fork:パラレルワールドを作る
forkとは
forkは、セッションの特定の時点から新しいセッションを分岐させる機能です。元のセッションはそのまま残り、分岐先で別のアプローチを試すことができます。
ターン3の時点でforkすると、元のセッションとは独立した新しいセッションが作られます。
forkの2つの方法
forkを作成する方法は2つあります。
方法1:rewind UIから
- ①
Escを2回押すか、/rewindでrewind UIを開く - ②分岐元にしたいターンを選択
- ③Create a forkを選ぶ
- ④新しいセッションが別ウィンドウで開く
方法2:CLIオプションから
# 既存セッションからforkして新しいセッションを開始
claude --fork-session <session-id>
--fork-sessionにはセッションIDを指定します。セッションIDは/sessionsコマンドで確認できます。
forkで作られた新しいセッションには、分岐元の会話履歴がすべてコピーされます。ファイルも分岐時点の状態に復元されるので、完全に独立した環境で別のアプローチを試せます。
rewindとforkの違い
rewindとforkは似ているようで、根本的に異なります。
| 特徴 | rewind | fork |
|---|---|---|
| 元のセッション | 巻き戻される(上書き) | そのまま残る |
| 新しいセッション | 作られない | 新しく作られる |
| 使いどころ | 「やり直したい」 | 「別の道も試したい」 |
| 戻れるか | rewindした先から再びrewind可能 | 両方のセッションが独立して存在 |
rewindは「時間を戻す」、forkは「世界線を分ける」 と覚えると分かりやすいでしょう。
コンテキストウィンドウの全体戦略
ここまでrewind、summarize、forkを個別に見てきました。ここでは、Claude Codeのコンテキスト管理ツール全体を俯瞰して、使い分けを整理しましょう。
ツール一覧と使い分け
| ツール | 目的 | ファイルへの影響 | 会話への影響 |
|---|---|---|---|
| rewind | 過去の状態に戻す | 復元(オプション次第) | 巻き戻し |
| summarize | 会話の一部を圧縮 | なし | 部分的に要約 |
| fork | セッションを分岐 | 分岐先で復元 | 分岐先にコピー |
| /compact | 会話全体を圧縮 | なし | 全体を要約 |
| /clear | セッションをリセット | なし | 全削除 |
判断フローチャート
「今の状況でどのツールを使うべきか?」の判断フローです。
迷ったときのシンプルな指針:「戻したい」→ rewind、「試したい」→ fork、「軽くしたい」→ /compact。この3つを覚えるだけでほとんどの場面をカバーできます。
実践シナリオ:こんなとき、どうする?
具体的な場面でどのツールを使うか、3つのシナリオで見てみましょう。
シナリオ1:リファクタリングが暴走した
状況: Claude Codeにコンポーネントのリファクタリングを依頼したら、関連ファイルを10個以上変更してしまった。最初の3ファイルの変更は良かったが、それ以降は不要だった。
対処法:
- ①
Escを2回押してrewind UIを開く - ②3ファイル目の変更が完了したターンを選択
- ③Restore files and conversation を選ぶ
- ④3ファイル目まで変更された状態に戻る
- ⑤「残りのファイルは変更しないで」と指示してから続行
ポイント: rewindの完全巻き戻しは「ここまでは良かった」という境界が明確なときに最も効果的です。
シナリオ2:設計を2パターン比較したい
状況: APIの設計で、REST APIとGraphQLのどちらを採用するか迷っている。Claude Codeに両方のプロトタイプを作ってもらって比較したい。
対処法:
- ①まず共通の設計議論をClaude Codeと行う
- ②「まずREST APIで実装して」と指示
- ③REST APIの実装が完了したら、設計議論が終わったターンでforkを作成
- ④fork先のセッションで「GraphQLで実装して」と指示
- ⑤両方のセッションの結果を比較して判断
ポイント: forkは「共通の文脈を維持したまま、実装だけ分岐させたい」ときに真価を発揮します。
シナリオ3:長時間セッションでコンテキストが圧迫
状況: 2時間以上にわたる開発セッションで、Claude Codeの応答が遅くなってきた。初期の要件定義や試行錯誤の会話が大量に残っている。
対処法:
- ①まず現在の作業状態をgitコミットで保存
- ②
/compactで会話全体を圧縮
または、より細かく制御したい場合:
- ①
Escを2回押してrewind UIを開く - ②「ここからが本番の実装」というターンを選ぶ
- ③Summarize and continue を選ぶ
- ④初期の議論が要約され、コンテキストに余裕ができる
ポイント: /compactはお手軽ですが、summarizeは「どこまでを圧縮するか」を選べるのが強みです。重要な議論が最近のターンに含まれる場合、summarizeで古い部分だけ圧縮するのが安全です。
知っておくべき制限事項
rewind/forkを効果的に使うために、制限事項を把握しておきましょう。
bashコマンドの実行は追跡されない
チェックポイントが記録するのはファイルの変更のみです。Claude Codeがbashコマンドで行った操作(パッケージのインストール、データベースのマイグレーション、外部APIへのリクエストなど)は記録されません。
rewindでファイルを巻き戻しても、npm installで追加されたパッケージや、データベースへの変更は元に戻りません。
rewindは万能の「元に戻す」ではありません。bashでrmしたファイル、送信したAPIリクエスト、実行したマイグレーションなどの副作用は巻き戻せません。破壊的な操作の前には必ず手動でバックアップを取りましょう。
外部での変更は追跡されない
Claude Codeの外(エディタやターミナル)で行ったファイル変更は、チェックポイントに含まれません。rewindしても、外部で加えた変更はそのまま残るか、チェックポイントの状態で上書きされます。
チェックポイントの有効期限
前述の通り、チェックポイントはセッション終了後約30日間保持されます。古いセッションに対してrewindやforkを試みても、チェックポイントが期限切れで失われている場合があります。
ベストプラクティス
これらの制限を踏まえた運用のコツをまとめます。
- ①重要な節目でgitコミットする: チェックポイントに頼りすぎず、明示的にコミットしておく
- ②破壊的操作の前にrewindポイントを意識する: 「ここに戻れるようにしたい」と思ったら、コミットしておく
- ③長時間セッションでは定期的に/compactする: コンテキストの圧迫を感じる前に、先手を打つ
- ④forkは比較検討に使う: 「どちらの設計がいいか」を客観的に比較できる
理解度チェック
Q1: rewindのオプション選択
Q2: forkの動作
Q3: コンテキスト管理の判断
まとめ
今回はClaude Codeのセッション管理について学びました!
覚えておきたいポイントをまとめます:
- チェックポイント: ファイル変更のたびに自動作成される一時的なスナップショット
- rewind:
Escx2 または/rewindで起動。5つのオプションでファイルと会話を柔軟に巻き戻し - summarize: rewind内のオプション。会話の一部を要約してコンテキストを節約
- fork: セッションを分岐させ、元を残したまま別のアプローチを試行
- 判断基準: 「戻したい」→ rewind、「試したい」→ fork、「軽くしたい」→ /compact
セッション管理を使いこなせると、Claude Codeでの開発体験が格段に向上します。「間違えても戻れる」「別の道も試せる」という安心感は、より大胆な設計判断を可能にしてくれますよ。
AIターミナルの効率化に興味がある方は、cmuxでAIコーディングを加速するもぜひチェックしてみてください!


