Claude Codeで複雑なリファクタリングを40分ほど進めていると、ふと「これ、別のやり方でやってみたらどうだろう?」と思う瞬間が来ます。でも、ここまで積み上げてきたコンテキスト――読んだファイル、下した判断、議論したトレードオフ――を捨てたくはないですよね。そんなときは/forkの一言で解決です。
これは何?
/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万トークン以上の重いコンテキストをマスターセッションに一度ロードしてから、各フィーチャー作業ごとにフォークして使う方法です。毎回コンテキストを再構築するコストを完全になくせます。
始め方のポイント
- マスターセッションを作る
Claude Codeを起動して、プロジェクトの核心となるコンテキストを十分にロードします。アーキテクチャ文書を読み込ませ、主要ファイルを探索させ、コーディングルールを設定してください。そして/rename master-contextで名前を付けておきましょう。 - インタラクティブフォーク: /fork
セッション内で/fork refactor-attemptのように名前を付けてフォークします。 元の会話はそのまま残り、フォークされたセッションで自由に実験できます。 - CLIフォーク: --fork-session
claude --resume master-context --fork-sessionでターミナルから直接フォークできます。 新しいターミナルタブを開いて同じマスターを何度かフォークすれば、並行実験も可能です。 - 結果を比較して選択
各フォークで異なるアプローチを試した後、結果を比較します。気に入った方向のセッションを続ければ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(現在のセッションでロールバック)



