本文へ移動
Signalcraft
English

← Signalcraft一覧へ戻る

Codexのsession、resume、作業ディレクトリを分けて考える

Codexのsession、resume、作業ディレクトリを分けて考える

Codexを再開するとき、「端末が戻ったこと」と「会話と作業場所が正しく戻ったこと」を同じ意味で扱うと危険です。

Codexのsessionは会話の履歴を扱います。

シェルのsessionはプロセス、環境変数、端末を扱います。

Gitのworktreeはファイル変更とブランチを扱います。

名前は似ているが、復元方法も保存対象も別です。

3つの状態を先に分離する

状態 主に保持するもの 再開または確認する方法
Codex session 会話、モデル、作業上の文脈 codex resume/resume
シェルsession cwd、環境変数、実行中プロセス tmuxやシェルの仕組み
Git worktree ファイルの差分、ブランチ 対象ディレクトリとGit

tmuxやctxで端末を復元しても、Codexの会話が自動で続くわけではありません。

逆に、会話をresumeしても、別worktreeのファイル変更を正しく選べるとは限りません。

重要な仕様や残タスクは、会話だけでなくリポジトリの文書やコミットにも残します。

公式CLIでresumeの挙動を確認する

Codex CLIの公式コマンドリファレンスでは、次の形式が案内されています。

codex resume
codex resume --last
codex resume --all
codex resume SESSION_ID

引数なしは保存sessionの選択を開きます。

--lastは現在の作業ディレクトリに関連する最新sessionを選びます。

--allは別の作業ディレクトリにあるsessionも候補へ含めます。

IDまたは名前を指定すれば、対象sessionを直接再開できます。

起動中のTUIでは/resumeから選択できます。

再開したいのが「最後に使った端末」なのか「最後に使ったCodex会話」なのかを、コマンド実行前に決めることが重要です。

cwdが異なるときに確認する

保存sessionのcwdと、resumeを実行したcwdが異なる場合は、どちらの場所を使うかが問題になります。

現行のCLIカスタマイズ資料では、tui.resume_cwd"current"または"session"を設定できます。

明示的な--cdを使う場合は、指定したディレクトリを最優先の確認対象にします。

再開直後は、次を自分で確認します。

  1. pwd -Pが想定したworktreeか
  2. git branch --show-currentが想定したブランチか
  3. git status --shortに予期しない差分がないか
  4. Codexの/statusで表示される作業場所とモデルが正しいか

同名のworktreeを誤って開くと、会話だけは正しくても別のファイルを編集します。

resumeとforkを使い分ける

resumeは元の会話を続ける操作です。

forkは過去のsessionを複製し、別の方針を試す操作です。

同じ実装を続けるならresumeを使います。

設計案や修正方針を比較するならforkを使います。

独立した課題なら、新しいsessionを作る方が古い制約を持ち込まずに済みます。

会話の分岐とファイルの分岐を同時に扱う場合は、別worktreeも割り当てます。

active writer系の表示を安全に扱う

2026年8月時点の公開Codex資料を調べた範囲では、「active writer」という表示の正式な原因や復旧手順は確認できませんでした。

以下は排他書き込みから導いた仮説であり、Codexの公式仕様として断定しません。

同じsessionが複数のCodexプロセスから同時に更新されると、履歴を保護するため一方を拒否する可能性があります。

切り分けは、次の順番で行います。

  1. 同じsessionを開いたCLI、IDE、デスクトップ画面がないか確認する
  2. 片方の処理が終わるまで待つ
  3. 不要な側を通常の終了操作で閉じる
  4. 元のworktreeからresumeし直す
  5. 競合が続く場合はforkして別sessionで続ける
  6. バージョン、session ID、時刻、再現手順を添えて/feedbackを送る

session保存ファイルやロックらしきファイルを推測で削除しません。

履歴の消失や別sessionとの不整合を招く可能性があるからです。

中断前と再開後に残すもの

中断前には、変更内容、残タスク、検証結果をリポジトリの文書かコミットへ記録します。

sessionには短い名前を付け、1課題、1worktree、1sessionを基本にします。

再開後は、会話、場所、状態の3点を確認します。

端末の復元は会話の復元ではありません。

会話の復元も、正しいworktreeの確認を代替しません。

参考資料