Claude Code を並列実行する方法: git worktree で複数セッションを安全に動かす

同じフォルダで2つのセッションを動かすと、互いの作業を踏みます。避ける方法が git worktree です。claude --worktree、git worktree add、セッション再開と一覧、使用量の限界、Windows でつまずく点を、公式ドキュメントと実際の実行に沿ってまとめました。

要点
  • 同じフォルダで複数のセッションを動かすと、互いのファイルを書き換えます。避ける方法は、セッションごとに作業フォルダを分けること、つまり git worktree です。
  • claude --worktree 名前 と実行するだけで、.claude/worktrees/名前 に専用の worktree ができ、そこでセッションが始まります。別のターミナルで別の名前を付ければ、2つ目のセッションです。
  • worktree は新しいチェックアウトなので、.env と依存パッケージは入っていません。.worktreeinclude で env ファイルを持ち込み、インストールは worktree ごとにやり直します。
  • セッションが増えても、使用量の枠は増えません。並列にするほど、上限には早く届きます。

Claude Code 並列実行をしたくなる場面は、すぐに来ます。片方に新機能を任せているあいだに、もう片方でバグを直してほしい。ただ、同じフォルダで2つのセッションを走らせると、かなりの確率で互いの作業を踏みます。

この記事では、ぶつかる理由、git worktree で何が変わるのか、Claude Code とデスクトップアプリでの使い方、複数セッションの再開と一覧、Windows で引っかかりやすい点、そして並列にしたときの限界を順に書きます。コマンドとオプションは、2026年10月7日に確認した Anthropic と Git の公式ページに載っているものだけを使っています。出典は末尾にまとめました。

Windows マシンで実際に確かめたのは次のものです(2026年10月7日、Claude Code 2.1.280、Git 2.55.0)。claude --help で --worktree、--name、--resume、--continue を確認し、使い捨てのリポジトリで git worktree add、list、remove(--force を含む)、prune を実行しました。claude --worktree でセッションを始める操作は、サインインが要るので実行していません。

Claude Code 並列実行で、同じフォルダだとぶつかる理由

セッションが読み書きするのは、プロジェクトのフォルダにある実際のファイルです。2つのセッションが同じフォルダを指していれば、片方が書き換えたファイルを、もう片方は次に読んだ時点で書き換え後の状態として見ます。作業の途中のコードを前提に、別の作業が進んでしまうわけです。

ファイルだけではありません。1つのフォルダには、チェックアウト中のブランチが1つしかありません。片方のセッションがブランチを切り替えれば、もう片方の足元のファイルも丸ごと入れ替わります。コミットも同じインデックスを共有するので、2つの作業の変更が1つのコミットに混ざることがあります。

セッションが別々のファイルしか触らないなら、問題が出ないこともあります。ただ、ぶつかったときは何が起きたのか調べるのに時間がかかるので、最初から分けておくほうが楽です。

git worktree とは

git worktree は、1つのリポジトリに対して作業用のフォルダを複数作る機能です。Git の公式ドキュメントによると、新しい worktree は、HEAD や index のような worktree ごとのファイルを除いて、すべてを元のリポジトリと共有します。履歴とリモートは共通で、ファイルとブランチだけがフォルダごとに独立します。リポジトリ全体をもう一度 clone するのとは違い、履歴が重複しません。

覚えておくことが1つあります。同じブランチを2つの worktree で同時にチェックアウトすることはできません。実際に、feature-a を使っている worktree があるときに同じブランチで別の worktree を作ろうとすると、fatal: 'feature-a' is already used by worktree と断られました。「1つのブランチにつき1つの作業フォルダ」と考えると整理しやすいです。

Anthropic のドキュメントも、並列セッションの隔離にこの仕組みを使っています。ただし分離されるのはファイルの編集です。開発サーバーのポート番号やデータベースのような、フォルダの外にあるものは分離されません。その点は自分で気をつけてください。

