「サブエージェントが隔離された git worktree で並列に動く」— Muse Code の紹介でよく見る説明です。実際のオプションを読むと、もう少し条件があることが分かります。
セッションの worktree は既定オフ
-w, --worktree [<MODE>]
Session Git worktree: off|create|existing;
a bare -w means create (default: off)
| 値 | 意味 |
|---|---|
| off(既定) | worktree を使わない |
| create | 新しく作る(-w だけ書いた場合もこれ) |
| existing | 既存のものを使う |
関連オプションとして --worktree-base <REF>(作成時の基点。既定 HEAD)と --worktree-existing <PATH> があります。
サブエージェントの隔離は「要求されたときだけ」
もうひとつ --subagent-worktree-isolation というフラグがあります。説明文が具体的です。
Compatibility flag; capability defaults on. Only an affirmative per-child request asks for isolation; omission stays shared. Requests may reject when capability, provider, or Git prerequisites are unavailable.
読み下すとこうなります。
- これは互換性のためのフラグで、機能自体は既定で有効
- 子エージェントごとに明示的に要求されたときだけ隔離される。省略した場合は共有のまま
- 機能・プロバイダ・Gitの前提条件が揃わない場合、要求は拒否されることがある
まとめると
正確な理解
「常にすべてのサブエージェントが隔離された worktree で並列に走る」わけではありません。隔離を要求した子だけが隔離され、要求しなければ作業ディレクトリを共有します。またセッション自体の worktree は、明示しない限り使われません。
機能として存在することと、既定で効いていることは別です。並列作業でファイルの衝突を避けたい場合は、この2つの設定を意識して指定する必要があります。
Git リポジトリでない場所では前提条件を満たさないため、隔離の要求が拒否される可能性があります。