ブログ/iOS で tmux

iOS で tmux:切断しても Claude Code を止めない

2026-07-17

iOS はバックグラウンドに回ったアプリを一時停止し、モバイル回線は切れます。Claude Code セッションが SSH 接続の上で直接動いていると、どちらが起きても実行は止まります。電車がトンネルに入るだけで、40 分かかるリファクタリングが 38 分目で止まります。

標準的な対処法は tmux です。ターミナルマルチプレクサで、シェルとその中のプログラムを、接続の有無に関係なくサーバー側で動かし続けます。SSH 接続が切れて繋ぎ直しても、セッションには影響しません。

手動ワークフロー

汎用の SSH クライアントを使う場合、手順はこうなります:

ssh dev@your-server
tmux new -A -s claude    # create or attach
cd ~/projects/app
claude                   # start the agent
# ... connection drops on the train ...
ssh dev@your-server
tmux attach -t claude    # everything still running

この手順自体は問題なく動きます。スマホで困るのは入力の量です。切断のたびに手で再接続して re-attach し、プロジェクトごとのセッション名を覚えておき、並列実行なら複数の名前付きセッションを管理することになります。完了通知もないので、確認のためだけに attach し直すことになります。

ServerCC が自動化すること

ServerCC はこの手順を代わりに行います。ワークスペースを開いて Claude Code(または Codex)を起動すると:

  • エージェントは自動的に tmux セッション内で起動します。セッション名も new -A も不要です
  • 再接続後は、そのワークスペースのセッションに自動で再アタッチします
  • 並列セッションはそれぞれ独立した tmux セッションを持ち、すべて「実行中」タブに並びます
  • バックグラウンドのセッションが止まって入力待ちになると ServerCC が通知するので、確認のためだけに attach する必要はありません

アプリを閉じても作業は続きます。詳細は持続セッションへ。

自前で組む場合のヒント

  • tmux new -A -s 名前 は冪等なので、接続コマンドをこれ 1 本にできます
  • PATH は .bashrc/.zshrc に書きます(.bash_profile だけでは不可)。tmux 内のシェルは対話的な非ログインシェルなので、profile にしか書いていないと "claude not found" になります
  • set -g mouse on を設定すると、タッチでスクロールバックできます

モバイルでの構成全体は Claude Code を iPhone でにまとめています。