Claude Code の worktree:--worktree で並列セッションを作る

いちばん手軽なのは、Claude Code 自身のオプションです。プロジェクトのフォルダで、名前を付けて実行します。

claude --worktree feature-auth

-w と短く書くこともできます。これで、リポジトリのルートの .claude/worktrees/feature-auth/ に worktree が作られ、worktree-feature-auth という新しいブランチが切られ、その中で Claude Code が始まります。名前を省略すると、bright-running-fox のような名前が自動で付きます。

2つ目のセッションは、別のターミナルで別の名前を付けて同じように実行するだけです。

claude --worktree fix-login

うまくいかないときは、次の点を確認してください。

  • リポジトリにコミットが1つもないと失敗します。worktree はコミットから作るためで、Failed to resolve base branch "HEAD": git rev-parse failed というエラーが出ます。
  • そのフォルダで一度も Claude Code を起動したことがない場合は、先に claude だけを実行して、信頼するかどうかの確認に答えておく必要があります。
  • .claude/worktrees/ を .gitignore に入れておくと、worktree の中身が本体のチェックアウトで未追跡ファイルとして表示されずに済みます。公式ドキュメントも勧めています。

どのブランチから分かれるか

標準の設定("fresh")では、新しい worktree は今いるブランチではなく、リモートのデフォルトブランチ(たいてい main)から分かれます。まだ push していないコミットや、作業中の機能ブランチの状態は含まれません。今の作業を引き継ぎたい場合は、設定の worktree.baseRef を "head" にします。そうすると、現在のローカルの HEAD から分かれます。

{
  "worktree": {
    "baseRef": "head"
  }
}

書く場所は、自分の全プロジェクトに効かせるなら %USERPROFILE%\.claude\settings.json です。baseRef にブランチ名は指定できません。特定のブランチから始めたいときは、次の方法 2 で自分で作ります。

プルリクエストから始める

レビューしたいプルリクエストがあるなら、番号を渡せます。シェルが # を注釈の始まりと解釈しないように、引用符で囲みます。

claude --worktree "#1234"

origin からそのプルリクエストを取得して、.claude/worktrees/pr-1234 に worktree を作ります。

方法 2:git worktree を自分で作る

置き場所や元のブランチを自分で決めたいときは、Git のコマンドを直接使います。Claude Code の公式ドキュメントにも、この手順が載っています。新しいブランチを切って worktree を作る場合は、次のとおりです。

git worktree add ../project-feature-a -b feature-a

../project-feature-a が作業フォルダ、feature-a が新しいブランチの名前です。すでにあるブランチを使うなら、-b を付けずにブランチ名を渡します(git worktree add ../project-bugfix fix-issue-456)。作ったフォルダに移動して、そこで Claude Code を起動します。

cd ../project-feature-a
claude

一覧と削除のコマンドも覚えておくと役に立ちます。

git worktree list
git worktree remove ../project-feature-a

git worktree list は、本体と追加した worktree の場所、チェックアウト中のコミットとブランチを一覧にします。git worktree remove は、未コミットの変更や未追跡のファイルが残っている worktree を削除しません。手元でも contains modified or untracked files, use --force to delete it と断られました。どうしても消すなら --force を付けますが、その中の変更は失われます。

ブランチを作らず、実験用の使い捨てが欲しいなら、git worktree add -d ../scratch のように -d(--detach)を付けます。ブランチに属さない worktree になります。

特に理由がなければ、方法 1 で十分です。.worktreeinclude によるファイルのコピーや後片付けまで Claude Code が面倒を見てくれます。方法 2 は、リポジトリの外に置きたいときや、特定の既存ブランチから始めたいときに向いています。

並列開発の進め方:2〜3セッションを同時に動かす

並列開発は、セッションの数を増やすほど楽になるわけではありません。基本は、別々の作業を別々の worktree に任せることです。たとえば次のような分け方があります。

  • セッション 1:新機能(claude --worktree feature-auth)
  • セッション 2:バグ修正(claude --worktree fix-login)
  • セッション 3:本体のフォルダで調べ物だけをさせる

