AIエージェントの並列実行
Claude Codeは--worktreeでセッションごとにgit worktreeを作れます。並列で動かす手順と片付け方が分かります。
- 同じリポジトリで Claude Code のセッションを2つ同時に動かすなら、git worktree でエージェントごとにディレクトリとブランチを分けます。
- 1つのブランチは1つの worktree でしか取り出せません。rm で消したときは git worktree prune で掃除します。
- Claude Code の --worktree は .claude/worktrees/<name>/ に worktree-<name> ブランチで作ります。依存や .env は入っていないので、.worktreeinclude で gitignore 済みのファイルをコピーできます。
PR:この記事には、当サイトが参加するアフィリエイトプログラムの紹介枠(VPS)があります。紹介する基準は料金とリージョンだけです。
同じリポジトリで Claude Code のセッションを2つ同時に動かすなら、作業ディレクトリを分けます。分ける道具は git worktree です。この記事では、git worktree の基本操作、Claude Code の --worktree フラグ、worktree ごとの準備、並列数の決め方、片付けの順に説明します。並列で動かしたときの失敗例はサブエージェント並列運用の失敗集にまとめています。
なぜ作業ディレクトリを分けるのか
1つの作業ツリーで2つのエージェントを動かすと、ファイルの編集がぶつかります。片方の変更の途中で、もう片方がテストを走らせることもあります。ブランチの切り替えや git stash も、もう片方の作業を巻き込みます。
worktree を使うと、エージェントごとに別のディレクトリと別のブランチを持てます。履歴とリモートは共有するので、clone をもう1つ作るより軽く済みます。
git worktree の基本
編集部の検証環境で、使い捨てのリポジトリを作って試しました。git のバージョンは次のとおりです。
git version 2.54.0 (Apple Git-157)
新しいブランチ feature/login で worktree を作ります。
cd my-app
git worktree add ../my-app-login -b feature/login
Preparing worktree (new branch 'feature/login')
HEAD is now at f468d57 init
git worktree list で一覧を見ます。出力のパスは伏せています。
/tmp/my-app f468d57 [main]
/tmp/my-app-login f468d57 [feature/login]
1つのブランチは、1つの worktree でしか取り出せません。 同じブランチで2つ目を作ろうとすると、git が止めます。
fatal: 'feature/login' is already used by worktree at '/tmp/my-app-login'
git worktree remove は、未追跡のファイルや変更が残っていると削除を拒みます。
fatal: '../my-app-login' contains modified or untracked files, use --force to delete it
worktree のディレクトリを rm で直接消した場合は、git worktree prune で管理用のファイルを掃除します。試しに作った worktree を rm で消してから実行した結果です。
$ git worktree add ../my-app-tmp -b tmp
Preparing worktree (new branch 'tmp')
HEAD is now at f468d57 init
$ rm -rf ../my-app-tmp
$ git worktree prune -v
Removing worktrees/my-app-tmp: gitdir file points to non-existent location
出典:https://git-scm.com/docs/git-worktree 、2026-10-18確認
Claude Code の —worktree
Claude Code には、worktree を作ってそこでセッションを始めるフラグがあります。今のバージョンの --help で確かめました。一時ディレクトリで実行し、npm view @anthropic-ai/claude-code version の結果も同じ 2.1.302 でした。
$ npx -y @anthropic-ai/claude-code@latest --version
2.1.302 (Claude Code)
-w, --worktree [name] Create a new git worktree for this
session (optionally specify a name)
使い方は次のとおりです。
claude --worktree feature-auth
worktree はリポジトリのルートの .claude/worktrees/<name>/ に作られます。ブランチ名は worktree-<name> です。別のターミナルで別の名前を付けて実行すれば、2つ目のセッションが始まります。公式は .claude/worktrees/ を .gitignore に入れるよう勧めています。
既定では、新しい worktree はリポジトリの既定のブランチ(通常は main)から作られます。今の作業の続きから分けたい場合は、設定の worktree.baseRef を "head" にします。
出典:https://code.claude.com/docs/en/worktrees 、2026-10-18確認
worktree ごとに要る準備
worktree は新しく取り出した作業ツリーです。node_modules などの依存は入っていないので、worktree ごとにインストールします。.env のような gitignore 済みのファイルもありません。Claude Code では、プロジェクトのルートに .worktreeinclude を置くと、一致したファイルが新しい worktree にコピーされます。書き方は .gitignore と同じです。
.env
.env.local
コピーされるのは、パターンに一致し、かつ gitignore されているファイルだけです。
出典:https://code.claude.com/docs/en/worktrees 、2026-10-18確認
秘密情報をエージェントの作業ディレクトリに置く範囲は、最小限にします。考え方はClaude Codeに秘密を渡さないで扱っています。開発サーバーのポートやローカルのデータベースは、worktree 間で共有されます。同時に起動するなら、worktree ごとにポートを変えます。
並列数の決め方
サブスクリプションのプランでは、使用量はすべてのセッションで共有されます。5時間ごとの上限と週ごとの上限があり、セッションを増やすほど早く上限に近づきます。
出典:https://support.claude.com/en/articles/11145838-use-claude-code-with-your-pro-or-max-plan 、2026-10-18確認
公式のコストのページによると、Agent teams で各メンバーを plan mode で動かすと、通常のセッションの約7倍のトークンを使います。チームは小さく保つよう書かれています。/usage の内訳では、最近の使用量のうち skill、サブエージェント、plugin、MCP サーバーがそれぞれ占める割合が出ます。この数字はそのマシンのセッション履歴から計算されるので、ほかの端末や claude.ai で使った分は含まれません。
出典:https://code.claude.com/docs/en/costs 、2026-10-18確認
並列数の上限として決まった数字は、公式には見当たりません(未確認)。
サーバーで並列に回すときの注意
手元のマシンを閉じても止めたくない場合は、VPS のような常駐サーバーで動かします。並列で動かすとメモリと CPU を同時に使うので、セッションの数に合わせてサーバーの大きさを選びます。tmux などで切断後もセッションを残します。worktree ごとに依存を入れるので、ディスクの空きも確かめます。構築の手順はAIエージェントをVPSで24時間動かすにあります。
国内で常駐用のサーバーを用意するなら、時間課金で試しやすい ConoHa VPS
や、メモリ量でプランを選べる XServer VPS
が候補です。料金とプランは変わるので、契約前に公式ページで確かめてください。
片付け
--worktree で始めた対話セッションを終えると、Claude Code が worktree の中身を確かめます。
- 変更がない:名前を付けていないセッションなら、worktree とブランチを自動で消す
- 変更がある:残すか消すかを聞く。残した場合は、終了時に表示される
claude --worktree <name> --resumeで戻れる
-p を付けた非対話の実行では終了時に確認が出ないので、worktree は残ります。git worktree remove で消します。ロックされていれば、先に git worktree unlock を実行します。
出典:https://code.claude.com/docs/en/worktrees 、2026-10-18確認
まとめ
- 同じリポジトリでエージェントを並列に動かすなら、git worktree で作業ディレクトリとブランチを分ける
- 1つのブランチは1つの worktree でしか取り出せない。
removeは変更が残っていると止まる - Claude Code は
claude --worktree <name>で.claude/worktrees/<name>/を作り、worktree-<name>ブランチで始める - 依存は worktree ごとに入れる。
.envなどは.worktreeincludeでコピーできる - 使用量はすべてのセッションで共有される。並列数はプランの上限を見て決める
- 非対話で作った worktree は自動では消えないので、
git worktree removeで片付ける