ブログ/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 は tmux を、手で打つものではなくインフラとして扱います。ワークスペースを開いて Claude Code(または Codex)を起動すると:

  • エージェントは自動的に tmux セッション内で起動 — セッション名も new -A も覚える必要なし
  • 再接続時は毎回、そのワークスペースの正しいセッションに自動で再アタッチ
  • 並列インスタンスはそれぞれ独立したセッションを持ち、Agent View で並べて確認可能
  • 長い実行は bg モードに回して完了時に通知 — 確認のための attach ループから解放

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

自前で組む場合のヒント

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

モバイルワークフローの全体像は Claude Code を iPhone でからどうぞ。