worktrunk(max-sixty/worktrunk・コマンド名 wt・GitHubスター7.5k・MIT OR Apache-2.0)は、git worktreeをブランチと同じ手軽さで扱うためのRust製CLIです。設計の出発点は「Claude CodeやCodexを5〜10本並列で走らせるなら、各エージェントに別の作業ディレクトリが要る」という一点で、READMEの冒頭にそう書いてあります。素のgitで同じことをすると git worktree add -b feat ../repo.feat && cd ../repo.feat のようにブランチ名を3回打つ羽目になる。worktrunkはそれを wt switch -c feat に畳み、一覧・マージ・削除・フック・LLMコミット・エージェントの稼働表示まで一式で面倒を見ます。

本記事では最新タグv0.77.0(2026-09-08)を実機でビルドし、使い捨てのgitリポジトリで核心コマンドを通しました。合わせて、10種のフック、LLMコミット生成、Claude Code/Codex/OpenCode/Pi/Gemini CLIとの連携の中身をドキュメントとCHANGELOGから整理します。

worktrunkのデモGIF。wt switch --create でworktreeを作って移動し、wt list で変更状態を一覧し、wt merge でmainへ取り込んでworktreeを片付ける一連の流れ
公式デモ(wt-core.gif)。switch → list → merge の3コマンドで1サイクルが閉じる(出典: max-sixty/worktrunk-assets)
30秒でわかる worktrunk(2026年9月15日時点)
  • 正体:git worktreeをブランチ名だけで作成・切替・マージ・削除するRust製CLI。パスは設定テンプレートから自動計算
  • 何ができるwt switch / list / merge / remove の4コマンドに、10種のフック・LLMコミットメッセージ・CI状態表示・PRチェックアウト・ビルドキャッシュ共有
  • 何のため:Claude Code等のエージェントを並列で走らせるための土台。wt switch -x claude -c feat -- '指示' でworktree作成とエージェント起動を1行で
  • 実測:v0.77.0を cargo build --release で3分36秒。wt switch --create 0.04秒、wt merge 0.16秒、wt remove 0.06秒
  • 注意cd を効かせるには wt config shell install が必須。プロジェクト側フックは初回承認制。Windowsはコマンド名が git-wt

worktreeを使った並列開発は、当サイトのClaude Code|2026年版・インストールからCLAUDE.md・Hooks・本番運用までの実装手引きで扱うClaude Code運用の一部です。本記事はその「worktreeをどう回すか」の道具に絞ります。

worktrunkとは——worktreeを「ブランチ名」で扱うCLI

git worktreeは1つのリポジトリに複数の作業ディレクトリをぶら下げる標準機能で、AIエージェントを並列に走らせるときの定石です(Anthropicの公式ベストプラクティスにもworktreeパターンが載っています)。問題は操作の冗長さで、作成・移動・一覧・削除のどれもパスとブランチ名の両方を人間が管理しなければなりません。

worktrunkの答えは「worktreeはブランチ名で指す。パスはテンプレートで決める」です。既定のテンプレートでは repo の隣に repo.feat のようなディレクトリが作られ、以後は feat というブランチ名だけを打てばよい。ブランチ名を受け取るコマンドは、そのブランチがチェックアウトされているworktreeのパスも同じように受け付けます。

素のgit worktreeとWorktrunkの比較。作成はgit worktree add -b feat ../repo.feat && cd ../repo.feat に対して wt switch -c feat、一覧はパスのみに対して変更・差分・CI・稼働中を1画面、削除は3コマンドに対して wt remove、エージェント起動まで wt switch -c -x claude feat
READMEの比較表を要約。差はコマンド数ではなく「人間がパスを覚えなくてよい」こと

核心は4コマンドです。