以下は公式の決まりではなく、使っていて楽になる私たちの目安です。作業ごとに触るファイルがなるべく重ならないように切り分けます。同じファイルを2つの worktree で編集すると、マージのときに結局ぶつかるからです。名前は feature-auth のように、作業の内容がわかる半角の英小文字とハイフンにしておくと、フォルダ名にもブランチ名にもそのまま使えます。同じ名前でもう一度 --worktree を実行すると、Claude Code は新しく作らずに、すでにある worktree を開きます。作業の再開には便利ですが、別の作業で名前を使い回さないでください。

私たちの感覚では、人が同時に目を配れるのは、せいぜい2〜3セッションです。それ以上は、確認待ちを見落とすほうが、並列で得た時間より高くつきます。

デスクトップアプリで worktree を使う

Claude のデスクトップアプリの Code タブでも、同じ仕組みを使えます。ただし、自動ではありません。Git リポジトリのセッションを始めるときに、ブランチ名の横にある worktree のオプションを自分で選びます。選ばなければ、そのセッションは本体のフォルダで動きます。

  • 新しいセッションは、Windows では Ctrl+N で作ります。サイドバーのセッションの切り替えは Ctrl+Tab と Ctrl+Shift+Tab です。2つを並べて見るには、Ctrl を押しながらサイドバーのセッションをクリックします。
  • worktree の置き場所は、標準では <プロジェクトのルート>/.claude/worktrees/ です。Settings → Claude Code の「Worktree location」で変更でき、ブランチ名の前に付けるプレフィックスも同じ画面で設定できます。
  • 終わった worktree は、サイドバーでセッションにマウスを合わせて、アーカイブのアイコンを押すと削除されます。「Auto-archive after PR merge or close」をオンにすると、プルリクエストがマージまたはクローズされたときに、実行の終わったローカルセッションが自動でアーカイブされます。
  • worktree を使うセッションには Git が必要です。「Git is required」と出たら、Git for Windows を入れてください(winget install Git.Git でも入ります)。

デスクトップアプリで作る worktree にも、次の節の .worktreeinclude が効きます。公式のデスクトップアプリは、並列セッションの管理を自前で持っています。AigoPilot との位置づけは、公式デスクトップアプリの並列機能との違いのページにまとめています。

worktree の環境を整える:.env と依存パッケージ

worktree は新しいチェックアウトです。Git が追跡しているファイルだけが入っていて、.gitignore で除外されているものは入っていません。.env も、node_modules のようなインストール済みの依存パッケージも、最初は空です。依存パッケージは、worktree の中でインストールし直します。Claude にそのまま頼んでもかまいませんし、worktree のフォルダで、プロジェクトのセットアップを自分で実行しても同じです。

.env のようなファイルは、プロジェクトのルートに .worktreeinclude を置くと、worktree が作られるたびに自動でコピーされます。書き方は .gitignore と同じです。

.env
.env.local
config/secrets.json

コピーされるのは、パターンに一致し、かつ .gitignore で除外されているファイルだけです。この設定は、--worktree で作る worktree、サブエージェントの worktree、デスクトップアプリの並列セッションのすべてに効きます。公式ドキュメントが対象として挙げているのは、Claude Code が作る worktree です。自分で git worktree add を実行して作った場合は、.env を自分でコピーしておくと確実です。秘密情報を含むファイルをコピーすることになるので、書く前に何を入れるかを一度考えてください。

セッション再開とセッション一覧:増えたセッションを見失わない

