Claude Codeで複雑なリファクタリングを40分ほど進めていると、ふと「これ、別のやり方でやってみたらどうだろう?」と思う瞬間が来ます。でも、ここまで積み上げてきたコンテキスト――読んだファイル、下した判断、議論したトレードオフ――を捨てたくはないですよね。そんなときは/forkの一言で解決です。

3秒で要約
会話の文脈を蓄積 /forkで複製 複製先で実験 元の会話はそのまま保存 A/Bを比較して選択

これは何?

/forkは、現在の会話の全履歴をコピーして、独立した新しいセッションを作るコマンドです。 概念的にはGitのgit branchとまったく同じです。元のブランチ(会話)はそのまま残り、分岐点からそれぞれ別の方向に進められます。

CLIでは--fork-sessionフラグでも同じ動作をします。既存のセッションを--resume--continueで呼び出した後に--fork-sessionを付けると、その時点までの会話履歴を持つ完全に新しいセッションIDが生成されます。

重要な比喩

--continue = 同じノートに書き続ける(セッションIDは同じ)
--fork-session = ノートをコピーして新しい方に書く(セッションIDは異なる、内容は同じ)

公式ドキュメントによると、フォークされたセッションは元のセッションの権限設定(session-scoped permissions)を引き継ぎません。 セキュリティの観点から意図的な設計です。新しいセッションで機密性の高い操作を行う際に、改めて確認を求めるということです。

何が変わるのか?

Claude Codeを使っていると、「別のアプローチを試してみたい」という場面は思いのほか頻繁に訪れます。これまでの選択肢は二つしかありませんでした。新しいセッションを開いてゼロからコンテキストを積み上げるか、今のセッションでそのまま突き進むか。どちらもコストが大きいですよね。

新規セッション開始/rewind使用/fork使用
既存コンテキストすべて消失一部ロールバック完全に保持
元のセッション別途維持巻き戻される完全に保持
実験の安全性安全(分離)危険(元に戻しにくい)安全(分離+元を保持)
トークンコスト高い(再構築)低い中程度(履歴のコピー)
A/B比較難しい不可自然にできる

Trigger.devのブログで紹介された「Context Pre-Warming」パターンがこの違いをよく表しています。 アーキテクチャ文書、API仕様、コーディング規約など4万トークン以上の重いコンテキストをマスターセッションに一度ロードしてから、各フィーチャー作業ごとにフォークして使う方法です。毎回コンテキストを再構築するコストを完全になくせます。

始め方のポイント

  1. マスターセッションを作る
    Claude Codeを起動して、プロジェクトの核心となるコンテキストを十分にロードします。アーキテクチャ文書を読み込ませ、主要ファイルを探索させ、コーディングルールを設定してください。そして/rename master-contextで名前を付けておきましょう。
  2. インタラクティブフォーク: /fork
    セッション内で/fork refactor-attemptのように名前を付けてフォークします。 元の会話はそのまま残り、フォークされたセッションで自由に実験できます。
  3. CLIフォーク: --fork-session
    claude --resume master-context --fork-sessionでターミナルから直接フォークできます。 新しいターミナルタブを開いて同じマスターを何度かフォークすれば、並行実験も可能です。
  4. 結果を比較して選択
    各フォークで異なるアプローチを試した後、結果を比較します。気に入った方向のセッションを続ければOKです。残りは捨てれば完了です。

注意: 同じセッションの同時使用は禁止

同じセッションIDを複数のターミナルで--resumeすると、両方のメッセージが混在してしまいます。後でresumeしたとき、会話が混乱した状態になります。並行作業が必要な場合は必ず--fork-sessionを使ってください。

実践的な活用パターン

コミュニティで実際に使われている/forkの活用パターンをまとめました。

パターン1: 実装のA/Bテスト

同じマスターセッションを2回フォークして、それぞれ異なる実装方式を試します。 例えば一方はRedisキャッシュで、もう一方はインメモリキャッシュで実装してパフォーマンスを比較する、といった方法です。コンテキストが同じなので、差異は純粋にアプローチの違いだけから生まれます。

パターン2: レビュー対応セッションの復元

PRを作ったセッションをフォークしてレビューコメントに対応すれば、元のコードを書いたときのすべての文脈――なぜその決定を下したか、どんな代替案を検討したか――をそのまま保ちながら修正できます。

パターン3: スキルのcontext: fork

Claude Code Skillsでcontext: forkフロントマターを設定すると、そのスキルが独立したサブエージェントコンテキストで実行されます。 メインの会話を乱すことなく、複雑な分析タスクを実行できます。

/fork vs /btw vs /rewind — いつ何を使うか?

• 流れを止めずに軽い質問 → /btw(履歴に残らない)
• 別のアプローチを実験 → /fork(元を保存、新セッション作成)
• 直前の操作を元に戻す → /rewind(現在のセッションでロールバック)