アクセス解析は同意後だけ使います。詳細

使い方

Claude Codeをworktreeで並列に動かす方法⁠|複数セッションの分け方と注意点

要点この記事の答え
  1. 並列にするなら、セッションごとに別のworktreeを使います。
  2. claude --worktree 名前で、ファイルとブランチが分かれます。
  3. ポートと依存パッケージは、worktreeごとに別に用意します。
Claude Codeを並列に動かすには、セッションごとに別のgit worktreeを使い、claude --worktree 名前で始めると、ファイルとブランチが分かれて編集がぶつからず、終わったら残すか消すかを選ぶ。

Claude Codeを複数同時に動かすなら、セッションごとに別のgit worktreeを使います。worktreeは、同じリポジトリの履歴を共有しながら、ファイルとブランチを別にした作業フォルダです。1つのセッションで機能を作りながら、別のセッションでバグを直しても、編集中のファイルを直接上書きし合うことがありません(同じ箇所を直した場合は、あとで統合するときに衝突します)。

いちばん簡単な始め方は、ターミナルでclaude --worktree 名前と打つことです。別のターミナルで名前を変えてもう一度打てば、2つめの独立したセッションが始まります。

手順は、2026年10月23日に公式のworktreeの説明と並列実行の比較と照らし合わせました。

worktreeとは何か

gitのworktreeは、1つのリポジトリから、別のフォルダに別のブランチを取り出せるgitの標準機能です。履歴とリモートは共有し、ファイルは別になります(gitの説明)。用語集ではGit Worktreeにあたります。

Claude Codeのセッションを、それぞれ別のworktreeで動かすと、各セッションが自分用のファイルのコピーを編集します。同じファイルを同時に直して壊し合う事故を防げます。

claude --worktreeで始める

--worktree(短くは-w)に名前を付けると、独立したworktreeを作って、その中でClaudeを始めます。

コマンド
claude --worktree feature-auth

公式の説明では、既定でリポジトリのルートの.claude/worktrees/<名前>/にフォルダができ、worktree-<名前>という新しいブランチが作られます。名前を省略すると、bright-running-foxのような名前が付きます。

  • 初めてのフォルダでは、先に一度claudeを実行して、信頼の確認に応じておきます。しないと--worktreeはエラーで止まります
  • .claude/worktrees/は、.gitignoreに入れておくと、元のフォルダに未追跡のファイルとして出ません
  • worktreeは新しい取り出しなので、必要に応じて、依存パッケージの導入など開発環境の用意を、そのフォルダで行います。Claudeに頼んでも構いません
  • 既存のブランチから始めたいときや、リポジトリの外に置きたいときは、gitで直接作ります
コマンド
git worktree add ../project-feature-a -b feature-a
cd ../project-feature-a
claude

セッションの中で「worktreeで作業して」と頼むこともできます。

何を元に分かれるか

新しいworktreeは、既定では、リモートの既定ブランチ(たいていmain)から分かれます。リモートがない場合や、origin/HEADを取得できない場合は、手元のHEADから分かれます。手元の未pushのコミットを持ち込みたいときは、設定のworktree.baseRefを"head"にします。ブランチ名は指定できません。

設定
{
  "worktree": {
    "baseRef": "head"
  }
}

#1234のように番号を付けてclaude --worktree "#1234"とすると、そのプルリクエストの先頭のコミットから始められます。

.envなどを持ち込む

worktreeは新しい取り出しなので、gitに入れていない.envなどはありません。プロジェクトのルートに.worktreeincludeというファイルを置くと、新しいworktreeに自動で写されます。書き方は.gitignoreと同じです。写されるのは、パターンに一致し、かつgitの対象外(ignore)になっているファイルだけです。.gitignoreに入っていない.envは、ここに書いても写りません。

テキスト
.env
.env.local

終わったときの片付け