worktree で衝突は避けられます。そのかわり、どのセッションがどの作業で、どれがまだ動いていて、どれが自分の返事を待っているのか、という問題が増えます。Claude Code 自身にも、再開と一覧のための機能があります。

  • claude -n "auth-rebuild"(--name)で、セッションに名前を付けて始められます。名前は /resume の選択画面にも表示されます。
  • セッション再開は claude --resume 名前 です。名前や ID を付けずに claude --resume だけを実行すると、対話式のセッション一覧が開きます。claude --continue(-c)は、今のフォルダで最後に動かした会話を再開します。
  • 終了しないまま終わった worktree のセッションを再開すると、Claude Code はそのセッションを元の worktree に戻します。終了時に worktree を残した場合は、表示される claude --worktree 名前 --resume で戻れます。
  • claude agents を実行すると、バックグラウンドで動くセッションを1つの画面で見渡せるエージェントビューが開きます。作業中、入力待ち、完了、失敗が、行ごとに区別して表示されます。公式ドキュメントでは、この機能はリサーチプレビューです。

Codex も併用している場合や、プロジェクトが複数ある場合は、これだけでは足りません。Claude Code の機能は Claude Code のセッションが対象で、Codex は別の入口を使うからです。複数セッションを1画面で管理できるアプリを使うと、プロジェクトをまたいで、どれが作業中でどれが返事待ちかを一覧できます。

並列実行の限界:レート制限とコスト

worktree でファイルは分かれても、使用量の枠は分かれません。Claude のプランの使用量は、5時間のローリング枠と週ごとの上限で数えられ、Claude のチャットと同じ枠から引かれます(claude.com/pricing の記述)。同じアカウントで3つのセッションを動かしても、枠が3つになるわけではありません。3つ分の速さで、1つの枠を使うことになります。

  • 上限に届くと、「セッション制限に達しました」「週間制限に達しました」といったメッセージが出ます。リセットの時刻も表示されます。Claude Code v2.1.234 以降では、リセット後に中断された作業を自動で待って続ける機能もあります(/rate-limit-options)。
  • 残りは /usage で確認できます。使用量クレジットをオンにしていれば、/usage-credits で枠を超えて続ける設定を開けます。
  • API キーや、Bedrock などのクラウド経由で使う場合は、トークンごとに課金されます。公式のコストのページは、1人あたりのコストが「複数インスタンスの実行や自動化などの使用パターン」で大きく変わると書いています。

Pro や Max の金額は変わりやすいので、Claude の料金ページで確認してください。

並列実行が割に合わないとき

以下は公式の説明ではなく、私たちの考えです。次のような場合は、並列にしないほうが早く終わります。

  • 作業が同じファイルを触る。最後のマージで手間が増えます。
  • 片方の結果を、もう片方が前提にする。結局、順番に進めることになります。
  • すでに使用量の上限が近い。並列にすると、その日の残りの作業ができなくなります。
  • 自分が確認する時間が足りない。承認待ちのセッションが増えるだけです。

後片付けとブランチ

worktree は放っておくと増えます。Claude Code の --worktree で作ったものは、セッションを終了するときに確認が出ます。

  • 変更がなく、名前を付けずに始めたセッションなら、worktree とブランチは自動で削除されます。
  • 変更やコミットが残っているときは、残すか消すかを尋ねられます。消すと、その中の作業もブランチごと失われます。
  • -p による非対話の実行には終了時の確認がないので、worktree は自動では消えません。git worktree remove で消します。ロックされていると拒否されるので、その場合は先に git worktree unlock を実行します。

自分で作った worktree は、自分で消します。作業が終わってブランチをマージしたら git worktree remove ../project-feature-a です。フォルダをエクスプローラーで直接消してしまったときは、git worktree prune で管理情報を片付けられます。ただし公式ドキュメントも、次からは git worktree remove を使うよう書いています。

