tmuxの使い方:Claude Codeをリモートで動かし、作業ごとにセッションを分ける
tmuxの使い方を、Claude Codeをリモートホストで動かす構成から解説します。公式の設定、Git worktreeと名前付きセッションの分け方、SSH切断後の再接続手順を紹介。ノートPCを閉じても作業を続けるための条件や、エージェントチームを加える判断基準、ペイン分割とファイル分離の違いも整理します。
公開日

常時稼働するリモートマシン上のtmuxでClaude Codeを実行すれば、ノートPCを閉じても、SSHで再接続して実行中の作業に戻れます。押さえたいtmuxの使い方は、独立したタスクごとにGit worktreeと名前付きセッションを用意することです。これで機能開発とバグ修正のファイルを分けられます。まずはこの構成から始め、タスク間で相談や調整が必要になったらエージェントチームを加えます。
大切なのは、実際に処理を担うマシンがどこにあるかです。tmuxは接続が切れてもターミナルセッションを維持します。ただし、スリープ中のノートPCに処理を続けさせたり、電源が切れたサーバーを動かしたり、クラッシュしたClaudeのプロセスを再起動したりはできません。Anthropicも、SSH切断後も維持したいリモートのClaudeセッションには、tmuxまたはscreenの利用を明示的に勧めています。AnthropicのRemote Controlドキュメント。
tmuxの使い方:まずは公式の設定から
設定はClaude Codeを動かすマシンに置きます。リモートで作業するなら、設定先はリモートホストの~/.tmux.confです。必要に応じてそのホストのパッケージマネージャーでtmuxをインストールし、先へ進む前に、同じホストでtmux -Vとclaude --versionを確認してください。
次の内容を~/.tmux.confに追加します。最初の3行はAnthropicのドキュメントにある設定です。コメントアウトしたマウス操作の設定は任意で、Anthropicが必須としているものではありません。
set -g allow-passthrough on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
# Optional preference: enable mouse interaction in tmux.
# set -g mouse onパススルーを有効にすると、通知や進捗の更新がtmuxの外側のターミナルに届きます。拡張キーを有効にすると、tmuxがShift+EnterとEnterを区別できます。すでに動いているtmuxサーバーには、tmux source-file ~/.tmux.confで設定を反映します。新しく起動するサーバーは、起動時にこのファイルを読み込みます。Anthropicのターミナル設定ガイド。
tmuxサーバーがまだなければ、下の手順で最初のセッションを作ってから設定の再読み込みを実行してください。最初の構成にサードパーティー製プラグインを加える必要はありません。このワークフローはプラグインなしで使えます。
worktreeごとに名前付きセッションを用意する
Git worktreeは、リポジトリの履歴を共有しながら、専用のファイルとブランチを持つ別のチェックアウトです。一方、tmuxのセッションは、複数のターミナルウィンドウを名前でまとめたものです。ウィンドウを分割した領域をペインと呼びます。worktreeが作業台なら、tmuxは出入りできる作業部屋と考えると分かりやすいでしょう。Anthropicのworktreeガイド。
セッション名を見れば、どのチェックアウトに入るのか分かるように、名前をそろえます。以下はこの記事で提案する構成であり、Claude Codeのデフォルト設定ではありません。
次の初回セットアップ例は、~/src/projectに既存のリポジトリがあり、少なくとも1つのコミットがあることを前提としています。また、指定するブランチ名、ディレクトリ名、セッション名は未使用である必要があります。dev@devboxとプロジェクトのパスは、自分の環境に置き換えてください。ノートPCの通常のシェルから、tmuxの外で実行を始めます。worktreeのコマンドはAnthropicの手動操作の手順に沿っています。名前付きセッションとの組み合わせは、この記事で紹介する使い方です。
ssh dev@devbox
cd ~/src/project
git worktree add ../project-feature-a -b feature-a
git worktree add ../project-bugfix -b bugfix
tmux new-session -d -s cc-feature-a -n claude -c "$HOME/src/project-feature-a"
tmux new-session -d -s cc-bugfix -n claude -c "$HOME/src/project-bugfix"
tmux attach-session -t cc-feature-a
# Now inside the feature worktree's tmux shell:
claudeSSHで接続したあとのコマンドは、リモートホスト上で実行します。デタッチされた状態で作成した2つのセッションには、最初はシェルだけが起動しています。どちらかにアタッチしてclaudeを実行すると、通常の初期設定のプロンプトも含め、画面で確認できる形でコーディングセッションが始まります。もう一方のタスクも動かしたくなったら、デタッチしてcc-bugfixにアタッチし、そこでclaudeを実行します。
依存関係のインストールや必要なローカル設定など、プロジェクトのセットアップはworktreeごとに行う必要があります。Claudeにファイルの編集を依頼する前に、ディレクトリとブランチを確認してください。Anthropicのworktree手動管理ガイド。
機能開発用のチェックアウトにテスト用のシェルも用意したい場合は、ホスト上のシェルからtmux new-window -t cc-feature-a -n checks -c "$HOME/src/project-feature-a"を実行します。検証は、対象のタスクと同じ作業場所で行うようにします。メインのチェックアウトを、両方のエージェントが使う共通の作業用ディレクトリにするのは避けてください。
Codexも使っている場合は、Codex CLIのworktreeガイドで、そのツールのワークフローを別途解説しています。

