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を使う場合は、指定したディレクトリを最優先の確認対象にします。
再開直後は、次を自分で確認します。
pwd -Pが想定したworktreeかgit branch --show-currentが想定したブランチかgit status --shortに予期しない差分がないか- Codexの
/statusで表示される作業場所とモデルが正しいか
同名のworktreeを誤って開くと、会話だけは正しくても別のファイルを編集します。
resumeとforkを使い分ける
resumeは元の会話を続ける操作です。
forkは過去のsessionを複製し、別の方針を試す操作です。
同じ実装を続けるならresumeを使います。
設計案や修正方針を比較するならforkを使います。
独立した課題なら、新しいsessionを作る方が古い制約を持ち込まずに済みます。
会話の分岐とファイルの分岐を同時に扱う場合は、別worktreeも割り当てます。
active writer系の表示を安全に扱う
2026年8月時点の公開Codex資料を調べた範囲では、「active writer」という表示の正式な原因や復旧手順は確認できませんでした。
以下は排他書き込みから導いた仮説であり、Codexの公式仕様として断定しません。
同じsessionが複数のCodexプロセスから同時に更新されると、履歴を保護するため一方を拒否する可能性があります。
切り分けは、次の順番で行います。
- 同じsessionを開いたCLI、IDE、デスクトップ画面がないか確認する
- 片方の処理が終わるまで待つ
- 不要な側を通常の終了操作で閉じる
- 元のworktreeからresumeし直す
- 競合が続く場合はforkして別sessionで続ける
- バージョン、session ID、時刻、再現手順を添えて
/feedbackを送る
session保存ファイルやロックらしきファイルを推測で削除しません。
履歴の消失や別sessionとの不整合を招く可能性があるからです。
中断前と再開後に残すもの
中断前には、変更内容、残タスク、検証結果をリポジトリの文書かコミットへ記録します。
sessionには短い名前を付け、1課題、1worktree、1sessionを基本にします。
再開後は、会話、場所、状態の3点を確認します。
端末の復元は会話の復元ではありません。
会話の復元も、正しいworktreeの確認を代替しません。