対話のセッションを終えるとき、Claudeはworktreeに消すと失われる作業(変更、未追跡のファイル、新しいコミット)があるか調べます。

  • きれいなとき 名前を付けなかったセッションは、worktreeとブランチを自動で消します。名前を付けたセッションは、残すかどうかを先に聞きます
  • 作業が残っているとき 残すか消すかを聞かれます。残すと、フォルダとブランチが残ります。消すと、そこにある作業ごと消えます
  • 確かめられないとき 自動では消さず、聞かれます

残した作業に戻るには、終了時に表示されるclaude --worktree <名前> --resumeを使います。-pで動かした非対話のセッションは、終了時の確認がないので、自動では片付きません。自分でgitのコマンドで消します。未コミットの変更や未追跡のファイルがあるworktreeは、git worktree removeが断るので、消してよいときは--forceを付けます。

コマンド
git worktree list
git worktree remove ../project-feature-a

サブエージェントと並列セッションの違い

公式は、Claudeに複数の作業を任せる方法を、いくつか挙げています。worktreeは、その土台の1つで、ファイルの編集を分けるためのものです。

方法何をするか向いている場面
方法サブエージェント何をするか1つのセッションの中で、横道の作業を別の文脈で行い、要約を返す向いている場面検索結果やログが会話を埋めてしまうとき
方法自分で開く並列セッション(worktree)何をするかセッションごとにファイルのコピーを分ける向いている場面独立した作業を自分で進めるとき
方法エージェントビュー(claude agents)何をするか背景のセッションを1画面で見て、手が要るものだけ対応する向いている場面独立した作業を任せて、あとで見るとき
方法エージェントチーム何をするか共有のタスク表で、複数のセッションを組ませる(実験的で、既定では無効)向いている場面プロジェクトを分けて割り当てたいとき

サブエージェントも、worktreeの中で動かせます。「エージェントにはworktreeを使って」と頼むか、自作のサブエージェントのフロントマターにisolation: worktreeを書きます。変更がなければ、一時のworktreeは自動で消えます。サブエージェント自体は、次の記事で説明しています。

関連記事広げるClaudeサブエージェントの作り方|使い方・並列実行・worktreeClaude Codeのサブエージェントは、独立した文脈で調査や作業を任せる仕組みです。作り方、並列処理の具体例、worktreeでの並行作業、Agent Teamsとの違いまでまとめて解説します。

次の表は、「同じファイルを触るか」で選ぶときの目安です。公式の説明にあわせています。

状況公式の説明
状況作業が同じファイルに触れる公式の説明worktreeで分ける。サブエージェントも自分で開くセッションも、別々のworktreeを使える
状況エージェントチームを使う公式の説明チームの仲間はworktreeで分けられないので、ファイルの持ち分を分けて割り当てる
状況セッション同士で情報を渡したい公式の説明セッション間のメッセージで、結果や状況を渡せる

エージェントチームの有効にし方、頼み方、トークンの使い方は、次の記事にまとめています。

関連記事広げるClaude Codeのエージェントチーム(Agent Teams)とは?使い方・設定・料金と注意点Claude Codeのエージェントチーム(Agent Teams)を公式情報と実画面で解説。有効にする設定、始め方と頼み方、in-processと分割ペイン(tmux、iTerm2)、Windows・VS Codeでの扱い、タスクとメッセージ、料金とトークン、制限、サブエージェントやエージェントビューとの違いまで。

気をつけること

まず、公式の説明にあることです。

  • 名前を再利用すると、前のworktreeを開き直します。 同じ名前で--worktreeを実行すると、新しく作らず、すでにあるものを開きます
  • 許可の承認は共有されます。 worktreeで、Bashのコマンドに「今後は聞かない」を選ぶと、元のフォルダの.claude/settings.local.jsonに保存され、ほかのworktreeにも効きます。Windowsなど、リポジトリのルートを使わない場合は、そのworktreeだけに残ります
  • 使う量も増えます。 複数のセッションやサブエージェントを同時に動かすと、トークンの使用量が増えます(費用の説明)
  • gitに入れていないファイルは、自動では写りません。 .worktreeincludeで指定します
  • Git LFSをこのリポジトリだけに入れていると、Claudeが作るworktreeには、実体でなくポインタのファイルが入ります

