カテゴリー / MCP・スキル・プラグイン

Claude Codeのフォークとは?/forkと/branchの違いと使い分け

この記事の目次

Claude Codeのフォークとは、いま進めている会話をそのまま複製し、複製を別のバックグラウンドセッションとして走らせる機能です。操作は/forkで、実行したあとも自分は元の会話に残って作業を続けられます。複製側にはそれまでの会話全体に加えて、モデル、権限モード、effort、会話中に追加したディレクトリや「今後確認しない」許可も引き継がれます。GitHubで言う「リポジトリのフォーク」とは別物で、複製されるのはコードではなく会話です。

ただし、同じ/forkでもバージョンや設定によって動きが変わります。この記事では、公式ドキュメント(code.claude.com)の記述をもとに、/forkの使い方、似た操作である/branch・/subtask・--fork-sessionとの違い、複製がどこでファイルを編集するのか、思った動きをしないときの確認手順をまとめます。

Claude Codeのフォーク(/fork)は何をする機能なのか?

/forkは、現在の会話を新しいバックグラウンドセッションへコピーし、自分は今のセッションで作業を続けるためのコマンドです。公式のコマンド一覧では、/fork [prompt]は「現在の会話を新しいバックグラウンドセッションへコピーし、ここで作業を続ける」操作として説明されています。

複製されたセッションは、agent view(claude agentsで開く、バックグラウンドセッションの一覧画面)に独立した1行として表示されます。

Claude Codeで押さえておきたいのは、フォークした瞬間から2つの会話が独立する点です。複製側で行った作業が、元の会話に自動で流れ込むことはありません。セッション間メッセージ(cross-session messaging)を有効にしている場合に限り、どちらかのClaudeが明示的に相手へメッセージを送れます。

つまり/forkは「同じ前提を持った別の担当者を、もう1人バックグラウンドに立てる」操作に近いものです。本筋は自分が続け、横道の作業を複製に任せる、という分担ができます。

/forkはどう使う?プロンプトの有無で何が変わるのか

/forkには、指示(プロンプト)を付けて実行する方法と、付けずに実行する方法があります。

指示を付けると、複製はすぐにその作業を始めます。公式の例は次のとおりです。

/fork open a draft pull request with the work so far

指示を付けずに/forkだけを実行した場合、複製は最初の指示を待つ状態で止まっています。指示を後から送る方法は2つあります。

  1. claude agentsで agent view を開き、複製の行を選んでSpaceを押して指示を送る
  2. 確認表示に出たセッションIDを使い、claude attach <id>でその端末から複製に接続する
claude agents
claude attach <id>

/forkを実行すると、Claude Codeの確認表示が1行で出ます。そこには複製の状態(session runningなど)、agent view での行の名前、claude attachで使うセッションIDが含まれます。行の名前をクリックすると複製のほうへ切り替わり、今いたセッションはバックグラウンドに回ります。

フォークした複製はどこでファイルを編集するのか?

会話を複製しても、同じフォルダを2つのセッションが同時に書き換えると変更がぶつかることがあります。そのため Claude Code は、複製に「コードを変更する前に自分専用の worktree を作る」よう指示します(この指示は v2.1.221 以降)。worktree はリポジトリの作業用コピーを別の場所に作る git の仕組みで、並行作業そのものの基本的な考え方はworktreeで並列作業する記事で扱っています。

例外として、複製がその場で編集するケースがあります。

  • git リポジトリの外で作業していて、WorktreeCreateフックを設定していない場合
  • worktree 分離をオフにしている場合

確認表示の末尾にedits this checkoutと出たら、複製はあなたが開いているファイルを直接編集します。bare リポジトリ構成の worktree から起動した場合や、linked worktree の外で worktree 分離をオフにしている場合に、この表示が出ます。本筋と複製が同じ作業場所でファイルを触らないよう、作業範囲を分けてから任せてください。

worktree が使いにくいリポジトリで分離をオフにしたい場合は、プロジェクトの.claude/settings.jsonに次の設定を入れます。

{
  "worktree": {
    "bgIsolation": "none"
  }
}

もう1つ注意点があります。Claude Code が作った worktree は、agent view でそのセッションを削除すると一緒に消えます。複製が自分の worktree でファイルを編集していたら、セッションを削除する前に変更をコミットしておきましょう。

/fork・/branch・/subtask・–fork-sessionは何が違うのか?

どれも「会話を引き継いで別の流れを作る」操作ですが、実行後に自分がどこにいるか、結果がどこに戻るかが違います。

操作 実行後に自分がいる場所 複製の動き方 結果の扱い
/fork 元の会話に残る 別のバックグラウンドセッションとして動く 元の会話には自動で戻らない
/branch [name] 分岐した会話へ移る 同じプロセスのまま分岐先へ書き込む 元の会話は保存され、/resumeで戻れる
/subtask <task> 元の会話に残る 会話全体を引き継いだサブエージェントがバックグラウンドで動く 終わると結果が今の会話に届く
--fork-session 新しいセッションIDで再開した側 --continueや--resumeと組み合わせ、別プロセスで動く 元のセッションIDは再利用されない

