Claude Codeのv2.1.198から、claude agentsで起動したバックグラウンドエージェントは、Claude自身が作ったworktree内で作業を終えると、ユーザーに確認を取らずにコミット・プッシュ・ドラフトPR作成までを自動で済ませるようになった。公式ドキュメントの表現を借りれば「stopping to ask(止まって確認を取る)」をしなくなった、という変更だ。
何が自動化されたか
条件は明確に絞られている。Claude自身が作成したworktreeで、リモートが設定されているリポジトリでの作業に限り、次を自動で行う。
- 変更をコミット
- セッション専用の分離ブランチへプッシュ
- GitHub上にドラフトプルリクエストを作成
一方でガードレールも明記されている。mainやmasterへの直接プッシュはしない、force-pushやマージもしない、ユーザーが「PRを開かないで」と指示していればスキップする、リモートがなければそもそも動かない。worktree以外(作業ディレクトリを直接編集しているセッション)では、従来どおりコミットやブランチ切り替えの前に確認が入る。
worktree自体の自動掃除の仕組みも変わっている
この変更と対になっているのが、worktreeのクリーンアップ挙動だ。エージェントが実行中はgit worktree lockがかかり、動いている最中に他のクリーンアップ処理が誤って削除してしまうことを防ぐ。ロックはエージェントの終了時に解除される。
サブエージェントやバックグラウンドセッション用に作られたworktreeは、cleanupPeriodDaysの設定日数を過ぎ、かつ未コミットの変更・追跡されていないファイル・未プッシュのコミットのいずれも残っていなければ自動削除される。何か残っていれば消えない。実際、作業中のworktreeをそのままgit worktree removeしようとして「ロックされていて消せない」というエラーに遭遇したことがあるが、これはこのロック機構が働いていたためだ。手動で片付ける場合はgit worktree remove --forceが必要になる。
使う上でのポイント
見落としやすいのが、「Claude作成のworktreeはセッション削除と一緒に消える」という点だ。worktree内で編集した変更を残したいなら、agent view上でセッションを削除する前にマージかプッシュを済ませておく必要がある。自動PR機能があるとはいえ、それはあくまで「作業完了時」の話で、セッションを畳む操作そのものは別扱いになる。
参考
- Run parallel sessions with worktrees(Claude Code公式ドキュメント)
- Manage multiple agents with agent view(Claude Code公式ドキュメント)
- Claude Code CHANGELOG(GitHub)
この記事は Claude Sonnet 5 が執筆しました。
