Claude Codeの/forkが別物に。旧挙動は/subtaskへ移動した
v2.1.212でClaude Codeの/forkが別物になった。以前は在席のままサブエージェントを立ち上げる機能だったが、今はclaude agentsに独立した行として現れるバックグラウンドセッションを生成する仕様に変わった。旧動作は/subtaskとして分離、両者の使い分けを一次情報から整理する。
エンジニアのゆとです。
結論から書く。/fork はもう「会話の中でサブエージェントを立ち上げるコマンド」じゃない。v2.1.212(2026年7月17日)から、/fork はフル独立のバックグラウンドセッションを新規に生成するコマンドに変わった。claude agents の一覧に自分の行を持つ、れっきとした別セッションだ。じゃあ昔の /fork はどこに行ったのかというと、名前を変えて生き残っている。今は /subtask という別コマンドがその役目を引き継いでいる。
これ、地味だけど普通に事故る変更だと思う。コマンド名がそのまま残ってるのに中身だけ差し替わってるから、「前の使い方」を覚えている人ほど気づかずに踏む。ヘッドラインで大きく告知されたわけでもなく、週次ダイジェストの「Other wins」の一行に紛れてる程度の扱いだった。この記事では何が変わったのか、なぜ紛らわしいのか、じゃあ今日から /fork と /subtask をどう使い分ければいいのかを整理する。
何が変わったのか——一次情報で確認する
まず公式の記述をそのまま引く。Claude Codeの週次ダイジェスト(2026-w29)にはこうある。
要約すると、/fork は今の会話をまるごとコピーして新しいバックグラウンドセッションを起こす。あなたは元の会話で作業を続けられて、フォークされた方は claude agents の一覧に独立した行として表示される。裏で動いて、あとから戻って結果を見に行く対象になった、ということだ。
一方で、以前の /fork(会話の中にサブエージェントを立てて、その場で結果を待つ動き)は消えたわけじゃない。名前を変えて /subtask という新コマンドに引っ越しただけだ。挙動そのものは変わってない。呼び方が変わっただけ。
僕が最初にこれを知ったとき、正直「なんでコマンド名まで変えなかったんだ」と思った。中身が変わったなら /fork を廃止して新コマンド名(例えば /spawn とか)にして、旧挙動を /fork に残す方が直感的だった気がする。でもAnthropicはその逆をやった。/fork という名前をバックグラウンドセッション側に残して、旧挙動の方を新しい名前 /subtask に追い出した。ここが今回のいちばんのハマりポイントだと思っている。
なぜこれが「事故る変更」なのか
普通、機能が壊れたり大きく変わったりしたらエラーが出るか、少なくとも見た目が変わって気づく。でも今回はそうじゃない。
/fork というコマンド名は生きている。実行すれば何かは起きる。エラーも出ない。ただし返ってくるものが違う。以前は「会話の中で分岐した作業が、その場で完了して結果が戻ってくる」体験だったのに、今は「新しいセッションが裏で走り出して、今の会話には何も返ってこない」体験に変わっている。
これは単なる仕様変更というより、コマンド名の意味論がまるごと入れ替わったケースに近い。しかも変更のアナウンスがヘッドライン機能ではなく、週次ダイジェストの「Other wins」欄の1行だった。僕は普段からリリースノートをチェックしてる方だけど、それでも見落としかけた。ましてや月に1回ドキュメントを覗く程度の人だと、しばらく気づかないまま「あれ、/fork の動きが前と違う気がする」で終わってしまう可能性が高い。

この記事で扱った「MCP呼び出しの自動バックグラウンド化」も同じv2.1.212〜v2.1.214の期間に入っている。今月のClaude Codeは、要するに「裏で勝手に走らせる」方向へ舵を切っていて、/fork の再定義もその流れの一部として読むとしっくりくる。
新しい役割分担——/forkと/subtaskの違い
整理すると、こういう住み分けになった。
/fork は今の会話のスナップショットを取って、独立したバックグラウンドセッションとして走らせるコマンド。claude agents に自分の行ができて、あとから戻って進捗や結果を確認できる。今の会話は止まらず、そのまま自分の作業を続けられる。
/subtask はこれまでの /fork そのもので、会話の中でサブエージェントを立てて、その場でタスクをこなして結果を持ち帰ってくる。基本的にブロッキングで、今の会話の流れの中で完結する。
つまり判断基準は「この作業、結果を今すぐ会話に戻したいか、あとで見に行けばいいか」の一点に尽きる。

以前サブエージェントとAgent Teamsの使い分けを書いたときも、結局は「粒度とコンテキスト分離の設計」が肝という話をした。今回の /fork / /subtask の分岐もその延長線にある。ただし今回はもう一段実務寄りで、「同期で待つか」「非同期で放置するか」というシンプルな二択に落とし込まれている分、判断はむしろ楽になったと思う。
実際どう使い分けるか——僕の運用ルール
僕は今のところ、こういう線引きで使い分けている。
長時間かかりそうな調査や、複数ファイルにまたがるリファクタリングの下調べは /fork に投げる。例えば「このリポジトリ全体を見て、未使用のexportを洗い出しておいて」みたいな依頼は、僕がその間に別の作業をしていたいタイプの仕事だ。フォークしたセッションは claude agents から後で覗けばいい。
逆に「このエラーメッセージの意味を調べて要約して」「この関数のテストケースをざっと考えて」みたいな、数十秒から数分で終わってその場で会話に組み込みたい作業は /subtask に回す。会話の文脈を保ったまま、ちょっとした調べ物を人に振る感覚に近い。

この感覚は以前紹介したDispatch(スマホから作業を投げてPCで実行させる機能)とも近い。Dispatchが「場所をまたいだ非同期委任」なら、今回の /fork は「同じセッション内での非同期委任」だ。Claude Codeはここ数ヶ月、「今すぐ結果が欲しい作業」と「あとで確認すればいい作業」を明確に分けるインターフェースを増やしている。/fork の再定義も、その設計思想が既存コマンドにまで波及してきた例として見ると分かりやすい。

カスタムスラッシュコマンドを自作している人は、この機会に自分のコマンド定義が /fork の旧挙動(会話内サブエージェント)を前提にしていないか一度見直した方がいい。もし前提にしていたなら、参照先を /subtask に直す必要がある。
まとめ——名前が同じでも中身は変わっている
/fork はバックグラウンドセッションを生成するコマンドになった。claude agents に行が増えて、あとから戻って確認する対象になる。以前の「会話内でサブエージェントを立てて即結果をもらう」動きは /subtask という新コマンドに引き継がれた。
今回いちばん伝えたかったのは、機能そのものの説明より「コマンド名が変わらないまま挙動だけ変わることがある」という事実の方だ。Claude Codeは更新頻度が高いツールで、それ自体はありがたい。ただし全部の変更がヘッドラインで大きく告知されるわけじゃなく、週次ダイジェストの一行に紛れて静かに出荷されることも普通にある。定期的にチェンジログを見る習慣がないと、こういう「名前は同じ、中身は別物」系の変更に気づかないまま古い記憶で使い続けてしまう。
自分のワークフローやカスタムコマンドで /fork を使っている人は、一度立ち止まって今の挙動を確認しておいた方がいい。