コマンド やること 素のgit相当
wt switch <branch> そのブランチのworktreeへ移動。-c で作成、-x <cmd> で移動後にコマンド実行 git worktree add -b … && cd …
wt list 全worktreeを、未コミット変更・mainとの差分・未push・(--full で)CI状態とLLM要約つきで一覧 git worktree list(パスのみ)
wt merge [target] 現在のブランチを対象へ取り込む。squash→rebase→フック→fast-forward→worktree削除 手作業で5〜6コマンド
wt remove [branch] worktreeとブランチをまとめて削除 git worktree remove … && git branch -d …

READMEには「2026年初頭に公開し、最も使われているgit worktreeマネージャになった」と書かれています。これは作者自身の表現ですが、スター7.5k・コミット5,063件・CHANGELOG136版という数字は、少なくとも活発に使われ続けていることを示しています。

実機検証:v0.77.0をビルドしてswitch→list→merge→removeを通す

配布はHomebrew・Cargo・winget・pacman・condaと揃っていますが、本記事は読者がインストールするのと同じv0.77.0タグをソースからビルドしました(Linux・4コア・Rust 1.97.0)。

# Homebrew(macOS / Linux)
brew install worktrunk && wt config shell install
# Cargo
cargo install worktrunk && wt config shell install
# Windows:wt が Windows Terminal と衝突するため git-wt として入る
winget install max-sixty.worktrunk && git-wt config shell install

cargo build --release3分36秒(user時間10分52秒)で完了し、wt バイナリは28.4MBでした。wt --versionwt v0.77.0 を返します。次に空のリポジトリで1サイクルを回しました。

$ wt switch --create feature-auth     # 0.04秒。../repo.feature-auth が作られる
▲ Cannot change directory — shell integration not installed
↳ To enable automatic cd, run wt config shell install

$ wt list                             # コミット後
  Branch        Status  HEAD±  main↕  main…±  Path                  Commit   Age  Message
@ feature-auth      ↑           ↑1     +1     ../repo.feature-auth  780112b  now  Add authentication module
^ main              ^                         .                     b7b7341  now  Initial commit

$ wt merge main                       # 0.16秒
◎ Merging 1 commit to main @ 780112b (no commit/squash/rebase needed)
✓ Merged to main (1 commit, 1 file, +1)
◎ Removing feature-auth worktree & branch in background (same commit as main, _)
操作 実測 結果
cargo build --release(v0.77.0) 3分36秒 wt 28.4MB
wt switch --create feature-auth 0.042秒 worktree作成。シェル統合なしのため cd は案内のみ
wt list 即時 @ 現在・^ main・↑1 先行コミット・+1 差分行を表示
wt merge main(コミット済み1件) 0.158秒 fast-forward。worktreeとブランチは背景で削除され git worktree list から消えた
wt switch --create feature-bwt remove feature-b 0.056秒 worktree・ブランチとも削除
wt list --format=json 即時 schema 2(repo.default_branchitems[]collected)で出力
読者の3つの問いへの答え
何ができる:worktreeの作成・移動・一覧・マージ・削除をブランチ名だけで行い、フック・LLMコミット・CI状態・エージェント稼働表示を足せる。② 何を解決する:並列エージェント運用でworktreeのパス管理と後片付けが人間に溜まる問題。③ 何を代替できるgit worktree の手打ち手順と、それを包む自作シェル関数。gitそのものは置き換えない(内部でgitを呼ぶ)。

シェル統合について1点。wt は別プロセスなので、それ自身が親シェルのカレントディレクトリを変えることはできません。wt config shell install はbash/zsh/fish/nushell/PowerShell向けにラッパー関数と補完を書き込み、これがあって初めて wt switch の後に本当に移動します。wt config show を打つと、シェル統合の有無・検出したシェル・Claude Codeプラグインの有無・gitのバージョンまで一覧で診断してくれます。

worktrunkのwt mergeとフック——「Merge pull request」をローカルで再現する

