cmuxのセッション復元

Lawrence Chen@lawrencecchen

ターミナルの作業は、アプリが作業の形を再構築できると中断に強くなります。cmuxはワークスペースのレイアウトを、単一のアプリプロセスに結びついたものではなく、永続的な状態として扱うようになりました。

重要な境界はライブプロセスの状態です。cmuxは自分が所有するものと、対応ツールが独自の再開APIで公開するものを復元します。任意のターミナルプロセスをチェックポイント化するわけではありません。

ターミナルのクラッシュ後にClaude Code、OpenCode、opencode、Codex、Gemini CLI、Antigravity CLI、Grok Build CLI、Amp、Cursor CLI、Rovo Dev、Copilot、CodeBuddy、Factory、Qoder、Hermes Agentのセッションを復元する方法を探している場合は、cmux hooksをインストールし、エージェント再開を有効にしておいてください。

常に戻るもの

通常の再起動後、cmuxはアプリレベルのセッションスナップショットを復元します。

  • ウィンドウ、ワークスペース、ペインのレイアウト
  • 作業ディレクトリ
  • ターミナルのスクロールバック、ベストエフォート
  • ブラウザURLとナビゲーション履歴

エージェントセッションにはhooksが必要です

Claude Code、Codex、Grok Build CLI、OpenCode、Pi、Amp、Cursor CLI、Gemini CLI、Antigravity CLI、Rovo Dev、Hermes Agent、Copilot、CodeBuddy、Factory、Qoderは、cmuxがネイティブのセッションIDを取得している場合に再開できます。ほとんどのエージェントでは、cmux hooks setupで連携をインストールします。

cmux hooks setup

setupコマンドはPATH上にある対応エージェントをインストールし、それ以外はスキップします。Claude CodeはSettingsでClaude連携が有効な場合、cmux Claudeラッパーで処理されます。

仕組み

cmuxはApplication Support内に、ウィンドウツリー、ワークスペースメタデータ、ペインレイアウト、ターミナルcwd、スクロールバック再生データ、ブラウザのナビゲーション状態を含むJSONセッションスナップショットを書き込みます。

エージェントhooksは~/.cmuxtermにセッション対応表を書き込みます。復元時、cmuxはまずUIを再構築します。自動エージェント再開が有効なら、保存されたセッションIDを使って各対応エージェントのネイティブ再開コマンドを起動します。

対象外のもの

tmux、vim、シェル、未対応ツールは、安全なネイティブ再開コマンドを記録するcmux連携がない限り、通常のターミナルとして再び開きます。これにより復元は予測可能になり、古いプロンプトやシークレットの再生を避けられます。

推奨セットアップ

  1. 使うエージェントCLIをインストールし、cmux hooks setupを実行してcmuxがネイティブのセッションIDを取得できるようにします。
  2. 通常のcmuxターミナルでエージェントを実行します。作業中にhookがセッションID、cwd、ワークスペース、サーフェスを記録します。
  3. 再起動後、cmuxは保存済みのエージェント復元コマンドを開始する前に、ウィンドウとペインのツリーを再構築します。
  4. 復元されたエージェントが同じ上流セッションを継続していることを確認し、同じワークスペースで作業を続けます。

FAQ

クラッシュ後にも復旧できますか?

最後に保存されたスナップショットから、アプリが管理するレイアウトと対応エージェントセッションを復元します。エージェントやシェルが復元APIとして公開していない任意のプロセスメモリは復元できません。

tmuxも使うべきですか?

リモートホスト上でtmuxのセマンティクスが必要な場合はtmuxを使います。アプリレイアウト、ブラウザ状態、対応エージェントの復元をまとめて戻したい場合はcmuxのセッション復元を使います。

設定コマンド、対応エージェント、トラブルシューティングはセッション復元ドキュメントを読んでください。