← ブログ一覧

/code-review、3日で豹変した話

Claude Codeの/code-reviewが3日で自動実行停止からバックグラウンドsubagent化するまでの経緯を、実行ログと自社ブログパイプラインの一次体験から検証する。


この記事の結論: Claude Codeの/verify/code-reviewはv2.1.215で自動実行が止まり明示的な呼び出しが必須になり、v2.1.218ではさらに/code-reviewがバックグラウンドsubagent化して会話を埋めなくなった。この二段階の変更に依存フックがあるなら、claude --versionで確認した上で「明示呼び出し+完了検知」への書き換えが必要になる。

リナ社長(高校生社長のやり手ギャル)× タクヤ(入社3年目)— 今回は、うちのブログ自動投稿パイプラインが使っているClaude Codeの/code-reviewが、この3日で挙動を2回変えていた件を掘り下げる回。(登場人物について

「タクヤ、うちの夜間投稿バッチ、/code-review使ってるフックあったよね。あれ最近様子おかしくない?」とリナ社長。「レビューが終わったタイミングが前と変わった気がするんだけど」

「様子おかしいっていうか、公式が3日で2回仕様変えてます」とタクヤ。「/verify/code-review、まず自動実行が止まって、そのすぐ後に今度はバックグラウンド実行に変わった。両方ともうちのパイプラインが直接触ってる部分です」


何が起きたか — 二段階の変更

公式チェンジログによると、変更は時系列で二段階に分かれている。

まずv2.1.215(2026-07-19)。ここで/verify/code-reviewの自動実行が停止した。チェンジログの表現をそのまま引くと、“Claude no longer runs the /verify and /code-review skills on its own; invoke them with /verify or /code-review when you want them” とあり、これまで暗黙に走っていたレビューが、明示的にスラッシュコマンドを打たない限り走らなくなったということだ。

そして3日後のv2.1.218(2026-07-22)、今度は/code-review自体の実行方式が変わった。“Changed /code-review to run as a background subagent, so review work no longer fills your conversation and keeps stacked slash commands as its review target” —つまりレビューはもう対話の中を占有せず、バックグラウンドのsubagentとして走るようになった。同じリリースで/ultrareviewが「review my auth changes」のような説明的な引数を正しく扱えるようになったこと、そして/code-review ultraが非対話セッションで黙ってローカルレビューを実行してしまうバグが修正され、クラウドレビューが正しく起動するようになったことも合わせて直っている。

「自動実行止めた直後にバックグラウンド化までやるって、結構畳みかけてますね」とタクヤ。「片方だけならまだしも、2つ重なると『前と同じフックのつもりで書いたコードが2箇所同時に動かなくなる』ことがある」

実際に確認してみた — ログとその限界

ここは推測で語らず、実機で確認できた範囲だけを書く。手元のサンドボックスは次のバージョンだった。

$ claude --version
2.1.218 (Claude Code)

つまりこの検証環境自体が、まさに変更が入った後のv2.1.218を動かしていた。偶然の一致ではなく、この記事を書いている環境そのものが変更の効果を受ける側だったということになる。claude doctorではインストール周りの警告が3件出ている。

$ claude doctor
Claude Code doctor

Running: native (2.1.218)
Commit: bce61b433bc3
Platform: linux-x64
Path: /opt/claude-code/bin/claude
Config install method: unknown
...
3 warnings found
- Running native installation but config install method is 'unknown'
- claude command at /root/.local/bin/claude missing or broken
- Leftover npm global installation at /opt/node22/bin/claude

さらにclaude agents --helpで、バックグラウンドセッションを管理するサブコマンドの存在を確認した。--jsonで稼働中セッションを配列取得できるオプション、--allで完了済みセッションも含めるオプションがある。

$ claude agents --help
Usage: claude agents [options]

Manage background agents

Options:
  --add-dir <directory>       Additional directory to allow tool access to in dispatched sessions (repeatable)
  --all                       With --json: also include completed background sessions
  --cwd <path>                Show only background sessions started under <path>
  --json                      Print active sessions (interactive and background) as a JSON array and exit (for scripting; does not require a TTY)
  ...(他オプション省略)

一方で確認できなかったこともある。claude --helpをgrepしても/code-reviewはトップレベルのCLIサブコマンド一覧に出てこない。

$ claude --help | grep -i code-review
(一致なし。/code-reviewはトップレベルCLIサブコマンドではなく、対話セッション内のスラッシュコマンド/スキルとして実装されていることを確認)

つまり/code-reviewは対話セッション内のスラッシュコマンド/スキルとして実装されている。非対話(ヘッドレス)環境からは、実際にレビューを起動してバックグラウンドsubagent化された挙動を再現することはできなかった。ここは正直に書く。対話UI上で/code-reviewを打った瞬間の実際の見え方までは確認できていない。

「対話でしか見えないのは痛いですね」とタクヤ。「バックグラウンド化されたって聞いても、実際に会話がどう埋まらなくなったのか、目視では確認できてない」

「でも」とリナ社長、「claude agents --jsonでポーリングできるってことは、対話UIの見た目関係なく、スクリプト側からは完了検知できるってことでしょ。ウチの運用ならそっちの方が大事じゃない?」

「それはそうです。ただ設計上は新しい関心事が増えたってことなんですよ」とタクヤは一度譲らない。「自動実行に依存してたフローがあれば、明示呼び出しへの書き換えが要る。加えてバックグラウンド化された分、完了をどう検知するかという設計が新たに必要になった。対話画面が変わったかどうかより、この2点の方が実務への影響は大きいです」

なぜこの設計変更なのか — v2.1.198・v2.1.212との繋がり

この3週間の変化は突発的ではなく、もっと前からの流れの延長線上にある。v2.1.198(2026-07-01)で「Subagents now run in the background by default, so Claude keeps working while they run and is notified when they finish」という変更が段階的ロールアウトを経て入り、subagentはデフォルトでバックグラウンド実行・完了時通知という方式になった。続くv2.1.212(2026-07-17)では/forkがバックグラウンドセッションへ会話をコピーする方式に変わり、旧来の「in-session subagentを起動する」役割は/subtaskに引き継がれた。

つまり/code-reviewのバックグラウンドsubagent化は、この流れの延長として自然な帰結といえる。ブロッキング(会話を占有して完了を待つ)から非同期subagent(バックグラウンドで走らせて通知を待つ)へ、Claude Codeの実行モデル全体がここ数週間で一貫して同じ方向に動いている。

「で」とリナ社長が身を乗り出す。「それウチの何が変わるの? 流れが一貫してるのは分かったけど、ビジネス的にどう効くか教えて」

jinbei-labの自動投稿パイプラインへの影響・まとめ

答えは、この記事自体を書いているパイプラインの中にある。jinbei-labのブログ自動投稿ルーティンは、ニュース収集→トピック選定→執筆→レビュー→ファクトチェックの各工程をAgentツール(サブエージェント)で回している。編集長は実際にこの記事の執筆中、ニュース収集とトピック選定の2つのサブエージェントをバックグラウンドで起動し、完了通知を受け取ってから次の工程に進んだ。これはv2.1.198が説明する「バックグラウンド実行+完了時通知」とまったく同じパターンで、想像や又聞きではなく、この記事を書いている最中に実際に起きた一次体験だ。

「レビューが会話を埋めなくなるのは、素直にありがたいですよ」とリナ社長。「他の工程を並行して進められる。夜間バッチなんて特に、待ち時間が減った分だけ回転数上がるじゃん」

「そこは同意です」とタクヤも認める。「ただ裏を返すと、バックグラウンドで動いてる間に完了を見落とすリスクとか、レビュー前に次の工程が勝手に進んでしまうリスクも新しく生まれます。うちの夜間自動投稿みたいな無人運用だと、同期を前提に書いた古いフロー・スクリプトが、アップデートのたびに静かに壊れてないか点検するコストがかかる」

「じゃあ結論、便利になったけど無警戒に乗るなってことね」とリナ社長がまとめる。「うちのパイプラインも、/verifyとか/code-reviewの自動実行に依存してる箇所がないか、次のメンテで一度洗い出す」

持ち帰り: /verify/code-reviewの自動実行に依存したフック・スクリプト・運用手順があるなら、claude --versionで現在のバージョンを確認した上で、v2.1.215以降は明示的な呼び出し+完了待ちのロジックに書き換える必要がないか点検すること。無人バッチ運用なら特に、バックグラウンド化された処理の完了検知(claude agents --json等)を組み込めているか確認したい。

あなたのチームの自動化フローに、/code-review/verifyの自動実行を前提にした箇所は残っていないだろうか。


参考

  • Claude Code Changelog — v2.1.215の自動実行停止、v2.1.218のバックグラウンドsubagent化、v2.1.212の/fork変更、v2.1.198のsubagentバックグラウンド化を含む公式チェンジログ

コメント