デタッチしてPCを閉じ、SSHで作業に戻る
tmuxのデフォルトのプレフィックスキーを使っている場合は、Ctrl+Bを押し、両方のキーを離してからDを押します。クライアントがデタッチされ、リモートのシェルに戻ります。そのあとはSSHを切断できます。Claudeはセッション内で動かしたままにしておきます。
作業に戻るときは、ssh dev@devbox、tmux list-sessions、tmux attach-session -t cc-feature-aの順に実行します。前回と同じリモートホスト、同じユーザーアカウントを使ってください。ノートPCからssh -t dev@devbox 'tmux attach-session -t cc-feature-a'を実行すれば、1つのコマンドで同じ操作ができます。
これらのキー操作は、デフォルトのプレフィックスを前提としています。変更済みなら、自分で設定したプレフィックスを使ってください。tmuxの中では別のtmuxクライアントを入れ子で起動せず、セッションを切り替えます。
再アタッチは、既存のターミナルプロセスにつなぎ直す操作です。プロセスが終了していた場合、会話の復元は別の操作になります。claude --continueは現在のディレクトリで最新の会話を再開し、claude --resumeは会話の選択画面を開きます。どちらも、元のプロセスを動かし続けることの代わりにはなりません。Anthropicのセッション再開ガイド。
スマートフォンやブラウザーからアクセスしたい場合は、Claude Code Remote Controlを参照してください。この場合も処理はホスト上で実行されるため、ホストの電源を入れたままにする必要があります。AnthropicのRemote Controlガイド。
タスク間の連携が必要ならエージェントチームを使う
エージェントチームは実験的な機能で、デフォルトでは無効です。tmuxのシェルでCLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 claude --teammate-mode tmuxを実行すると、対話形式の新しいリードセッションを起動できます。環境変数はその起動時にチーム機能を有効にし、フラグはペイン分割を選択します。Anthropicのエージェントチーム設定ガイド。
現在のデフォルトはin-processです。autoはtmux内ではペイン分割を使い、必要に応じて別の表示方式に切り替えます。tmuxはターミナルを検出したうえでペイン分割モードを選びます。この設定を保存するには、~/.claude/settings.jsonのteammateModeを使います。ペイン分割では、チームメイトごとに別のターミナルが表示されます。Anthropicは、このモードではVS Codeの統合ターミナル、Windows Terminal、Ghosttyをサポート対象外としています。Anthropicの表示モードと制約の説明。
私なら、最初の試行ではリードに次のような範囲を絞った依頼をします。
チェックアウト処理のタイムアウトを調査するエージェントチームを作成してください。チームメイトの名前はRequestsとStorageにしてください。Requestsはリトライの挙動を追跡し、Storageはトランザクションの境界を調べてください。互いに調査の根拠を照合するよう指示してください。ファイルは編集せず、修正案とテスト計画を返してください。
手動で起動したcc-feature-aとcc-bugfixのセッションは、どちらもtmux内にあるというだけではチームメイトになりません。チームを使うかどうかは、誰が作業を割り振り、調査結果をまとめるかという別の判断です。1つのセッション内で、範囲を絞った仕事を委任したい場合は、Claude Codeのサブエージェントが適しています。

