# Claude CodeのGit worktree：並行セッション

> --worktree、.worktreeinclude、worktree.baseRef、サブエージェントの分離の使い方。ブランチとの違い、worktreeのクリーンアップ、よくある間違いを解説します。

Source: https://ailoot.ai/blog/ja/claude-code-git-worktree/
Canonical: https://ailoot.ai/blog/ja/claude-code-git-worktree/
Language: ja
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-045
Revision: sha256-d9af7360249c7761ad92013dc4a5a8e3873654954d2f308a1c7f7cd3b44ff8da




[Ailootの利用に関する実用情報はドキュメントにあります](https://ailoot.ai/docs/)。

## Claude CodeのGit worktreeとは

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

重要なポイント

Git worktreeは、同じリポジトリの別ブランチ用に作られた独立した作業ディレクトリです。コマンド `claude --worktree <name>` は `.claude/worktrees/<name>/` にworktreeを自動作成し、その中でClaude Codeを起動します。ターミナルが2つ → セッションが2つ → ディスク上のファイルも別々で、互いに干渉しません。Claude Code v2.0以降では標準で利用でき、シークレット用の `.worktreeinclude` とベースブランチ選択用の `worktree.baseRef` で設定できます。

</div>

同じフォルダーで複数のエージェントを並行して起動することが、2026年のスピードでvibe-codingを行うときに生じる基本的な問題です。AIエージェントは、人が誰が何に触れているのか把握するよりも速くコードを書きます。ファイルを分離せず、同じディレクトリでClaude Codeのセッションを2つ並行して起動すると、一方のセッションがもう一方の作業を上書きしてしまいます。

Git worktreeは、この問題をファイルシステムのレベルで解決します。作業するメインディレクトリが1つあります。コマンド `claude --worktree feature-auth` は、別ブランチに `.claude/worktrees/feature-auth/` フォルダを作成し、その中でClaude Codeを起動します。ファイルは分離されています。一方のセッションでの変更は、明示的にマージするまで、もう一方のセッションからは見えません。

Anthropicの公式ドキュメントでは、次のように説明されています。

<figure>
<blockquote>
<p>Claude Codeの各セッションをそれぞれ独自のworktreeで実行すれば、あるセッションでの編集が別のセッションのファイルに影響することはありません。一方のターミナルで機能を開発し、もう一方でバグを修正できます。</p>
</blockquote>
<figcaption>— Anthropic Docs、https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

自分で振り返る目安として、誰かの作業が半分混ざったコミットを受け取ったことがあるなら、worktreeが必要です。

## Git worktreeと通常のブランチの違い

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

重要なポイント

通常の `git checkout` は同じフォルダ内の作業コピーを切り替えます。元のブランチのファイルは、そのブランチに戻るまでディスクから消えます。`git worktree add` は、別ブランチ用の**2つ目のフォルダ**を最初のフォルダの隣に作成します。両方のブランチが同時にディスク上に存在し、簡単な `cd` で移動できます。内部では、共有の履歴とリモートを持つ `.git` リポジトリが1つあります。作業コピーが複数あるだけです。

</div>

標準的なGitの流れでは、`main` ブランチにいるときに `git checkout feature-x` を実行すると、Gitは作業コピーのファイルを上書きします。`package.json` が書き換わるため、実行中の `npm run dev` が動かなくなります。未コミットの変更をstashして、IDEの再インデックスが終わるのを待ちます。元に戻ると、またすべてが上書きされるので、もう一度stashしてpopしなければなりません。

Git worktreeなら別の方法があります。ブランチ間で**1つの**フォルダを切り替える代わりに、別ブランチ用の**2つ目の**フォルダを作成します。コマンド `git worktree add ../project-feature-x feature-x` は、ブランチ `feature-x` のファイルを含むディレクトリ `../project-feature-x/` を作成します。`main` は元のフォルダに残り、開発サーバーも動き続けます。

| 項目 | `git checkout` ブランチ | `git worktree add` |
|----|----|----|
| 作業コピーのファイル | 上書きされる | 新しいフォルダに現れる |
| 2つのブランチでの並行作業 | いいえ | はい |
| 未コミットの変更 | `git stash` が必要 | 作業不要 |
| 切り替え速度 | 差分の大きさによる | `cd` するだけ |
| ディスク容量 | 1× | N×（ブランチごとにファイルを1コピー） |

以前はClaude Codeでworktreeモードを使うには、手動で `git worktree add` を実行し、次に `cd` してから `claude` を起動する必要があり、ターミナルごとに繰り返していました。`--worktree` フラグ（別名 `-w`）なら、この3つを1つのコマンドで実行できます。

## 最初の並行セッションを起動する：`--worktree` フラグ

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

重要なポイント

コマンド `claude --worktree feature-auth` は `.claude/worktrees/feature-auth/` にworktreeを作成し、`origin/HEAD` から `worktree-feature-auth` ブランチを作成して、そこでClaude Codeを起動します。手動で `git worktree add` や `cd` を実行する必要はありません。隣のターミナルで別の名前を指定して繰り返せば、独立したセッションが2つできます。名前を省略して `claude --worktree` とすると、Claudeが `bright-running-fox` のようなランダムな名前を生成します。

</div>

最小限の例です。最初のターミナルをプロジェクトのルートで開きます。

```bash
claude --worktree feature-auth
```

Claude Codeは次の3つを行います。

1. `origin/HEAD`（通常はデフォルトブランチ）のスナップショットを使って `.claude/worktrees/feature-auth/` を作成します。
2. 新しい `worktree-feature-auth` ブランチを作成します。
3. このフォルダでセッションを起動します。

同じリポジトリのルートフォルダで2つ目のターミナルを開きます。

```bash
claude --worktree bugfix-123
```

これで完了です。Claude Codeのセッションが2つ、ディスク上の別々のファイル、別々のGitブランチで動きます。片方で認証機能を書き、もう片方で失敗しているテストを修正しても、物理的に互いの作業を妨げることはありません。

名前を入力したくなければ、Claudeが考えてくれます。

```bash
claude --worktree
# → .claude/worktrees/bright-running-fox/ のようなものを作成
```

Git初心者向けのヒント：`.claude/worktrees/` を `.gitignore` に追加してください。そうしないと、メインフォルダで `git status` を実行したとき、すべてのworktreeの内容が未追跡ファイルとして表示されます。

```
# .gitignore
.claude/worktrees/
```

避けるべき落とし穴：新しいディレクトリで初めて `--worktree` を起動する前に、フラグなしの通常の `claude` でそのディレクトリを開き、ワークスペースの信頼確認ダイアログを承認してください。承認しないと、フラグは「信頼が承認されていない」というエラーで失敗します。ヘッドレスモード用の `-p` と組み合わせた場合も同様です。

## worktreeの場所と見つけ方

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

重要なポイント

デフォルトでは、すべてのworktreeがリポジトリのルートの隣にある `.claude/worktrees/<name>/` に置かれます。一覧を見るには `git worktree list` を実行します。手動でworktreeに移動するには `cd .claude/worktrees/feature-auth` を使います。Claudeのセッション内で切り替えるには、「別のworktreeに切り替えて」と頼んでください。組み込みのEnterWorktreeツールが使われます。元のworktreeはディスク上にそのまま残ります。

</div>

デフォルトの場所は固定されており、リポジトリのルートにある `.claude/worktrees/<value>/` です。プロジェクトが `~/dev/my-app/` にあるなら、`feature-auth` worktreeは `~/dev/my-app/.claude/worktrees/feature-auth/` に置かれます。

リポジトリの外にworktreeを置きたい場合など、標準的でない構成には `WorktreeCreate` フックがあります。詳しくは後述のSVNとMercurialに関するセクションで説明します。

Claudeの1つのセッション内で、別の既存worktreeに切り替えられます。チャットで「`.claude/worktrees/bugfix-123` に切り替えて」と伝えるだけで、Claudeが `EnterWorktree` ツールを呼び出します。現在のフォルダには手を加えず、そのまま残せます。同じ方法で戻れます。

標準のGitコマンドを使うと、メインのworktreeと手動で作成したworktreeを含む、すべてのworktreeの一覧が表示されます。

```bash
git worktree list
```

出力は次のようになります。

```
/home/user/dev/my-app                  abc1234 [main]
/home/user/dev/my-app/.claude/worktrees/feature-auth  def5678 [worktree-feature-auth]
/home/user/dev/my-app/.claude/worktrees/bugfix-123    9876fed [worktree-bugfix-123]
```

## `.env` とシークレットをコピーする：`.worktreeinclude` ファイル

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

重要なポイント

worktreeは新しいチェックアウトです。`.gitignore` 対象のファイル（`.env`、`.env.local`、ローカル設定）は新しいフォルダにありません。そのままでは、`npm run dev` や `prisma db push` は動きません。プロジェクトのルートに置く `.worktreeinclude` ファイルでは、`.gitignore` と同じ構文を使い、新しいworktreeごとに自動コピーするファイルをClaude Codeに指定します。`--worktree`、サブエージェントのworktree、デスクトップアプリのセッションで読み込まれます。

</div>

`--worktree` で新しいフォルダを作ると、Gitにコミットされているものだけが入ります。APIキーを含む `.env` やローカル設定の `.env.local` は `.gitignore` 対象なので、worktreeには入りません。そのため、最初の `npm run dev` は「MISSING DATABASE_URL」で失敗します。

手作業での解決策は、`--worktree` を実行するたびに `.env` をコピーすることです。一度はうまくいきますが、やがて忘れてしまいます。Anthropicの解決策は、プロジェクトのルートに `.worktreeinclude` ファイルを置き、Gitで無視されるファイルのうち、新しいworktreeごとに自動コピーするものを列挙することです。

リポジトリのルートに `.worktreeinclude` ファイルを作成します。

```
.env
.env.local
config/secrets.json
```

構文は `.gitignore` と同じです。globパターンも使えます。

```
.env*
*.local
config/*.json
.vscode/settings.json
```

Anthropicは、事故を防ぐための明確なルールを示しています。

<figure>
<blockquote>
<p>このファイルではgitignore構文を使います。パターンに一致し、かつGitで無視されているファイルだけがコピーされます。Gitで追跡されているファイルが複製されることはありません。</p>
</blockquote>
<figcaption>— Anthropic Docs、https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

つまり、`.worktreeinclude` を使って `package.json` を誤ってコピーすることはありません。これは `.gitignore` 対象ではないからです。どんなパターンを指定しても安全です。

同じ `.worktreeinclude` が3つのモードで使われます。手動の `--worktree`、サブエージェント用の自動worktree（後述）、Claudeデスクトップアプリのセッションです。

## コードレビュー用にプルリクエストからworktreeを作成する

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

重要なポイント

コマンド `claude --worktree "#1234"` は、originからプルリクエスト \#1234 を取得し、PRブランチを含むworktreeを `.claude/worktrees/pr-1234/` に作成します。完全なURLを渡すこともできます。`claude --worktree https://github.com/OWNER/REPO/pull/1234`。コードレビューで役立ちます。PRを専用フォルダで開けば、メインのリポジトリをそのままにして、Claudeにテストの実行、ログの確認、コメントの作成を任せられます。

</div>

よくあるコードレビューの場面を考えてみましょう。同僚からPRが届き、コードを確認してテストを実行し、コメントを残す必要があります。通常の `git checkout pull/1234/head` では、作業コピーをまた切り替えることになり、進行中のセッションに支障が出ます。

`--worktree` フラグを使えば、コマンド1つで済みます。

```bash
claude --worktree "#1234"
```

何が起きるかというと、Claude Codeは `git fetch origin pull/1234/head` を実行し、`.claude/worktrees/pr-1234/` にworktreeを作成して、PRブランチをチェックアウトします。セッションが始まります。すぐに「差分を読み、テストを実行し、論理的な誤りを探して」と頼めます。その間、`main` 上のメインセッションは動き続けます。

完全なプルリクエストURLを指定する書き方もあります。

```bash
claude --worktree https://github.com/OWNER/REPO/pull/1234
```

実際のプロジェクトでは、`claude --worktree "#N"` と自作のコードレビュアー・サブエージェントを組み合わせると、1〜2分で自動レビューができます。バックグラウンドで起動し、メインウィンドウで作業を続け、結果は `claude agents` から確認します。

## ベースブランチ：`fresh` または `head` の `worktree.baseRef`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

重要なポイント

デフォルトでは、worktreeは `origin/HEAD`（リモートから同期された最新コミット）を基点に分岐します。これは安全で「クリーン」な開始方法です。未プッシュのローカルコミットを含めたい場合は、`worktree.baseRef: "head"`を指定します。HEADが示すのはコミットで、未コミットの追跡済み編集は元の作業コピーに残り、別途明示的な移行が必要です。サブエージェントがメインに切り替えることなく、現在の機能の上で作業する必要がある場合に便利です。指定できるのは `fresh` または `head` のみで、任意のrefはサポートされません。

</div>

デフォルトでは、新しいworktreeはすべて `origin/HEAD` から開始します。CIで確認される内容と一致することが保証された、クリーンな開始状態になるのが利点です。一方、現在のブランチに未コミットの変更や、リモートより先に進んだローカルコミットがいくつかあっても、それらは新しいworktreeに含まれません。

現在のローカルHEADコミットからworktreeを始めるには、`.claude/settings.json`かグローバル設定へ次を追加します。

```json
{
  "worktree": {
    "baseRef": "head"
  }
}
```

これで`claude --worktree experimental-feature`は現在のローカル`HEAD`から始まります。機能にすでに未プッシュのローカルコミットがある場合に便利です。未コミットの追跡済み編集は含みません。必要なら保全して明示的に移行し、移行先の差分を確認してください。これは無視対象のローカルファイルを扱う`.worktreeinclude`とは別です。

この設定で指定できる値は正確に2つです。`"fresh"`（`origin/HEAD`）と `"head"`（ローカルのHEAD）です。`"feature-branch"` やコミットハッシュのような任意のrefは指定できません。選択肢の組み合わせが爆発的に増えるのを防ぐため、意図的に制限されています。

## サブエージェントを自動的に分離する：`isolation: worktree`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

重要なポイント

Claude Codeのサブエージェントとは、コードレビュー、リファクタリング、調査など、1つのタスクを実行する専門エージェントです。1つのセッションから複数のサブエージェントを並行して起動すると、デフォルトでは同じフォルダで作業するため、互いのファイルを上書きすることがあります。サブエージェントのfrontmatterに `isolation: worktree` を追加すれば、それぞれに一時worktreeが割り当てられ、何もコミットしていない場合は終了時にきれいに削除されます。

</div>

Claudeに「サブエージェントを3つ起動して。1つ目はデータベース、2つ目はAPI、3つ目はテストを調べて」と伝えると、デフォルトでは3つともあなたの作業コピーで動きます。2つでも同じファイルに同時に書き込めば、競合します。解決策は、それぞれに専用のworktreeを自動的に割り当てることです。

方法1：口頭で頼む。会話の中でClaudeに次のように伝えます。

```
エージェントにはworktreeを使ってください。
```

Claudeは、このセッションで以降に起動するすべてのサブエージェントに分離を適用します。

方法2：サブエージェント自体に明示的に設定します。サブエージェントのファイル（例：`.claude/agents/code-reviewer.md`）のfrontmatterにフィールドを追加します。

```yaml
---
name: code-reviewer
description: Reads the diff and writes code review comments
isolation: worktree
---

You're a meticulous reviewer. Read the diff and look for logic errors...
```

これで、このサブエージェントを起動するたびに `.claude/worktrees/` 内に一時worktreeが作られます。サブエージェントが何も書き込まなければ、終了時にフォルダが自動削除されます。未コミットの変更がある場合、Claudeは残すか削除するかを確認します。

サブエージェント用worktreeのベースブランチは、`--worktree` と同じです。デフォルトでは `origin/HEAD`、`worktree.baseRef: head` を設定している場合はローカルの `HEAD` です。

## 判断マトリックス：worktree、`/bg`、subagent、Agent View

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

重要なポイント

混同されがちなClaude Codeの仕組みは4つあります。worktreeは**ファイルの分離**（ディスク）、`/bg` は**バックグラウンドセッション**（コンテキストとトークン）、subagentは**専門的な単発エージェント**（プロンプトとツール）、Agent Viewは**全セッションのダッシュボード**（UI）です。組み合わせて使えます。`/bg` はworktreeを自動作成し、`isolation: worktree` を指定したsubagentは一時worktreeで開始し、Agent Viewでは3つすべてが一覧の行として表示されます。

</div>

| ツール | 分離する対象 | 使用する場面 |
|----|----|----|
| `claude --worktree <name>` | ファイル（別フォルダとブランチ） | 別々のターミナルでN個のセッションを手動で並行実行したいとき |
| `/bg`（または `Ctrl+B`） | コンテキストと時間 | 現在のウィンドウをふさがずに長時間のタスクを実行したいとき。内部でworktreeが作成されます |
| `isolation: worktree` を指定したsubagent | 1つのセッション内のファイル | 1つのプロンプトでN個のエージェントに作業を割り当て、互いの上書きを防ぎたいとき |
| `claude agents`（Agent View） | なし（UI） | 実行中・一時停止中・完了したすべてのセッションを1つのダッシュボードで見たいとき |
| `/goal` | 自律性の管理 | ターン間に自分から促さなくても、条件が満たされるまでClaudeに作業させたいとき |

典型的な組み合わせ：

- **「2つの機能を手動で並行開発」** — 2つのターミナルで、それぞれ `claude --worktree` を実行します。最もシンプルなケースです。
- **「夜通しリファクタリングを実行して、アプリを閉じる」** — `/bg` と `/goal` に完了条件を設定します。セッションはウィンドウを閉じても独立して動きます。
- **「1つのプロンプトで3つの調査を並行実行」** — `isolation: worktree` を指定したサブエージェントを3つ起動します。それぞれが独自のサンドボックスで動きます。
- **「今、何が実行中？」** — `claude agents` を使います。「実行中」「ブロック中」「完了」のフィルターがある、全セッションのダッシュボードです。

## worktree利用時の5つの落とし穴

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

重要なポイント

よくある問題は、`.worktreeinclude` を忘れて環境が動かないこと、worktreeと通常のブランチを混同して未コミットの変更を失ったと思うこと、5つ以上のセッションを並行して起動し、どこで何をしているか分からなくなること、`cleanupPeriodDays` を設定せず使われなくなったフォルダがたまること、新しいディレクトリの信頼確認を忘れて `--worktree` がエラーになることです。

</div>

**1. worktreeを起動したら `.env` がなく、何も動かない。** 最もよくある問題です。worktreeはGitで無視されるファイルがない新しいチェックアウトです。解決策は、worktreeモードを設定するときにすぐ `.worktreeinclude` ファイルを追加し、`.env*` と必要なローカル設定を指定することです。このファイルが `.claude/` ではなくリポジトリのルートにあることを確認してください。

**2. メインブランチに切り替えようとしてルートで `cd` を実行したら、worktreeの未コミット変更を失った。** ルートフォルダとworktreeは**異なる**作業コピーです。`cd` で戻っても、worktreeの変更はそのまま残っていて、どこにも行っていません。ただし、worktreeにいると思い込んでメインフォルダで `git stash` を実行すると、stashは予想していたブランチではなく、メインブランチに作成されます。

**3. セッションを5つ並行して起動し、それぞれ何をしているのか思い出せない。** Anthropicのドキュメントは、ほとんどの開発者は認知的に2〜3個を超えるセッションを扱えないと明示的に警告しています。過負荷の兆候は、Agent Viewを開いても各エージェントが何をしているのかすぐに言えないことです。同時に実行するセッションは2つに制限しましょう。それ以上必要なタスクは、手動ではなく `/goal` とサブエージェントで調整すべきです。

**4. `-p`（ヘッドレス）で起動したworktreeは自動クリーンアップされない。** コマンド `claude --worktree feature-x -p "do thing"` では対話的な終了プロンプトが表示されないため、Claudeが「worktreeを削除しますか？」と尋ねるタイミングがありません。こうしたworktreeは蓄積します。手動でクリーンアップしてください。`git worktree remove .claude/worktrees/feature-x` を実行します。または、7日より古いものを削除するcronスクリプトを使います。

**5. 新しいフォルダで信頼確認ダイアログが表示される。** 初めてリポジトリを開いてすぐに `claude --worktree` を実行すると、コマンドは失敗します。フラグなしで `claude` を実行し、ワークスペースの信頼を承認して終了してください。その後は `--worktree` が動作します。これは、ユーザーの同意なしにClaudeが他人のプロジェクトへアクセスしないようにするための意図的な仕組みです。

## クリーンアップ：自動削除されるもの

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

重要なポイント

`--worktree` で作成したworktreeに変更がない場合（コミット、未追跡ファイル、未コミットの変更がない場合）、終了時に自動削除されます。変更があるとClaudeが確認します。サブエージェントと `/bg` のworktreeは、クリーンな状態であれば、設定の `cleanupPeriodDays` によるタイムアウトで自動削除されます。`-p` のworktreeはまったくクリーンアップされないため、`git worktree remove` で手動削除します。

</div>

クリーンアップの仕組みは、worktreeで何をしたか、セッションをどう開始したかによって異なります。Anthropicのドキュメントには、3つのシナリオが記載されています。

<figure>
<blockquote>
<p>worktreeに未コミットの変更、未追跡ファイル、新しいコミットがない場合、セッションを終了するとworktreeとそのブランチは自動的に削除されます。セッションに名前が付いている場合は、後で使えるようにworktreeを残すか確認され、削除はされません。</p>
</blockquote>
<figcaption>— Anthropic Docs、https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

シナリオ1：worktreeに入り、何もせず終了すると、worktreeは削除されます。

シナリオ2：作業をしてコミットしなかった場合、終了時にClaudeが「残すか、削除するか」を確認します。「残す」を選ぶと、後で使えるようにフォルダとブランチが保存されます。「削除」を選ぶと、未コミットの変更と新しいコミット**も含めて**ディレクトリが削除されます。これは取り消せない操作です。習慣で「削除」をクリックしないでください。

シナリオ3：`-p`（ヘッドレス）で起動し、コマンドが完了して終了した場合、worktreeは残ります。手動でクリーンアップしてください。

```bash
git worktree remove .claude/worktrees/feature-x
```

さらに、サブエージェントと `/bg` のセッションから作られたworktreeは、`cleanupPeriodDays` 日（通常のデフォルトは30日）より古く、**かつ**保存されていない作業がない場合、バックグラウンドのクリーンアップによって自動削除されます。`--worktree` で作成したworktreeは自動クリーンアップの対象ではありません。管理はあなたの責任です。

## SVN、Perforce、Mercurialでの代替方法：`WorktreeCreate` フック

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

重要なポイント

worktreeモードでは、デフォルトで `git worktree` が使われます。SVN、Perforce、MercurialなどのVCSでは、Claude Codeの設定にある `WorktreeCreate` と `WorktreeRemove` フックを使って、独自の仕組みを接続できます。フックは標準入力で名前を受け取り、作成したディレクトリのパスを出力し、終了コード0で終了する必要があります。独自のフックを使う場合、`.worktreeinclude` は処理されません。ローカルファイルはフック内で自分でコピーする必要があります。

</div>

リポジトリがSubversionやMercurialを使っている場合、`--worktree` フラグはそのままでは動きません。Anthropicは、2つのフックを使った拡張方法を提供しています。`WorktreeCreate` は分離されたコピーを作成し、`WorktreeRemove` はそれを削除します。

公式ドキュメントにあるSVNフックの例です。

```json
{
  "hooks": {
    "WorktreeCreate": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'NAME=$(jq -r .name); DIR=\"$HOME/.claude/worktrees/$NAME\"; svn checkout https://svn.example.com/repo/trunk \"$DIR\" >&2 && echo \"$DIR\"'"
          }
        ]
      }
    ]
  }
}
```

フックは標準入力からworktree名（`{ "name": "feature-auth" }`）を読み込み、事前に決めたディレクトリに `svn checkout` を実行し、パスを標準出力に出力します。Claude Codeはそのパスを、新しいセッションの作業ディレクトリとして使用します。

重要な注意点として、独自のフックを使う場合、`.worktreeinclude` は使用されません。新しいフォルダで `.env` などGitで無視されるファイルが必要なら、フックスクリプトの中でコピーしてください。

## 次に読む内容：並行処理に関する3つの仕組み

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Section takeaway">

重要なポイント

worktreeはファイルを分離します。`/bg` はコンテキストとトークンを分離します。subagentはタスクとツールを分離します。`/goal` は条件が満たされるまで自律的に作業します。それぞれ単独で1つの問題を解決します。これらを組み合わせることで、認知的に破綻することなく3〜5個のタスクを並行して進められます。次は、以下のリンクから自律モード、カスタムサブエージェント、Dynamic Workflowsによる動的なワークフローの関連ガイドを読むとよいでしょう。

</div>

worktreeはファイルを分離します。`/bg` はコンテキストを分離します。サブエージェントはタスクを分離します。それぞれの仕組みは単独で1つの問題を解決します。組み合わせることで、認知的に破綻することなく3〜5個のタスクに並行して取り組めます。これは、2026年の高度なvibe-codingを支えるスキルセットです。

このトピックは、次の3つの関連テーマへ自然につながります。[`/goal` と Agent Viewを使って自律エージェントを設定する方法](https://ailoot.ai/blog/ja/claude-code-goal-agent-view/)、[自分のタスクに合わせたサブエージェントの作り方](https://ailoot.ai/blog/ja/claude-code-subagents/)、[Dynamic Workflowsを通じて数百のエージェントを起動する方法](https://ailoot.ai/blog/ja/claude-code-dynamic-workflows/)。

<div class="section" role="doc-bibliography" aria-label="Sources">

### 出典

- [Run parallel sessions with worktrees - Claude Code Docs](https://code.claude.com/docs/en/worktrees)
- [Create custom subagents - Claude Code Docs](https://code.claude.com/docs/en/sub-agents)
- [Claude Code Changelog (May-June 2026)](https://code.claude.com/docs/en/changelog)
- [Run agents in parallel - Claude Code Docs](https://code.claude.com/docs/en/agents)
- [Agent View - Claude Code Docs](https://code.claude.com/docs/en/agent-view)
- [git worktree man page](https://git-scm.com/docs/git-worktree)

</div>





[Ailootを開く](https://ailoot.ai/)。

## Claude CodeのGit worktree：並行セッション：よくある質問

### baseRef headは未コミット変更も新しいworktreeへコピーしますか？

いいえ。リモートにないローカルコミットを含む現在のHEADコミットから始めます。未コミットの追跡済み編集は元の作業コピーに残ります。必要な作業中変更は明示的に移し、移行先を確認してください。

### 新しいworktreeに.envがないのはなぜですか？

新しいチェックアウトなのでGitの無視対象はありません。Claude Codeの.worktreeincludeはコピーする無視ファイルを列挙します。独自WorktreeCreateフックでは自分でコピーを扱います。必要なファイルだけを対象にしてください。


## Ailoot · 企業とそのプロジェクト群

Ailootは、蓄積した運営経験、幅広い顧客基盤、安定したサービス、継続的なKPI管理を基盤としています。

企業とそのプロジェクト群：数百万の顧客、毎月数十億規模の売上。

Ailootはこの運営経験を、お客様の製品、エージェント、アプリケーション、自動化でAI機能を利用するためのAPIアクセスに活かしています。