次は、公式の説明には書かれていない、編集部の考えです。

  • 統合。 worktreeごとにブランチが分かれるので、並列で進めた結果は、最後にマージなどで1つにまとめる必要があります。同じ場所を直していれば、そのときに衝突が起きます
  • ポート。 worktreeを分けても、動かす開発サーバーは同じPCの上のプロセスです。2つのセッションが同じポート番号で開発サーバーを動かそうとすると、サーバーや起動の設定によっては、後から動かしたほうが起動に失敗します。セッションごとにポートを変えます
  • ディスク。 worktreeごとに、ファイルのコピーと、導入した依存パッケージが増えます。使い終わったworktreeは消します
  • データベース。 同じ開発用データベースを複数のセッションが書き換えると、結果が混ざります

使うときの流れ

  1. 作業ごとにclaude --worktree 名前で始める
  2. 必要なら依存パッケージを入れ、開発サーバーのポートを分ける
  3. 終えたらコミットして、ブランチをまとめる(プルリクエストなど)
  4. worktreeを片付ける

作業を始める前に方針を固めたいときは、プランモードが使えます。用語集のプランモードと、次の記事を見てください。

関連記事使い方Claude Codeの使い方|初心者が最初の30分でやることと毎日のコツClaude Codeの使い方を、インストールから最初の作業、差分の確認と巻き戻しまで実際の画面で解説。毎日使うコマンドとキー、頼み方のコツ、よくある失敗もまとめます。

コマンドの全体は、次の記事にあります。

関連記事使い方Claude Codeのコマンド一覧|スラッシュコマンド・CLI・更新コマンドの使い方Claude Codeで使えるコマンドを一覧で解説。まず覚える10個、目的別のスラッシュコマンドの一覧、/goal・/loop・/btw・/designの使い方、ターミナルで打つCLIのコマンド、インストールと更新(claude update)のコマンド、ショートカット、自分でコマンドを作る方法までまとめます。

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

デスクトップアプリには、セッションごとに独立したworktreeで動かす機能があります。公式は、デスクトップアプリの並列セッションの説明を案内しています。アプリの概要は、次の記事にあります。

関連記事入れる・困ったときClaude Code Desktopの入れ方|Mac・Windowsのダウンロードから最初の依頼までClaude Codeのデスクトップアプリは、公式サイトからダウンロードして入れるだけで使えます。Mac・Windowsでの入れ方、Codeタブの開き方、最初の依頼、権限のモード、ターミナルのCLIとの違いを比較表で解説します。

よくある質問

Claude Codeを並列に動かすには、どうしますか?

セッションごとに別のworktreeで動かします。claude --worktree 名前を、別のターミナルで名前を変えて実行すれば、独立したセッションが増えます。

worktreeは、どこにできますか?

既定では、リポジトリのルートの.claude/worktrees/<名前>/にできます。ブランチはworktree-<名前>です。gitで直接作れば、好きな場所に置けます。

サブエージェントと、並列のセッションは何が違いますか?

サブエージェントは、1つのセッションの中で、横道の作業を別の文脈で行って要約を返します。並列のセッションは、自分で複数開いて、worktreeでファイルを分けます。

worktreeを使い終わったら、どうしますか?

対話のセッションを終えるときに、状態に応じて、残すか消すかを聞かれます。何も変更がなく名前も付けていないworktreeは、自動で消えます。自分で消すならgit worktree removeで、未コミットの変更があれば--forceが要ります。作業が残っているものを消すと、その作業も消えます。

.envなどがworktreeにありません。

worktreeは新しい取り出しなので、gitに入れていないファイルは写りません。プロジェクトのルートに.worktreeincludeを置いて、写したいファイルを書きます。