/branchは、現在の時点から別の方向を試したいときに使います。名前を省略すると、会話の最初のプロンプトから名前が付きます。

/branch try-streaming-approach

コマンドラインから同じことをするなら、--fork-sessionを--continueか--resumeと組み合わせます。

claude --continue --fork-session
claude --resume abc123 --fork-session

ここで違いが出るのが「このセッションで許可」した権限です。/branchは同じプロセスで動くので権限の引き継ぎを行いますが、--fork-sessionで起動した別プロセスは許可を持たないため、改めて承認が必要です。/branchや--fork-sessionで作ったセッションは独自のIDを持ち、別の行として表示されます。

/subtaskは、横の作業をサブエージェントに任せて、結果だけを今の会話に戻したいときの選択肢です。公式の例は次のとおりです。

/subtask draft unit tests for the parser changes so far

この「フォーク型サブエージェント」は、本体と同じシステムプロンプト・ツール・モデル・会話履歴を見ます。一方で、途中のツール呼び出しは会話に入らず最終結果だけが戻るので、本体のコンテキストが散らかりません。サブエージェント全般の仕組みはサブエージェントの記事、過去の時点に巻き戻す操作は巻き戻し(rewind)の記事にまとめています。

どの場面で/forkを選び、どの場面で他の操作を選ぶべきか?

選び方は「結果をどこで受け取りたいか」で決めると迷いません。

  • 横の作業を別セッションで最後までやらせたいなら/fork。公式の例にあるように、ここまでの作業でドラフトのプルリクエストを作らせ、自分は本筋の実装を続ける、という分担です。複製は独立したセッションなので、結果は agent view やclaude attachで見に行きます。
  • 結果を今の会話に戻して、その続きを自分で進めたいなら/subtask。テストケースの下書きなどを任せ、終わった結果を本筋の判断材料にする使い方です。
  • 今の流れは残したまま、自分自身が別の方針を試したいなら/branch。うまくいかなければ/resumeで元の会話に戻れます。
  • 今のセッションを丸ごとバックグラウンドへ回して端末を空けたいなら/background(別名/bg)。こちらは複製ではなく、今の会話そのものを移します。

フォーク型サブエージェントは親のプロンプトキャッシュを再利用するため、同じ文脈が必要なタスクでは新しく立ち上げるサブエージェントより費用が小さく済むと公式は説明しています。なお、このフォーク型サブエージェントは、さらにフォーク型サブエージェントを生成できません。

/forkが思った動きをしないときは何を確認するのか?

/forkの意味はバージョンと設定で変わります。思った動きをしないときは、上から順に確認してください。

1. バージョンを確認する。 セッション複製としての/forkは v2.1.212 以降の動きです。v2.1.161〜v2.1.211 では、/forkは今でいう/subtaskと同じフォーク型サブエージェントを起動していました。古い解説と説明が食い違う場合は、対象バージョンの違いも確認してください。

claude -v
claude update

更新まわりの手順はアップデートの記事を参照してください。

2. agent view がオフになっていないか確認する。 disableAgentView設定をtrueにしているか、CLAUDE_CODE_DISABLE_AGENT_VIEW環境変数を設定していると、/forkはフォーク型サブエージェントの動作のままになり、/subtaskも使えません。この設定は管理者が管理設定(managed settings)で強制することもできるので、自分の設定で見つからなければ管理者に確認してください。

3. 起動時のフラグを確認する。 システムプロンプトを置き換えたり、--toolsでツールを絞ったりして起動したセッションは、複製に同じ条件を引き継げないためフォークできません。部分的な複製は作られず、その旨が表示されます。

4. Desktop の SSH 接続か確認する。 Claude Code Desktop で SSH 接続先のシェルがcmd.exeや Windows PowerShell の場合、セッションをフォークできるのは最初のメッセージの時点だけです。

5. 同じセッションを2か所で再開していないか確認する。 フォークせずに同じセッションを2つのターミナルで再開すると、両方のメッセージが1つの会話記録に混ざります。並行して動かしたいなら、--fork-sessionを付けて別のセッションIDで再開します。

フォークすると利用量や動作環境にどんな影響があるのか?

フォークした複製はバックグラウンドセッションとして動き、対話中のセッションと同じようにサブスクリプションの利用量を消費します。公式は、10個のエージェントを並列で動かすと1つのときのおよそ10倍の速さで枠を使うと説明しています。複製を増やすほど上限に早く近づくので、上限の考え方は使用制限の記事とあわせて確認してください。

バックグラウンドセッションは手元のマシンで動きます。スリープ中は保持されますが、マシンをシャットダウンすると止まります。長い作業を複製に任せた日は、電源を切る前に agent view で状態を見ておくと安心です。

agent view は現時点で research preview(試験提供)の扱いです。この記事のバージョン番号やコマンドの動きは、2026年10月18日に照合した公式ドキュメントに基づいています。

複数のセッションやエージェントを使い分ける感覚は、実際の作業で繰り返し使うことで身につきます。Claude Code の新しい機能を仲間と一緒に追いかけたい人は、月額1,980円から参加できる学習コミュニティ「AI駆動ラボ」(lab.no-wave.jp)も覗いてみてください。