VS CodeでClaudeとCodexを同じリポジトリに同時投入すると、同じファイルを書き換えたり、一方の未完成な変更をもう一方が参照したりして、差分が混ざりやすくなります。
VS Code 1.130では、この問題への実用的な解決策として、Agents windowの「New Worktree」がCopilotだけでなく、Agent Host上で動くClaudeとCodexにも拡大されました。同じワークスペースを指定したうえで、Claude用とCodex用に別々のセッションを作成し、両方でNew Worktreeを有効にすれば、それぞれを別のGit worktreeに隔離して並列実行できます。
重要なのは、同じセッション内でチャットを増やすのではなく、ClaudeとCodexで別々のセッションを作ることです。これにより、変更内容を個別にレビューし、必要なものだけを順番にマージできます。VS Code 1.130は2026年7月22日に公開され、このworktree対応拡大が正式なリリースノートに記載されています。(Visual Studio Code)
VS Code 1.130でClaude・Codexのworktree分離が可能になった
VS Code 1.130より前のAgents windowでは、New Worktreeによるセッション分離は主にCopilotハーネス向けの機能でした。
1.130では、Agent Host上で動作するエージェントハーネス全体にworktree分離が拡大され、ClaudeとCodexのセッションも対象になりました。公式リリースノートでは、同じワークスペースに対して異なる機能を担当する複数セッションを立ち上げやすくなったと説明されています。(Visual Studio Code)
| 項目 | 従来 | VS Code 1.130 |
|---|---|---|
| New Worktreeの主な対象 | Copilotハーネス | Agent Host上のClaude・Codexにも拡大 |
| 同一リポジトリの並列編集 | 差分が同じフォルダに混ざりやすい | セッションごとに別worktreeへ分離 |
| 変更レビュー | セッション間の区別が難しい | セッション単位で差分を確認可能 |
| 並列作業の用途 | 限定的 | 別機能、別モジュール、別案の同時実装 |
ただし、対象になるのは単にClaude拡張機能やCodex拡張機能を開いた場合ではありません。Agent Hostを経由して起動されたハーネスのセッションであることがポイントです。
Agent Hostとは何か
Agent Hostは、Copilot、Claude、Codexなどのコーディングエージェントを、VS Code本体とは別の専用プロセスで実行する仕組みです。
VS Codeのウィンドウが直接エージェントを所有するのではなく、Agent Hostがセッションの状態を管理します。VS Code側は、そのセッションを表示・操作するクライアントとして接続します。
これにより、次のような動作が可能になります。
- 同じセッションを複数のVS Codeウィンドウから表示する
- エディターウィンドウとAgents windowの間を移動する
- 複数の異なるエージェント実装を共通の形式で扱う
- エージェントをVS Codeの拡張機能処理とは別プロセスで動かす
- ローカルだけでなく、SSH先やリモートマシン側でAgent Hostを動かす
Agent HostとVS Codeの通信には、Agent Host Protocolというエージェント非依存のプロトコルが使われます。Agent Hostがセッション状態の正本を保持するため、複数のウィンドウから同じセッションを開いても状態を同期できます。(Visual Studio Code)
Git worktreeで分離すると何が変わるのか
Git worktreeは、1つのGitリポジトリに対して複数の作業ディレクトリを持たせる機能です。
通常のブランチ切り替えでは、1つのフォルダの中身を別ブランチへ入れ替えます。一方、worktreeでは、複数のブランチや作業状態を別々のフォルダへ同時にチェックアウトできます。
概念的には、次のような構成になります。
同じGitリポジトリ
├─ メインワークスペース
├─ Claudeセッション用worktree
└─ Codexセッション用worktree
Claudeがファイルを変更しても、Codex側の作業ディレクトリには即座に反映されません。逆も同様です。
Gitの履歴やオブジェクトは共有しながら、各worktreeは独立した作業ディレクトリ、HEAD、インデックスを持ちます。そのため、同じリポジトリの別タスクを同時に進める用途に適しています。(Visual Studio Code)
ClaudeとCodexを並列実行するための必要条件
作業を始める前に、次の条件を確認します。
| 確認項目 | 内容 |
|---|---|
| VS Code | 1.130以上。表示されない場合は最新ビルドまたはInsidersも確認 |
| リポジトリ | Gitで初期化されたローカルフォルダ |
| Agent Host | chat.agentHost.enabledを有効化 |
| Agents window | プレビュー機能が利用可能な環境 |
| GitHub認証 | VS CodeでGitHubアカウントにサインイン |
| Claude | Claude Agentを有効化し、Agent Host経由で選択できること |
| Codex | Codexがセッションタイプまたはハーネスとして表示されること |
| 作業状態 | 基準ブランチの変更をコミットまたは退避済みであること |
| Workspace Trust | 対象フォルダを信頼済みであること |
Agents windowは、タイトルバーのボタン、コマンドパレット、またはcode --agentsコマンドから開けます。フォルダが信頼されていない場合、そのフォルダを対象とするエージェントセッションは開始できません。(Visual Studio Code)
ClaudeとCodexの利用条件に注意する
Claude Agentは、次の設定で有効化できます。
"github.copilot.chat.claudeAgent.enabled": true
ClaudeをAgent Host側で優先して実行する設定として、1.130のリリースノートでは次の設定が案内されています。
"chat.agents.claude.preferAgentHost": true
Codexのローカルセッションについて、VS Code公式ドキュメントではCopilot Pro+とOpenAI Codex拡張機能が前提として案内されています。クラウド版のClaudeやCodexを使う場合は、GitHub側でサードパーティーエージェントの利用を許可する必要があります。ローカル版とクラウド版では認証や課金経路が異なるため、セッションタイプを選ぶ際に混同しないよう注意してください。(Visual Studio Code)
Agent Hostを有効にする
VS Codeでコマンドパレットを開き、Preferences: Open User Settings (JSON)を実行します。
次の設定を追加します。
{
"chat.agentHost.enabled": true,
"github.copilot.chat.claudeAgent.enabled": true,
"chat.agents.claude.preferAgentHost": true
}
すでに他の設定が存在する場合は、既存のJSONへ項目を追加してください。
chat.agentHost.enabledは組織ポリシーで管理される場合があります。設定がグレーアウトしている、変更しても戻る、またはAgent Hostの選択肢が表示されない場合は、所属組織の管理設定を確認する必要があります。(Visual Studio Code)
Codexについては、安定した公開設定として案内されていない内部フラグを無理に追加するのではなく、セッションタイプまたはハーネスの一覧にCodexが表示されるかどうかで利用可否を判断するのが安全です。
作業前にメインブランチを整理する
worktreeは、Gitに記録されたコミットを基準として作成されます。メインワークスペースにしか存在しない未コミット変更は、新しく作られたworktreeへ自動的には引き継がれません。
まず、ターミナルで状態を確認します。
git status
必要な変更はコミットします。
git add .
git commit -m "Prepare base for parallel agent sessions"
まだコミットしたくない変更はstashへ退避します。
git stash push -u -m "before agent worktrees"
複数のエージェントへ同じ前提条件を与えるには、両方のセッションを作る前に基準ブランチを確定させることが重要です。
Agents windowを開く
Agents windowは、次のいずれかの方法で開きます。
タイトルバーから開く
VS Codeのタイトルバーにある「Open in Agents」を選択します。
コマンドパレットから開く
WindowsまたはLinuxではCtrl+Shift+P、macOSではShift+Command+Pを押し、次を実行します。
Chat: Open Agents Window
コマンドラインから開く
code --agents
Agents windowは通常のエディターウィンドウとは別に開きます。左側にセッション一覧、中央にチャット、右側にFilesやChangesが表示されます。複数のワークスペースと複数セッションをまとめて管理できる点が、通常のChatビューとの大きな違いです。(Visual Studio Code)
Claude用のNew Worktreeセッションを作成する
Agents windowの左上にある「New」を選択します。
ワークスペースを指定する
Workspaceの一覧から、ClaudeとCodexを並列実行したいGitリポジトリを選択します。
ここでは例として、次のリポジトリを指定したとします。
C:\projects\sample-app
Claudeを選択する
AgentまたはSession Typeの一覧から「Claude」を選択します。
Claudeが表示されない場合は、次を確認してください。
github.copilot.chat.claudeAgent.enabledが有効かchat.agentHost.enabledが有効か- GitHubアカウントへサインインしているか
- 組織ポリシーでClaudeが無効化されていないか
- VS Codeが最新ビルドか
New Worktreeを有効にする
新規セッション設定にある「New Worktree」をチェックします。
これを外したまま開始すると、今回の目的であるGit worktree単位の分離が行われません。
Claudeへ担当範囲を指定する
並列作業では、ファイル範囲を明示したプロンプトが効果的です。
認証APIの入力検証を改善してください。
変更してよい範囲:
- src/auth/**
- tests/auth/**
変更しない範囲:
- src/report/**
- package.json
- package-lock.json
- データベースマイグレーション
完了条件:
- 既存テストが成功する
- 認証APIの異常系テストを追加する
- 変更内容を簡潔にまとめる
送信すると、Claude用のworktreeで作業が始まります。
現在のセッション画面を離れず、バックグラウンドで新規セッションを開始したい場合は、送信時にAlt+Enterを利用できます。(Visual Studio Code)
Codex用のNew Worktreeセッションを作成する
Claudeの処理が続いている状態で、Agents window左側の「New」をもう一度選択します。
同じワークスペースを選ぶ
Claudeと同じGitリポジトリを指定します。
C:\projects\sample-app
同じワークスペースを選んでも、New Worktreeが有効ならClaudeの作業ディレクトリとは分離されます。
Codexを選択する
AgentまたはSession Typeから「Codex」を選択します。
New Worktreeを有効にする
Codex側でも「New Worktree」にチェックを入れます。
Claude側だけをworktreeにして、Codex側を通常フォルダにすると、Codexの変更がメインワークスペースへ直接入る可能性があります。両方を分離したい場合は、両セッションで有効化してください。
Claudeと重ならないタスクを与える
帳票出力モジュールにCSVエクスポート機能を追加してください。
変更してよい範囲:
- src/report/**
- tests/report/**
変更しない範囲:
- src/auth/**
- package.json
- package-lock.json
- データベースマイグレーション
完了条件:
- UTF-8のCSVを出力できる
- カンマと改行を含む値を正しくエスケープする
- 単体テストを追加する
これで、ClaudeとCodexが同じリポジトリを基準にしながら、別々のworktreeで並列作業します。
別セッションと同一セッション内のNew Chatを混同しない
Agents windowには、1つのセッション内で複数のチャットを作る機能もあります。
ただし、同じセッション内に追加したチャットは、会話履歴こそ分かれていても、同じワークスペースと同じworktreeを共有します。そのため、ファイル変更の衝突を防ぐ目的では使えません。
| 操作 | 会話 | worktree | 用途 |
|---|---|---|---|
| 左側のNewから別セッションを作成 | 別 | 別にできる | ClaudeとCodexの並列実装 |
| セッション内のNew Chat | 別 | 同じ | 同じ作業環境で別の質問をする |
| Side Chat | 別 | 同じ | 本筋を汚さず補足質問する |
worktreeを分離したい場合は、セッション上部の「New Chat」ではなく、左側のセッション一覧から新しいセッションを作成してください。
なお、同一セッション内の複数チャット対応はエージェントごとに差があります。公式ドキュメントではCopilot CLIとClaudeでの対応が案内されていますが、Codexでは同じ機能が利用できない場合があります。(Visual Studio Code)
ClaudeとCodexのセッションを横に並べて確認する
Agents windowでは複数セッションを横に並べられます。
次のいずれかを実行します。
- セッションを右クリックして「Open to the Side」を選ぶ
- セッションを表示領域へドラッグする
Altを押しながらセッションを選ぶ
ClaudeとCodexを左右に配置すると、進行状況や回答内容を比較しやすくなります。
ただし、Terminal、Files、Changesパネルは、現在アクティブになっているセッションの内容を表示します。左右にセッションが見えていても、右側のChangesがどちらのセッションを示しているかを確認してからレビューしてください。(Visual Studio Code)
worktreeが分離されたことを確認する
メインワークスペースのターミナルで、次を実行します。
git worktree list
複数のworktreeが作成されていれば、メインワークスペースとは別のパスが表示されます。
出力イメージは次のとおりです。
C:/projects/sample-app 4a8c123 [main]
C:/.../agent-worktrees/claude-session 4a8c123 [agent/claude-...]
C:/.../agent-worktrees/codex-session 4a8c123 [agent/codex-...]
実際の保存場所やブランチ名は、VS Codeのバージョンや実装によって異なる可能性があります。確認すべきなのは、ClaudeとCodexが同一パスではなく、別々のworktreeとして一覧に出ていることです。
Gitは1つのリポジトリに複数のworktreeを関連付け、異なるブランチを同時にチェックアウトできます。(Git)
並列実行に向いているタスクと向かないタスク
worktreeを分けても、最終的に同じブランチへマージする以上、担当範囲が重なれば競合します。
並列化しやすいタスク
| 組み合わせ | 理由 |
|---|---|
| 認証機能と帳票機能 | ディレクトリや責務を分離しやすい |
| フロントエンドと独立したバッチ処理 | 変更ファイルが重なりにくい |
| 不具合Aと不具合B | 原因箇所が異なれば同時進行しやすい |
| 実装案Aと実装案B | 両方を比較し、片方だけ採用できる |
| コード実装と独立したドキュメント整備 | 差分の衝突が少ない |
並列化を避けた方がよいタスク
| 組み合わせ | 問題 |
|---|---|
| 同じファイルのリファクタリング | 高確率で競合する |
両方がpackage.jsonを変更 | 依存関係とロックファイルが衝突しやすい |
| 複数のDBマイグレーション作成 | 番号やスキーマの前提がずれる |
| 一方の実装を前提としたテスト作成 | 別worktreeには未マージの実装が見えない |
| 共通型や共通APIの大規模変更 | 影響範囲が広く分離しにくい |
実務では、1セッションを1つの独立したマージ単位にすると管理しやすくなります。
プロンプトには変更範囲と禁止範囲を書く
エージェントへ「この機能を作って」とだけ依頼すると、想定外の共通ファイルまで変更されることがあります。
並列実行時は、次のテンプレートを使うと差分を分離しやすくなります。
目的:
実装する内容を記載
変更してよいファイル:
- src/feature-a/**
- tests/feature-a/**
変更禁止:
- package.json
- package-lock.json
- src/common/**
- migrations/**
完了条件:
- 指定テストが成功する
- lintエラーがない
- 変更理由を説明する
制約:
- 指定範囲外の変更が必要な場合は、変更せず理由を報告する
特に効果が高いのが、範囲外の変更が必要になったら勝手に変更せず、理由を報告させる指示です。
.envや依存パッケージがworktreeに存在しない場合
Git worktreeには、通常、.gitignoreで除外されたファイルはコピーされません。
そのため、次のようなファイルやフォルダが存在しないことがあります。
.env.env.localnode_modules- 仮想環境
- ローカル証明書
- ビルド成果物
- IDE固有の一時設定
VS Codeでは、git.worktreeIncludeFilesを使って、worktree作成時にコピーするGit管理外ファイルを指定できます。
{
"git.worktreeIncludeFiles": [
".env.test.local"
]
}
この設定でコピーされるのは、指定パターンに一致し、かつ.gitignoreで除外されているファイルです。(Visual Studio Code)
ただし、本番用の秘密情報を複数worktreeへ無条件にコピーする運用は避けてください。テスト専用の環境変数を使うか、必要な値だけをセッションごとに設定する方が安全です。
node_modulesもコピーできますが、容量が大きく、ネイティブモジュールやOS依存ファイルで問題が起きることがあります。パッケージマネージャーの共有キャッシュを活用し、各worktreeでインストールした方が安定するプロジェクトもあります。
開発サーバーのポート競合にも注意する
worktreeはファイルを分離しますが、PC上のネットワークポートまでは分離しません。
ClaudeとCodexが両方とも次のコマンドを実行すると、通常は後から起動した側でポート競合が発生します。
npm run dev
一方を3000番、もう一方を3001番にするなど、セッションごとにポートを変更します。
npm run dev -- --port 3000
npm run dev -- --port 3001
データベース、Dockerコンテナ名、一時ファイルの保存先なども、必要に応じてセッションごとに分けてください。
変更内容をレビューしてマージする
各セッションのChangesパネルでは、追加、変更、削除されたファイルを確認できます。
VS Code 1.130では、複数ファイルの差分表示がコンパクトになり、ファイルごとの追加行数と削除行数も確認できるようになりました。大きすぎる変更や、依頼範囲外の編集を見つけやすくなっています。(Visual Studio Code)
セッションごとにテストする
Agents windowでは、セッションのworktreeをカレントディレクトリとしたターミナルを開けます。
例えば、Claude側で次を実行します。
npm run lint
npm test -- auth
Codex側では次を実行します。
npm run lint
npm test -- report
Tasksへビルドやテストコマンドを登録すると、現在のセッションのworktree上で検証できます。(Visual Studio Code)
片方ずつマージする
両方のセッションを一度に取り込まず、次の順番で進めます。
- Claudeの差分をレビューする
- Claude側のテストを実行する
- Claudeの変更をマージする
- Codex側へ最新の基準ブランチを反映する
- Codex側のテストを再実行する
- Codexの変更をマージする
worktree分離セッションでは、ChangesパネルからMerge操作を行い、変更をメイン側へ取り込めます。必要に応じて上流ブランチとの同期やPull Request作成へ進めます。(Visual Studio Code)
CodexやNew Worktreeが表示されない場合
VS Code 1.130のリリースノートでは、Agent Host上のClaudeとCodexがNew Worktreeに対応したと明記されています。
一方、更新時点のAgents window一般ドキュメントでは、対応エージェントとしてCopilot CLI、Copilot Cloud、Claudeのみが記載されており、Codexに関する記述が一致していません。Agents window自体もプレビュー機能で、Agent Hostは段階的に有効化されています。つまり、リリースノート上では対応済みでも、利用中のビルドやアカウントではCodexが新規セッション候補に表示されない可能性があります。 (Visual Studio Code)
確認する順番は次のとおりです。
| 症状 | 確認する内容 |
|---|---|
| Agents windowがない | VS Codeを更新し、コマンドパレットでChat: Open Agents Windowを検索 |
| New Worktreeがない | Gitリポジトリか、Agent Hostセッションかを確認 |
| Claudeが表示されない | Claude Agent設定、GitHub認証、組織ポリシーを確認 |
| Codexが表示されない | Codex拡張機能、Copilotプラン、段階的提供状況を確認 |
| 設定が変更できない | 組織管理ポリシーを確認 |
| メインフォルダに変更がない | worktree分離では正常。Changesからマージする |
| テストが起動しない | .envや依存パッケージがworktreeにあるか確認 |
| マージで競合する | 両セッションが同じファイルを変更していないか確認 |
CodexがAgents windowに出ない環境では、非公開または内部向けの設定値を追加して無理に有効化するより、最新の安定版またはInsidersで利用可否を確認する方が安全です。
UIでCodexを分離できない場合の手動worktree作成方法
Agents windowのCodex対応が利用できない場合でも、GitコマンドでClaude用とCodex用のworktreeを作れば、同じ分離構成を手動で実現できます。
基準ブランチがmain、プロジェクト名がsample-appの場合は、メインワークスペースで次を実行します。
git worktree add -b agent/claude ../sample-app-claude main
git worktree add -b agent/codex ../sample-app-codex main
それぞれを別のVS Codeウィンドウで開きます。
code ../sample-app-claude
code ../sample-app-codex
sample-app-claude側でClaudeを起動し、sample-app-codex側でCodexを起動します。
この方法ではAgents windowによる自動管理ではありませんが、ファイル編集は確実に別の作業ディレクトリへ分かれます。Git公式ドキュメントでも、git worktree addによって同じリポジトリへ複数の作業ツリーを関連付け、複数ブランチを同時にチェックアウトできると説明されています。(Git)
作業完了後、変更をマージしたことを確認してからworktreeを削除します。
git worktree remove ../sample-app-claude
git worktree remove ../sample-app-codex
git worktree prune
未コミット変更が残っているworktreeは通常削除できません。--forceで強制削除する前に、必要な差分が残っていないか確認してください。(Git)
権限設定を緩めすぎない
並列実行では、複数のエージェントが同時にターミナルコマンドやファイル編集を行います。
作業を速くするためにすべての権限確認を無効化すると、誤った削除コマンド、外部通信、想定外の依存パッケージ追加などを見逃しやすくなります。
特にClaudeの権限確認を全面的に回避する設定について、公式ドキュメントは、インターネットへ接続されていない隔離されたサンドボックス以外では有効にしないよう警告しています。(Visual Studio Code)
安全な運用では、次を守ります。
- 信頼できるフォルダだけをWorkspace Trustの対象にする
- 本番用シークレットをworktreeへコピーしない
- パッケージ追加や削除コマンドは確認する
- エージェントごとに変更可能なディレクトリを限定する
- マージ前に必ず差分とテスト結果を確認する
- 2つのセッションを同時にメインブランチへマージしない
ClaudeとCodexを安全に並列化するための最終チェック
VS Code 1.130でClaudeとCodexを別Git worktreeへ分離する流れは、次のとおりです。
- メインブランチの変更をコミットまたはstashする
chat.agentHost.enabledを有効にする- Agents windowでClaude用セッションを作り、New Worktreeを有効にする
- 同じワークスペースでCodex用の別セッションを作り、New Worktreeを有効にする
- 変更対象のファイルやディレクトリが重ならないようプロンプトで制限する
git worktree listで分離状態を確認する- 各worktreeでテストし、差分をレビューする
- 片方ずつ順番にマージする
最も重要なのは、同じセッション内にClaudeとCodexのチャットを増やすのではなく、New Worktreeを有効にした別セッションとして作成することです。
この構成なら、同じワークスペースを基準にしながら、ClaudeとCodexを異なる担当者のように動かせます。まずは変更範囲が完全に分かれている2つの小さなタスクで試し、マージと競合解消の流れを確認してから、より大きな並列開発へ広げるのが安全です。

コメント