wt mergegit merge と向きが逆です。現在のブランチを対象(既定はデフォルトブランチ)へ取り込むもので、公式ドキュメントは「GitHubのMerge pull requestボタンをローカルで押すようなもの」と説明しています。

wt mergeの6段。コミット(LLM生成メッセージ・任意)→squash→rebase(mainの先頭へ)→pre-mergeフック(テスト・ビルド検証)→fast-forward→worktree削除(背景)
--no-squash / --no-ff / --no-remove / --no-commit で各段を外せる

未コミットの変更があればコミット(LLMメッセージ生成を設定していればそれを使う)、複数コミットなら1つにsquash、対象ブランチの先頭へrebase、pre-merge フックでテスト、fast-forwardで対象を進め、最後にworktreeとブランチを背景で削除します。本記事の検証ではコミット済みの1件だったため「no commit/squash/rebase needed」と表示され、fast-forwardと削除だけが走りました。

フックは5イベント×前後の10種です。

イベント pre-(ブロッキング) post-(バックグラウンド)
switch pre-switch post-switch
create pre-start:依存インストール・envファイル生成 post-start:開発サーバ・長いビルド・キャッシュコピー
commit pre-commit:フォーマッタ・リンタ・型検査 post-commit:CI起動・通知
merge pre-merge:テスト・セキュリティスキャン post-merge:デプロイ・通知
remove pre-remove:成果物の退避 post-remove:開発サーバ停止・コンテナ削除

設定はTOMLで、プロジェクト側(.config/wt.toml)とユーザー側(~/.config/worktrunk/config.toml)に分かれます。プロジェクト側のフックは初回に承認が必要で、リポジトリをcloneしただけで任意コマンドが走る事故を防いでいます。LLMコミット生成も同じ設定ファイルです。

# ~/.config/worktrunk/config.toml
[commit.generation]
# 標準入力からプロンプトを読み、コミットメッセージを出力するコマンドなら何でもよい
command = "MAX_THINKING_TOKENS=0 claude -p --no-session-persistence --model=haiku --tools='' --safe-mode --setting-sources='user' --system-prompt=''"

# .config/wt.toml(プロジェクト側。初回に承認が求められる)
[hooks]
pre-merge = "cargo nextest run"
post-start = "npm install"

Claude Code側の --safe-mode は「フック・プラグイン・MCP・スキル・CLAUDE.mdを読まずに走る」ためのフラグで、コミットメッセージ生成を密閉するために使われています(Claude Code 2.1.169以上が必要、とドキュメントにあります)。wt list --fullLLM要約も同じコマンドを再利用し、ブランチの差分が変わるまでキャッシュされます。

「テストを通してからマージ」「マージしたらworktreeを消す」という人間が忘れる手順を、コマンド1つの中に固定するのがwt mergeの価値です。

Claude Code・Codex・Gemini CLIとの連携——🤖が動いているworktreeを一覧で見る

並列エージェント運用で本当に欲しいのは「どのworktreeでエージェントが動いていて、どれが入力待ちか」の一覧です。worktrunkは各エージェントCLI向けのプラグインで、wt list に🤖(稼働中)/💬(入力待ち)を出します。

エージェント5種の連携。Claude Code=skill+活動追跡+隔離+/wt-switch-create、Codex=skill+活動追跡、OpenCode=活動追跡、Pi=活動追跡、Gemini CLI=extension+活動追跡
公式ドキュメント「Agent Integration」の表を図化(v0.77.0時点)
機能 Claude Code Codex OpenCode Pi Gemini CLI
設定を手伝う /worktrunk スキル    
活動追跡(wt list の🤖/💬)
worktreeの隔離        
/wt-switch-create コマンド        

隔離と /wt-switch-create がClaude Code限定なのは、worktreeのライフサイクルフックとセッションの作業ディレクトリ切替という、Claude Code側にしか無いフックに依存するためです。他のエージェントでは人間が wt switch --createwt remove を直接打ちます。Piの対応はv0.77.0で追加されたばかりで、CHANGELOGには依頼者への謝辞つきで記録されています。

