できること
セッションごとの分離
各セッションを専用の git worktree で動かし、編集するファイルのコピーを分けられます。既定では、リポジトリのルートの .claude/worktrees/<name>/ に、worktree-<name> という新しいブランチで作成されます。
サブエージェントの分離
Claude に「use worktrees for your agents」と依頼するか、カスタムサブエージェントの frontmatter に isolation: worktree を加えると、サブエージェントごとに一時的な worktree が割り当てられます。変更なしで終わったサブエージェントの worktree は自動で削除されます。
PR・MR から作成
--worktree に # 付きの番号、GitHub のプルリクエスト URL、GitLab のマージリクエスト URL を渡すと、その変更の head コミットを origin から取得し、.claude/worktrees/pr-<number> に worktree を作成します。
機能解説
概要
セッションごとに編集用のファイルのコピーが分かれるため、一方のセッションで機能を作り、別のセッションでバグを直すといった並行作業に使えます。ターミナルから --worktree フラグで起動できるほか、セッションの途中で Claude に「work in a worktree」と依頼して作成することもできます。
Worktrees は、Claude Code のセッションを git worktree 単位で分け、セッションごとに別々のファイルのコピーを編集させる機能です。
- ターミナルでは
--worktree(-w) で起動します。既定の作成場所はリポジトリのルートの.claude/worktrees/<name>/で、ブランチ名はworktree-<name>です。 --worktreeに渡した名前の worktree がすでにあれば、新しく作らずにその worktree を開きます。- セッションの途中で「work in a worktree」と依頼すると、Claude が
EnterWorktreeツールで worktree を作成します。リポジトリの.claude/worktrees/の外のパスに入る場合は、先に承認を求めます。 - worktree の中で終了せずに終わったセッションを再開すると、セッションはその worktree に戻ります。
- メインのチェックアウトからプロジェクトスコープでインストールしたプラグインは、同じリポジトリの worktree でも読み込まれます。
分離の仕組みと注意点
セッションが worktree に分離されている間、メインのチェックアウト内のパスを対象とする Edit、Write、NotebookEdit の呼び出しはブロックされます。
一方で、この分離のチェックはシェルコマンドが書き込むファイルを追跡しません。そのため、cp やシェルのリダイレクトのように、git を実行せずにメインのチェックアウトへ書き込むコマンドは拒否されません。
worktree の後片付け
- 対話型の worktree セッションを終了すると、変更済みまたは未追跡のファイル、サブモジュール内の未コミットの作業、新しいコミットなど、削除で失われる作業が無いかを確認します。
- 作業が無い場合、名前の無いセッションでは worktree とブランチを自動で削除し、名前付きのセッションでは先に確認を求めます。
-pによる非対話の実行には終了時の確認が無いため、その worktree は Claude が片付けません。- サブエージェントやバックグラウンドセッション用に Claude が作った worktree は、
cleanupPeriodDays設定より古くなると、定期的な処理で削除されます。 - Claude が管理する worktree は、エージェント終了時にロック解除された状態で残るため、
git worktree remove/pruneで削除できます。 git worktree removeが失敗してもrm -rfには切り替えないため、gitignore 対象のファイルや作業中のファイルは消えません。
分岐元とファイル・作成処理の設定
- 分岐元の選択:
worktree.baseRef設定 (fresh|head) で、--worktree、EnterWorktree、エージェント分離用の worktree がorigin/<default>から分岐するか、ローカルの HEAD から分岐するかを選べます。既定値はfreshで、未プッシュのコミットを新しい worktree に残すにはworktree.baseRef: "head"を設定します。ブランチ名は指定できません。 - gitignore 対象ファイルのコピー: プロジェクトのルートに
.worktreeincludeファイルを置くと、.envのような未追跡のファイルを新しい worktree に自動でコピーします。書式は.gitignoreと同じで、パターンに一致し、かつ gitignore 対象のファイルだけがコピーされます。 - バックグラウンドセッションの分離を外す:
worktree.bgIsolation: "none"を設定すると、worktree が実用的でないリポジトリで、バックグラウンドセッションがEnterWorktreeを使わずに作業コピーを直接編集します。 - 作成処理の置き換え:
WorktreeCreatehook で既定のgit worktreeの処理を丸ごと置き換えられ、.claude/worktrees/以外の場所にも作成できます。SVN、Perforce、Mercurial などでは、WorktreeCreateとWorktreeRemoveの hook で作成と後片付けの処理を用意します。hook を使う場合、--worktreeでは.worktreeincludeが処理されないため、ローカルの設定ファイルは hook のスクリプト内でコピーします。
使い方
ターミナルから --worktree フラグを付けて Claude Code を起動するのが基本の流れです。
--worktreeまたは-wに名前を付けて起動します (例:claude --worktree feature-auth)。分離された worktree が作られ、その中で Claude が起動します。名前を省略すると、bright-running-foxのような名前が自動で付きます。- 別のターミナルで、異なる名前を付けて同じコマンドを実行すると、2 つ目の分離されたセッションを始められます。
- 対話セッションを終了するとき、worktree に作業が残っていれば、残すか削除するかを選びます。後で戻るときは、終了時に表示される
claude --worktree <name> --resumeコマンドを実行します。
利用シーン
新機能の実装とバグ修正を、別々のセッションで同時に進める場面に向いています。
特定のプルリクエストやマージリクエストの内容を、手元の作業と分けて確認・修正する場面に使えます。
複数のサブエージェントに作業を分担させ、それぞれの編集を別の worktree に分けておきたい場面に向いています。
SVN、Perforce、Mercurial など git 以外のバージョン管理を使うプロジェクトでは、hook で作成と後片付けの処理を用意して使えます。
ChatGPT・OpenAI の対応する機能
比較の単位となる業務: git worktree を使った作業ブランチの分離と並行開発
Codex の Worktrees も、--worktree で新規またはフォークしたセッション用の分離されたチェックアウトを作成し、閲覧・再開できます (Codex では実験的な機能で、/worktree も使えます)。Claude Code では --worktree で worktree を作成し、/fork でフォークしたセッションは自身の新しい worktree を作り、終了時に表示される --resume 付きのコマンドで戻れます。
分岐元の指定には違いがあります。Codex では新しい worktree の開始ブランチを選ぶか、現在のローカルの変更を含められます。Claude Code の worktree.baseRef は fresh (origin/<default>) と head (ローカルの HEAD) から選ぶ設定で、ブランチ名は指定できません。
これまでの変更
worktree の作成と再利用で、git がオブジェクトをオンデマンドで取得しなくなりました。対象は通常のクローンと、Bash サンドボックスを設定した partial clone で、partial clone では先にオブジェクトを取得します。
大規模リポジトリでの
--worktreeの起動が改善され、新しい worktree が並列にチェックアウトされるようになりました (git 2.32 以上)。--worktreeフラグとclaude agentsビューで、GitLab のマージリクエスト URL に対応しました。/forkでフォークしたセッションは、元のセッションのチェックアウトではなく、自身の新しい worktree を作るようになりました。EnterWorktreeが、プロジェクトの.claude/worktrees/の外の git worktree に入る前に確認を求めるようになりました。EnterWorktreeで、セッション途中に Claude 管理の worktree 間を切り替えられるようになりました。Claude が管理する worktree は、エージェント終了時にロック解除されたまま残るようになりました。worktree.bgIsolation: "none"設定が加わりました。worktree の後片付けでrm -rfに切り替えないようになりました。--worktreeが既存または古い worktree と衝突したときのエラーメッセージが改善されました。worktree.baseRef設定 (fresh|head) が加わりました。既定のfreshにより、EnterWorktreeの分岐元はorigin/<default>に戻りました。EnterWorktreeが、origin/<default-branch>ではなくローカルの HEAD から新しいブランチを作るようになり、未プッシュのコミットが失われなくなりました。EnterWorktreeツールにpathパラメータが加わり、現在のリポジトリの既存の worktree に切り替えられるようになりました。また、PR が squash マージされた古いエージェント worktree も削除されるようになりました。ステータスラインの JSON 入力に
workspace.git_worktreeが加わり、現在のディレクトリがリンクされた git worktree 内にあるときに設定されます。--resumeで、同じリポジトリの別の worktree のセッションを、cd コマンドを表示せずに直接再開できるようになりました。
出典
出典 13 件を表示
- Claude Code のリリース (2026-04-10)
- Claude Code のリリース (2026-04-18)
- Claude Code のリリース (2026-05-09)
- Claude Code のリリース (2026-05-15)
- Claude Code のリリース (2026-05-31)
- Claude Code のリリース (2026-07-11)
- Claude Code のリリース (2026-08-08)
- Claude Code のリリース (2026-08-14)
- ChatGPT・Codex のリリースノート (2026-09-08)
- ChatGPT・Codex のリリースノート (2026-09-09)
- Claude Code のリリース (2026-09-12)
- Claude Code のリリース (2026-10-23)
- 公式ヘルプ