Windows で気をつけること

  • Git が必要です。worktree は Git の機能なので、デスクトップアプリで worktree を使うセッションには Git for Windows が要ります。
  • 「今後は確認しない」の承認は、worktree ごとに残ります。Windows 以外では、worktree で承認した Bash コマンドのルールが本体の .claude/settings.local.json に保存され、他の worktree にも効きます。Windows では、ルールがその worktree に残ります。そのため、worktree を増やすと、同じコマンドでも承認を何度か求められることがあります。
  • リンクを含むフォルダを消しても、リンク先は消えません。worktree の中のフォルダが NTFS ジャンクションやシンボリックリンクなら、Claude Code が worktree を削除するときに消えるのはリンクだけです。ただし .claude、.claude/worktrees、worktree のフォルダそのものがシンボリックリンクだと、worktree は作られません。
  • パスは短く保つのがおすすめです。worktree ごとに node_modules のような階層の深いものを入れ直すので、置き場所は浅く、名前は短くしておくと安全です。これは公式の決まりではなく、一般的な注意です。

うまくいかないとき

  • worktree が作られず、フィルタードライバーに関するエラーが出る。リポジトリの .git/config に独自のフィルターが設定されていると、Claude Code は worktree の作成を断ることがあります。直し方は、公式の worktree のページの「トラブルシューティング」にあります。
  • Git LFS のファイルが、中身のないポインターファイルになる。worktree の中で git lfs pull を実行すると、実際のファイルが取れます。
  • 「Refusing to use ... as an isolation worktree」と出る。worktree の中から Claude Code を起動していた場合は、メインのチェックアウトから起動し直してください。

作業が終わったときに気づけるように、完了の知らせを受け取る設定も入れておくと便利です。手順は、作業完了の通知の記事にあります。

よくある質問

worktree を使わずに、同じフォルダで Claude Code を並列で動かしても大丈夫ですか?

セッションが別々のファイルしか触らなければ、問題が出ないこともあります。ただ、片方が書き換えたファイルをもう片方がそのまま読むので、ぶつかる可能性は残ります。ブランチの切り替えやコミットも1つのフォルダで共有されます。作業を分けたいなら、セッションごとに worktree を使うのが安全です。

claude --worktree で作った worktree に、.env は入りますか?

そのままでは入りません。worktree は新しいチェックアウトなので、gitignore されたファイルは存在しません。プロジェクトのルートに .worktreeinclude を置き、コピーしたいファイル(.env など)を gitignore と同じ書き方で並べると、worktree を作るたびに自動でコピーされます。コピーされるのは、パターンに一致し、かつ gitignore されているファイルだけです。

Claude のデスクトップアプリは、自動で worktree を使いますか?

いいえ。Git リポジトリでセッションを始めるときに、ブランチ名の横にある worktree のオプションを自分で選びます。選んだセッションだけが、専用の worktree で動きます。置き場所とブランチ名のプレフィックスは、Settings の Claude Code で変更できます。

worktree を削除すると、ブランチも消えますか?

claude --worktree で作った worktree を、終了時の確認で削除した場合は、フォルダとブランチの両方が、その中の作業ごと消えます。変更がなく、名前を付けずに始めたセッションなら、確認なしで自動的に削除されます。git worktree remove で消す場合は、未コミットの変更や未追跡のファイルがあると拒否されます。--force を付けると削除できますが、その中の変更は失われます。

同じブランチを2つの worktree でチェックアウトできますか?

できません。Git の仕様で、1つのブランチは同時に1つの worktree でしかチェックアウトできません。同じ内容から別々に作業したいときは、それぞれ別のブランチを切ってください。

worktree を作ると、node_modules も使い回せますか?

使い回せません。worktree は追跡されているファイルだけのチェックアウトなので、依存パッケージは worktree の中でインストールし直す必要があります。Claude にインストールを頼むか、worktree のフォルダで自分でセットアップを実行してください。

Claude Code を並列実行すると、使用量の上限に早く届きますか?

届きます。worktree で分かれるのはファイルで、使用量の枠は分かれません。Claude のプランでは、同じアカウントのセッションが1つの枠(5時間のローリング枠と週ごとの上限)から引かれるので、セッションを増やした分だけ早く減ります。残りは /usage で確認できます。

出典