flowchart TD M["main worktree"] -->|"wt switch -x claude -c feature-a -- '認証を追加'"| A["repo.feature-a
Claude Code 🤖"] M -->|"wt switch -x claude -c feature-b -- 'ページングを修正'"| B["repo.feature-b
Claude Code 🤖"] M -->|"wt switch -x claude -c feature-c -- 'APIのテストを書く'"| C["repo.feature-c
Claude Code 💬 入力待ち"] A --> L["wt list
🤖/💬・HEAD±・main↕・CI を1画面"] B --> L C --> L L -->|"完成したものから"| MG["wt merge
squash → rebase → pre-merge → ff → 削除"] MG --> M

READMEはこの並列起動を3行の例で示しています。-x は「移動後に実行するコマンド」、-- 以降はそのコマンドへ渡す引数(ここではClaude Codeへの初期指示)です。post-start フックで依存インストールや開発サーバ起動を自動化し、hash_port テンプレートフィルタでworktreeごとに別ポートを割り当てる、という運用パターンも公式の「tips & patterns」にまとまっています。

Claude Codeプラグインは wt config plugins claude install(内部では claude plugin marketplace add max-sixty/worktrunkclaude plugin install worktrunk@worktrunk)で入ります。v0.77.0のCHANGELOGを読むと、プラグインの有無を installed_plugins.json の直読みではなく claude plugin list --json に問い合わせるよう改めた、という修正があり、Claude Code側のファイル配置変更に振り回されない方向へ手が入っていることが分かります。

並列エージェントを「エージェント側」から統治する製品は別にあり、当サイトではOrcaとは|Claude Code・Codexを並列実行するAIエージェントIDE(ADE)の使い方で扱いました。worktrunkはIDEではなく、その足元のgit操作だけを担う位置づけです。Claude Code自身の並列化手段(サブエージェント・agent view)はClaude Code サブエージェントとは?作り方・frontmatter全項目・呼び出し方まとめ【2026年版】Claude Code agent view発表|全セッション一覧で並列エージェントを統治する新UIを参照してください。worktreeの使い方そのものはClaude Codeベストプラクティス2026|Boris直伝25 Tips・並列ワークツリー・–bare最適化にも整理があります。

細かいが効く機能——PRチェックアウト・キャッシュ共有・ピッカー・JSON

READMEの「quality-of-life」に列挙されている機能のうち、運用で差が出るものを挙げます。

PR/MRのチェックアウトwt switch pr:123 でGitHub/GitLabのPRブランチへ直接飛ぶ
ビルドキャッシュの共有wt step copy-ignoredtarget/node_modules/ を新しいworktreeへreflinkでコピーする。APFS・btrfs・XFSでは実体を複製せず、v0.77.0からは「reflinkできたか・実コピーだったか」を要約に出す
対話ピッカーwt switch を引数なしで打つと、差分とログのライブプレビューつきでworktreeを選べる
CI状態wt list --full でGitHub/GitLabのパイプライン結果をブランチごとに表示
wt list --format=json:v0.77.0から既定がschema 2(リポジトリ情報つきのエンベロープ)に変わった。旧形式が必要なら [list] json-schema = 1。破壊的変更としてCHANGELOGに明記
エイリアスとブランチ変数wt <name> の自作コマンドと、フックテンプレートから参照できるブランチ単位の状態

wt switchの対話ピッカー。worktree一覧の右側に選択中ブランチの差分とログがライブプレビューされる
対話ピッカー(wt-switch-picker.gif)。エージェントを何本も走らせているときに「どれだったか」を目で確かめられる(出典: max-sixty/worktrunk-assets)
0.77.0の破壊的変更(CHANGELOG「Breaking」明記分):①wt list --format=json の既定がschema 2に ②wt config show が壊れた設定で終了コード1を返すように(以前は常に0)③wt config update --print が削除され --output <path> に ④Codex/Claude Codeプラグインのuninstallがマーケットプレイスまで削除するように。スクリプトから wt list のJSONを読んでいる場合は①の影響を受けます。

ライセンス・開発状況・注意点

ライセンスはMIT OR Apache-2.0(利用者がどちらかを選ぶRustの慣例形)です。Windows向けバイナリはSignPath Foundationの証明書で署名されており、そのポリシーも公開されています。

worktrunkの数字。GitHubスター7.5k、コミット5,063件(2025年10月〜)、v0.77.0を2026-09-08にリリースしほぼ週次、Rust製でMIT OR Apache-2.0
2026-09-15時点のリポジトリ実測(git log・タグ・GitHub表示)
項目 実測(2026-09-14)
初回コミット 2025-10-16(cargo init
公開 2026年初頭(README記載)
コミット数 5,063件(作者4,085・ボット407・dependabot 240)
リリース v0.72.0(08-07)→ 0.73(08-12)→ 0.74(08-14)→ 0.75(08-26)→ 0.76(09-01)→ v0.77.0(09-08)
CHANGELOGの版数 136(0.1.14〜0.77.0)
スター/フォーク/オープンIssue 7.5k/269/29
要件 Rust 1.97(ソースビルド時)。バイナリ配布はHomebrew・Cargo・winget・pacman・conda

注意点は3つです。

シェル統合が前提wt config shell install を入れないと wt switch は移動しない。本記事の検証でもその案内が毎回出た
プロジェクトフックの承認.config/wt.toml のフックは初回に承認を求める。CIやコンテナで無人実行するなら、承認の扱いを先に確認する(wt config show が未承認コマンド数を出す)
破壊的変更が続く0.x系:ほぼ週次のリリースで、0.77.0だけでも4件のBreakingがある。スクリプトから使うなら版を固定する

未検証として残したのは、Claude Codeプラグインの実動作(🤖/💬表示・隔離・/wt-switch-create)、LLMコミット生成、--full のCI表示です。いずれもClaude Codeのセッションや外部サービスへの接続が要るため、本記事の環境では動かしていません。

まとめ

worktrunkは「worktreeをブランチ名で扱う」ことに絞ったCLIで、並列エージェント運用の足元にある反復作業(作成・移動・一覧・マージ・削除)を4コマンドに畳む。v0.77.0を実機ビルドして通した限り、各操作は0.1秒前後で返り、マージ後の後片付けまで自動だった。10種のフック・LLMコミット・エージェント稼働表示は、その4コマンドの上に載る任意機能。0.x系でBreakingが続く点と、シェル統合・フック承認という2つの前提だけ押さえれば、素の git worktree に戻る理由は薄い。

向く:Claude Code/Codexを複数同時に走らせる人、worktreeを既に使っていて手順を自作シェル関数で包んでいる人
向かない:単一ブランチで順番に作業する人(素のgitで足りる)、0.x系の破壊的変更を追えない自動化環境
次にやるwt config shell installwt config plugins claude install.config/wt.tomlpre-merge のテストを1行

参照ソース

max-sixty/worktrunk(公式リポジトリ・README・CHANGELOG) — 機能・インストール・破壊的変更の一次情報。v0.77.0タグを実機ビルド(2026-09-14)
worktrunk.dev — Agent Integration / wt merge / wt hook / LLM Commit Messages — プラグイン対応表・マージ手順・フック10種・コミット生成設定(リポジトリ同梱の docs/public/*.md と同内容)
Claude Code: Best practices for agentic coding(Anthropic) — worktreeパターンの出典
・実測:Linux(4コア・Rust 1.97.0)で cargo build --release 3分36秒/wt 28.4MB、wt switch --create 0.042秒/wt merge 0.158秒/wt remove 0.056秒(2026-09-14)