![【小ネタ】Claude codeの [rewind]と[fork]はうまく使うと結構便利](https://images.ctfassets.net/ct0aopd36mqt/3KBTm8tdpO9RJJuaVvVzod/a9964bb03097b448b2327edc6920bf9f/Claude.png?w=3840&fm=webp)
【小ネタ】Claude codeの [rewind]と[fork]はうまく使うと結構便利
こんにちは、せーのです。Claude Codeで長い作業をしていると、「CLAUDE.mdのベストプラクティスってどうなってるんだっけ?」のように、別のことを聞きたくなる瞬間、ありませんか。このまま質問すると、リファクタリングのコンテキストが横道のやりとりで埋まってしまいます。そんなときの解決策として、rewind(巻き戻し)とfork(セッション分岐)を試してみましたので、小ネタとして共有します。
やりたいこと
- いま進めている作業(例: リファクタで3ターン以上やりとりしている)はそのままにしたい
- ついでに別の質問(例: CLAUDE.mdの書き方)をして、答えは知りたい
- でも本編の会話は汚したくない
そんな要望を満たすのに、rewind と fork が使えました。
前提の確認
手元の Claude Code は 2.1.47 でした。rewind も fork もとくにバージョン要件はなく、通常のインストールで使えます。
claude -v
2.1.47 (Claude Code)
試すだけなら、顧客プロジェクトではなく個人用・デモ用のリポジトリがおすすめです(スクショに映り込むリスクや、意図しない変更を避けるため)。
やってみた: 質問してから rewind で戻す
「軽い質問を1回して、すぐ本編に戻したい」ときは、rewind が手軽です。
手順
- いつもどおり本編の会話を進める(例: ファイルの構造確認 → エラーハンドリング追加 → テストを書いて、で3ターン以上)
- 横道の質問を投げる(例: 「CLAUDE.mdのベストプラクティスを教えて」)
- Claude が回答するのを待つ
- Esc キーを2回(Esc+Esc)押す
- 表示されたプロンプト一覧(各メッセージに "No code changes" などと出る)から、横道の質問の直前のメッセージ(例: 「テストも書いて」)を選ぶ
- 確認画面で「The conversation will be forked. The code will be unchanged.」と出たら、「Restore conversation」 を選ぶ
すると、会話が横道の質問を入れる前の状態に戻ります。選択したメッセージの元のプロンプトが入力欄に復元されるので、続きから編集して送ることもできます。本編でファイルを触らせていた場合は「Restore code and conversation」などのオプションも出るので、そのときは会話とコードの両方をまとめて巻き戻せます。
実験
デモ用プロジェクトのディレクトリで Claude Code を起動して、Kiro CLI のブログ記事(Kiro CLIはぶっちゃけどんな場面で使えばいいか考えてみた)の要約を本編として 3 ターンつくりました。
claude
- ターン1: 「https://dev.classmethod.jp/articles/kiro-cli-development-guide/ の内容を要約して」
- ターン2: 「Kiro CLI・Claude Code・Codex CLI の比較表をもう少し整理して」
- ターン3: 「使い分けの目安のところを箇条書きで抜き出して」
Claude が要約や比較表・使い分けを返したあと、横道の質問として Kiro の用語について聞いた。
Steering とは何か、Kiro CLI の文脈で簡単に教えて
(ブログ内に Steering の説明があるので、Claude は要約の文脈を踏まえて答える。ほかに「Hooks って何?」「MCP連携とは?」などでもよい。)
回答を確認してから Esc キーを 2 回(Esc+Esc)押しました。セッション中のプロンプト一覧が表示され、各メッセージには "No code changes" と出ていました。横道の質問の直前の「使い分けの目安のところを箇条書きで抜き出して」を選択すると、次のような確認画面が出ました。
Rewind
Confirm you want to restore to the point before you sent this message:
│ 使い分けの目安のところを箇条書きで抜き出して
│ (2m ago)
The conversation will be forked.
The code will be unchanged.
❯ 1. Restore conversation
2. Summarize from here
3. Never mind
**「Restore conversation」**を選んだところ、会話は横道の質問を入れる前の状態に戻り、入力欄には「使い分けの目安のところを箇条書きで抜き出して」のプロンプトが復元されていました。横道の質問とその回答は画面上の会話からは消えますが、~/.claude/projects/ 配下のトランスクリプトには残っているので、データとしては失われません。本編でファイルを触らせていた場合は、コード変更の有無に応じて「Restore code and conversation」などのオプションも出るため、コードの変更もまとめて巻き戻せます。
やってみた: fork してから質問する
「少し重い調査をしたい」「別トピックとして会話を残したい」ときは、fork が向いています。元のセッションには一切手を加えません。
手順
- 本編のセッションがある状態で、別のターミナルを開く
- 次のコマンドで fork する:
claude --continue --fork-session - 表示されるセッション一覧から、いま作業しているセッションを選ぶ
- fork された新しいセッションで、横道の質問(例: 「CLAUDE.mdのベストプラクティスを教えて」や「先ほど要約した記事を非エンジニア向けにまとめ直して」など)を投げる
- 質問が終わったら fork 側は
/exitまたは Ctrl+D で終了 - 元のターミナルで
/resumeまたはclaude --resumeでセッション一覧を開き、fork 元(本編だけのセッション)を選べば、クリーンな状態のまま本編を続けられる。一覧には fork 先(さきほど作業した方)も並ぶので、本編を続けたいときは古い方・下の方のセッションを選ぶ
注意: fork は Esc+Esc のメニューからは選べません。必ず CLI の claude --continue --fork-session で行います。
実験
Kiro ブログ要約で 3 ターンつくったベースセッションがある状態で、別のターミナルを開き、次のコマンドを実行しました。
claude --continue --fork-session
表示されたセッション一覧には、元々作業していたセッションと同一のものが並びます。いま作業していたセッションを選ぶと、fork 先の新しいセッションが開始されます。その fork 先で、本編とは別の依頼として次のプロンプトを送りました。
先ほど要約してもらった Kiro CLI のブログを、非エンジニア説明用に細かい用語や仕様を抜いて、イメージで理解できる言葉でまとめ直して
fork 先の Claude は、本編(Kiro ブログの要約・比較表・使い分けのやりとり)の文脈を引き継いでいるので、「要約してもらったブログ」が何を指すか理解したうえで、「AIアシスタント3種 — 非エンジニア向けざっくり解説」のように、3つのツールをたとえ(職人・総合スタッフ・作業ロボット)で説明する平易なまとめを返してくれました。質問が終わったら fork 側で次のコマンドで終了します。
/exit
(Ctrl+D でも同じ。Goodbye! と表示されて終了)
元のターミナルで、/resume または claude --resume で Resume Session の一覧を開きました。実際の表示は次のとおりです。
❯ /resume
────────────────────────────────────────────────────────────────────────────────
Resume Session
╭──────────────────────────────────────────────────────────────────────────────╮
│ ⌕ Search… │
╰──────────────────────────────────────────────────────────────────────────────╯
❯ https://dev.classmethod.jp/articles/kiro-cli-development-guide/ の内容を要…
23 seconds ago · HEAD · 28.1KB
https://dev.classmethod.jp/articles/kiro-cli-development-guide/ の内容を要…
4 minutes ago · HEAD · 25.5KB
Ctrl+A to show all projects · Ctrl+B to toggle branch · Ctrl+V to preview ·
Ctrl+R to rename · Type to search · Esc to cancel ·
上のセッションが fork 先(さきほど「非エンジニア向けにまとめ直して」とやりとりした方)、下のセッションが fork 元(本編の Kiro ブログ要約だけの状態)です。本編を続けるには fork 元のセッションを選べばよく、そのときは「非エンジニア向けにまとめ直して」の依頼の痕跡は一切なく、元セッションには一切影響していませんでした。fork 先のやりとりは独立したセッションとして残っているので、あとから一覧で fork 先を選べばその続きを再開できます。なお、session-scoped permissions(ファイル書き込みなどの許可)は fork 先には引き継がれないため、fork したセッションでは必要に応じて再承認が求められます(公式: Resume or fork sessions)。
おまけ: summarize でコンテキストを圧縮する
rewind のメニュー(Esc+Esc → プロンプトを選択)には、「Summarize from here」 という選択肢もあります。これは「横道を消す」用途ではなく、コンテキストウィンドウの節約用です。
- 選択したメッセージ以降の会話が要約に置き換わる
- ファイルへの変更は行わない(会話だけが圧縮される)
- 元のメッセージはトランスクリプトに残る
/compactとの違いは、「どこから圧縮するか」を指定できること。まとめて圧縮したいときは summarize、全体を一気に圧縮したいときは/compact、というイメージです。
長いセッションを延命したいときには便利なので、覚えておいて損はありません。
使い分けの目安
| 手法 | 向いている場面 | メリット | デメリット |
|---|---|---|---|
| rewind | 軽い質問をしてすぐ戻したい | Esc+Esc だけで 1 セッション内で完結 | 質問の回答は会話から消える(トランスクリプトには残る) |
| fork | 重い調査や別トピックとして残したい | 元セッションを完全に保護、回答も別セッションとして残る | CLI で fork する必要がある |
| summarize | コンテキストを節約したい | ファイルは触らず、会話の一部だけ圧縮できる | 要約なので詳細は落ちる。横道対策ではない |
判断の目安をフローにするとこんな感じです。
横道の質問をしたい
│
├─ 質問は軽い(1〜2ターン)?
│ └─ Yes → rewind がおすすめ
│ 質問 → 回答確認 → Esc+Esc → 巻き戻し
│
└─ 質問は重い(調査・複数ターン)?
└─ Yes → fork がおすすめ
claude --continue --fork-session → 質問 → 終了 → 元セッションを --resume で再開
違いを整理すると、rewind は「会話を巻き戻してやり直す」もの、fork は「同じ土台から別の枝を作る」もの、というイメージです。
まとめ
長いセッションの途中で別のことを聞きたくなったときは、
- 軽い質問なら rewind(Esc+Esc → 復元)で会話とコードを戻す
- 重い調査や別トピックとして残したいなら fork(
claude --continue --fork-session)で分岐する
と使い分けると、本編のコンテキストを汚さずに済みます。試すだけなら特に問題ありません。Claude Code を普段使っている方は、一度手元で触ってみてください。