ペインを分けても、チェックアウトが分かれるわけではありません。独立した編集作業では、担当ファイルを分けるか、別々のworktreeを使ってください。また、チームはより多くのトークンを使います。tmuxを使っても、その消費量は減りません。再アタッチなら動作中のターミナルに戻れますが、/resumeではin-processのチームメイトは復元されません。Anthropicのチーム運用ガイド。
この構成が役立つ5つの場面
私なら、次の順に用途を優先します。いずれも想定できるワークフローであり、生産性向上を実測した結果ではありません。
自動化を増やす前に、作業中断のコストを測ってください。たとえば、状況を思い出して作業を立て直すのに毎回4分かかる中断が週に5回あれば、週20分を費やす計算です。これは仮の数値による例であり、ベンチマーク結果ではありません。実際の復帰時間、セットアップ時間、レビュー時間を記録し、その合計が改善するなら、このワークフローを使う意味があります。同時に動かすエージェントを増やせば、それだけ割に合うとは限りません。
この構成をもとに作れる小さなツールを2つ
より有望なのは、開発チーム向けのworktree・セッション起動ツールです。 プラットフォームチームなら、開発者間でタスク名、チェックアウトのパス、アタッチ用コマンドを統一できることに対価を払う可能性があります。最小限の実用的な形は、worktreeを新規作成または検索し、対応する名前付きtmuxセッションを開き、Claudeの起動前にブランチとパスを表示するものです。チェックアウトを削除する前には、確認を求める設計にします。
2026年10月12日に取得したDataForSEOの米国向け推定値では、「tmux claude code」の月間検索数は480件です。セットアップへの関心を示す限定的な指標であり、購入者数ではありません。注意したいのは、短い社内スクリプトだけで用が足りる可能性があることです。有料製品にするなら、繰り返し発生する作業を減らせる、チーム固有のセットアップやサポートが必要です。
もう1つは、用途をさらに絞ったリモートセッションの管理台帳です。 小規模なエンジニアリングチームで、利用が認められたホストのエイリアス、セッション名、チェックアウトのパスを1か所にまとめ、SSHでアタッチするコマンドをコピーできるようにします。まずはセッションを見つけて接続する機能から始め、ライフサイクルを管理する操作は、利用者が必要としている場合にだけ追加します。
同じDataForSEOの調査では、米国の月間検索数は**「claude code remote」が1,600件、「claude code remote ssh」が70件**と推定されています。広いほうの検索語には、別のリモートインターフェースを探している人も含まれます。その数字だけで、SSH向け製品の需要を裏づけることはできません。課題はアクセス管理です。管理台帳は、各開発者がすでに持っているホストへのアクセス権限に従う必要があります。ダッシュボードを作る前に、リモートワークを基本とするチームに話を聞いてください。
実際の運用で迷いやすいこと
ノートPCを閉じてもClaudeは動き続けますか?
Claudeとtmuxが、スリープせずネットワークに接続されたリモートホスト上で動いていれば、動き続けます。スリープするノートPC上で動かしている場合は、PCとともに作業も止まります。また、ターミナルが維持されていても、処理が進むとは限りません。Claudeが入力待ちになっている場合もあります。
tmux内でShift+Enterを押しても送信されるのはなぜですか?
実際にtmuxを動かしているホスト上で、設定を編集して再読み込みしたか確認してください。/terminal-setupが必要な場合は、tmuxの外側のターミナルで実行します。改行の代替キーとして、公式ドキュメントではCtrl+Jが案内されています。Anthropicのターミナル設定ガイド。
再アタッチするとセッションが存在しないと言われます。どうすればよいですか?
ホストとユーザーを確認し、tmux list-sessionsで正確なセッション名を調べてください。セッションが終了していたり、ホストが再起動していたりする場合は、アタッチを繰り返すのではなく復旧が必要です。元のセッションが別の場所でまだ動いていないか分かるまでは、似た名前の代替セッションを作らないでください。
tmuxのペインを2つに分ければ、エージェントが同じファイルを編集するのを防げますか?
いいえ。この記事の構成では、worktreeのパスを分けることで作業を分離しています。編集を始める前に、それぞれのシェルのディレクトリとブランチを確認してください。できあがった変更のレビューと統合も必要です。
次の月曜日に試すなら、リモートで行うタスクを1つ選び、worktreeと名前付きセッションを作ってください。無人で動かす前に、デタッチして再アタッチできることを確認します。もう1つの独立したタスクを加えるのは、この流れに慣れてからで十分です。
チームの開発環境にこのワークフローを組み込みたい場合は、本番運用に対応したAIシステムの開発をご相談ください。
- 公開日
- カテゴリー
- Build
- 言語







