Codexでアーカイブしたチャットは削除されていません。ターミナルならcodex unarchive <セッションID>、ChatGPTアプリなら設定の「アーカイブ済みチャット」から元に戻せます。VS Code拡張で作ったチャットも、同じ保存先を使っていればCLIで戻せます。この記事では、Codex CLI 0.162.1で実際にアーカイブ・復元・削除・再開を再現した結果をもとに、画面ごとの戻し方、~/.codexのどこに何が保存されるか、ファイルを手で動かすと復元できなくなる理由を説明します。後半では、セッションをブラウザで一覧するOSSのCodex Viewerが現行のCodexでどこまで動くかも確かめました。
まとめ:Codexのアーカイブを戻す手順と保存場所
アーカイブは「一覧から隠す」操作で、会話の本文は残ります。戻す方法は使っている画面で決まります。
| 使っている画面 | 戻し方 | 削除 |
|---|---|---|
| Codex CLI | codex unarchive <ID> |
codex delete <ID> |
| ChatGPTアプリ(Codex) | 設定 → アーカイブ済みチャット | アーカイブ後に同じ画面で削除 |
| VS Code拡張 | codex unarchive <ID> |
CLIと同じ |
| 置き場所 | 中身 |
|---|---|
~/.codex/sessions/年/月/日/ |
現役のセッション本文 |
~/.codex/archived_sessions/ |
アーカイブしたセッション本文 |
~/.codex/state_5.sqlite |
一覧の索引とアーカイブ状態 |
~/.codex/history.jsonl |
入力したプロンプトの履歴 |
アーカイブ中のセッションはcodex resumeで開けず、先に復元が必要です。ファイルをsessionsへ手で移すと索引と食い違い、復元コマンドまで失敗します。Codex Viewer 0.0.11はアーカイブ済みのセッションを表示せず、画面からの再開も現行のCLIでは失敗します。以降で順に説明します。
Codexのアーカイブを戻す手順(CLI・アプリ・VS Code)
CLI、ChatGPTアプリ、VS Code拡張でローカルの保存先を共有できるのは、同じOSユーザー・実行環境で、同じCODEX_HOMEを参照している場合です。手元の状態DBを読むと、VS Code拡張で作ったセッションもsource列がvscodeの行として同じ表に入っていました。この条件を満たしていれば、どの画面でアーカイブしたものでもターミナルから戻せます。
CLIで戻す:codex unarchive
アーカイブ時と同じセッションIDかセッション名を渡します。IDと名前の両方に当てはまる場合はIDが優先されます(OpenAI公式のコマンドリファレンス)。
$ codex unarchive 01a14362-b94a-7ee1-92a5-19dcc869725a
Unarchived session 01a14362-b94a-7ee1-92a5-19dcc869725a.
実行するとファイルがarchived_sessionsからsessions/2026/10/16/のような日付フォルダへ戻り、状態DBのarchived列も0に戻りました。アーカイブしたまま再開しようとすると、Codexは次のエラーで止まり、復元を求めます。
Error: thread/resume: thread/resume failed: session 01a14362-... is archived.
Run `codex unarchive 01a14362-...` to unarchive it first. (code -32600)
TUIの中で/archiveを使った場合も、本文は残るので同じcodex unarchiveで戻せます。
ChatGPTアプリ(Codex)で戻す:設定のアーカイブ済みチャット
デスクトップアプリでは、アーカイブしたチャットはサイドバーから消え、設定ページの「Archived chats」(日本語表示は「アーカイブ済みチャット」)タブに移ります。OpenAIヘルプセンターの手順はこのタブを削除の入口として説明しています。アプリの画面文言には「アーカイブすると進行中の作業は停止します。チャットは後で設定から復元できます。」があり、同じタブに「アーカイブ解除」と「アーカイブ解除して開く」のボタンがあります。
アーカイブで止まるのは画面だけではありません。予定済みタスク(スケジュール実行)を持つチャットをアーカイブすると、そのタスクも削除されて以後は実行されません。タスクは削除されるため、チャットを復元した後に作り直す必要があります。
VS Code拡張のアーカイブ復元とCLIでの代替手順
VS Code用のCodex拡張(openai.chatgpt)の現行版26.51007.21434を展開して日本語の画面文言を調べると、「アーカイブ済みチャット」「アーカイブ解除」「アーカイブ済みチャットを検索」など、アプリと同じ復元画面の文言が入っていました。ただしこの翻訳文言にはGmail連携など拡張に無い機能の文言も含まれており、デスクトップアプリと共通の資産と見られます。そのためVS Code拡張のどこにその画面があるかまでは文言からは確定できません。IDE拡張のコマンド一覧にも復元用のコマンドはありません。
拡張の画面で見つからないときは、拡張と同じ保存先を使うターミナルでcodex unarchiveを実行するのが確実です。IDは次の章の方法で調べられます。
Codexのアーカイブはどこにあるか:~/.codexの保存構成
保存先の起点は環境変数CODEX_HOMEで、未設定なら~/.codexです。実際にどこを使っているかはcodex doctorで確認できます。手元の0.162.1では次のように表示されました。
✓ state databases healthy
CODEX_HOME /Users/you/.codex (dir)
state DB /Users/you/.codex/state_5.sqlite (file) · integrity ok
thread history DB /Users/you/.codex/thread_history_1.sqlite (file)
✓ threads rollout files and state DB thread inventory agree
現役とアーカイブのファイル配置
セッションの本文は1セッション1ファイルのJSON Lines(rolloutファイル)です。現役のものは日付フォルダに、アーカイブしたものは日付なしのarchived_sessions直下に置かれます。
~/.codex/sessions/2026/10/16/rollout-2026-10-16T15-25-06-01a14362-b94a-7ee1-92a5-19dcc869725a.jsonl
~/.codex/archived_sessions/rollout-2026-10-16T15-25-06-01a14362-b94a-7ee1-92a5-19dcc869725a.jsonl
ファイルの1行目はsession_metaで、セッションID、作業ディレクトリ(cwd)、CLIの版、生成元(cli・exec・vscodeなど)が入っています。どのプロジェクトのセッションかを調べるときは、この行を見ます。
state_5.sqliteによる一覧の索引とアーカイブ状態の管理
サイドバーやピッカーに出す一覧は、ファイルを毎回走査しているわけではありません。state_5.sqliteのthreads表が索引を持ち、archived(0か1)、archived_at、rollout_path、title、sourceなどの列があります。codex archiveはファイルの移動とこの列の書き換えを同時に行います。ファイルと索引が食い違うと、ファイルが残っていても一覧に出ない、あるいは一覧にあるのに開けないことがあります。
history.jsonlはプロンプトの入力履歴
history.jsonlの各行はsession_id・ts・textの3項目で、入力したプロンプトだけを記録します。会話の本文は入っていません。codex execによる非対話の実行では、このファイルに書き込まれませんでした。保存を止めるならconfig.tomlでhistory.persistence = "none"、大きさを抑えるならhistory.max_bytesを設定します(設定リファレンス)。
sessionsへの手動移動による復元エラーと修復手順
「archived_sessionsにあるならsessionsへ移せば戻る」と考えがちですが、やってはいけません。アーカイブ済みのファイルを手でsessions/2026/10/16/へ移したところ、次のようになりました。
| 操作 | 結果 |
|---|---|
codex doctor |
threads に警告が2件 |
codex exec resume <ID> |
is archived のエラーで再開できない |
codex unarchive <ID> |
failed to unarchive session |
codex doctorの警告は「rollout files are missing from the state DB; state DB rows point at missing or unusable rollout files」でした。状態DBはまだアーカイブ中と記録し、指しているパスにはファイルが無いため、正規の復元コマンドも動きません。
手で動かしてしまった場合は、ファイルをarchived_sessionsへ戻してからcodex unarchiveを実行します。この順で直したところ、codex doctorの表示は「rollout files and state DB thread inventory agree」に戻り、再開もできました。以下はmacOS・Linux向けの例です。日付部分とIDは実際の移動済みファイルに合わせ、保存先を変更している場合はそのパスを使ってください。
mv ~/.codex/sessions/2026/10/16/rollout-*-<ID>.jsonl ~/.codex/archived_sessions/
codex unarchive <ID>
codex doctor
同じ理由で、state_5.sqliteを別のPCやWSLとWindowsの間でコピーするのも避けてください。索引が指すパスがコピー先に存在しないため、一覧と本文がずれます。移行ではrolloutファイルをコピーしただけで一覧に出るとは限りません。移行先で索引との整合と再開可否を確認し、確認が終わるまで移行元のデータを残してください。
CodexのセッションIDを確認する方法
復元・削除・再開はいずれもセッションIDを使います。名前でも指定できますが、同じ名前が複数あると曖昧になるので、UUIDを使うのが確実です。
- 非対話の
codex execは、実行の冒頭にsession id: 01a14362-...を表示します。 - IDE拡張では
/statusでチャットIDが表示されます(IDE拡張のスラッシュコマンド一覧の説明)。 - ファイル名から拡張子の
.jsonlを除いた末尾36文字がIDです。最近のアーカイブ済みセッションのIDは次のコマンドで並べられます。
ls -t ~/.codex/archived_sessions/ | head -5 | sed -E 's/.*-([0-9a-f]{8}-[0-9a-f-]{27})\.jsonl$/\1/'
TUIで/renameを使って名前を付けておくと、次からは名前で指定できます。
Codexのセッションを削除する:codex deleteとアプリの違い
CLIのcodex deleteは、アーカイブしていないセッションもそのまま削除できました。削除すると本文ファイルと状態DBの行が消え、その後のcodex unarchiveは失敗します。元に戻す手段はありません。
codex delete <ID> # 確認プロンプトが出る
codex delete <UUID> --force # 確認なし。UUIDのみ
--forceには制約があります。名前を渡すと「–force requires a session UUID; names must be confirmed interactively」で止まり、スクリプトなど端末のない環境で--forceを付けずに実行すると「cannot confirm session deletion without an interactive terminal」で止まりました。TUIの/deleteは、そのセッションから派生したサブエージェントのセッションもまとめて消します。
ChatGPTアプリでは順序が逆で、削除の前にアーカイブが必要です。設定のアーカイブ済みチャットでゴミ箱アイコンを押すと、一覧からはすぐ消え、OpenAIのシステムからは原則30日以内に完全に削除されます。サポートに頼んでも復元できません(OpenAIヘルプセンター)。残すか迷うセッションは、削除せずアーカイブで止めておくのが安全です。
前回の続きから再開する:codex resumeとfork
codex resumeは引数なしでピッカーを開き、--lastで直近を開きます。--lastが対象にするのは今いるディレクトリのセッションだけなので、別のリポジトリで作業したものは--allを付けて探します。
codex resume --last # このディレクトリの直近
codex resume --all # 全ディレクトリから選ぶ
codex resume <ID> # ID指定
今いるディレクトリとセッションの保存時のディレクトリが違うと、Codexはどちらで作業するかを尋ねます。毎回の確認を省くにはconfig.tomlのtui.resume_cwdに"current"か"session"を設定します。元の会話を残したまま別の案を試したいなら、codex fork <ID>で新しいIDの複製を作ります。アーカイブ中のセッションはどちらでも開けないので、先にcodex unarchiveを実行します。
Codex Viewer(nogataka/codex-viewer)の現状と使いどころ
Codex Viewerは、~/.codex/sessionsのrolloutファイルとhistory.jsonlを読み、プロジェクト別のセッション一覧と会話ログをブラウザに表示するOSSです。Claude Code向けのclaude-code-viewerをCodex向けにforkしたもので、ライセンスはMITです。公式ツールではありません。
Codex Viewerの導入と起動
GitHubのREADMEどおり、npmで入れて起動します。Node.jsは20.12.0以上が必要です。
npm install -g @nogataka/codex-viewer
codex-viewer
# インストールせずに試す場合
PORT=5656 npx @nogataka/codex-viewer@latest
既定のポートは5656で、起動するとブラウザでhttp://localhost:5656が開きます。ブラウザを自動で開かせたくないときはCC_VIEWER_NO_AUTO_OPEN=1を設定します。npm 11.17.0で導入した際は、依存するsharpのインストールスクリプトが承認待ちという警告が出ましたが、起動とセッション一覧の表示には影響しませんでした。
Codex CLI 0.162.1と組み合わせたときの制約
npmの最新版は0.0.11(2026年2月5日公開)で、2026年10月16日時点でそれ以降の更新はありません。その間にCodex側の仕様が変わったため、0.162.1と組み合わせると次の4点が問題になりました。
- アーカイブ済みのセッションは表示されない:読み取り先が
sessionsだけで、有効1件とアーカイブ1件の状態で起動するとセッション数は1でした。アーカイブを探す道具には使えません。 CODEX_HOMEを見ない:配布物のコードはos.homedir()の.codex/sessionsを固定で読みます。CODEX_HOMEを変えても読み取り先は変わらず、既定の保存先に残っているセッションが表示されます。既定の保存先が空なら何も表示されません。- 画面からの実行・再開が失敗する:Viewerは裏で
codex exec --experimental-json --full-auto ...を起動します。--full-autoはCodex 0.147.0(2026年8月7日)で削除されており、0.162.1では「unexpected argument ‘–full-auto’ found」で終了コード2になりました。 - 一覧の「最初のコマンド」がプロンプトにならない:Codexが会話の先頭に差し込むスキル一覧の文がそのまま表示されました。
Codex Viewerを使ってよい場面、避ける場面
現行のCodexでViewerを使えるのは、現役セッションの会話ログやツール出力、差分をブラウザで読み返す用途に限られます。ログの閲覧では既存のrolloutファイルを読み取り、ファイル監視とServer-Sent Eventsで、ターミナル側の書き込みが画面にすぐ反映されます。
アーカイブの確認・復元、画面からの再開には使わないでください。前者は表示されず、後者は失敗します。再開はcodex resume、アーカイブの扱いはCLIかアプリの設定画面で行い、Viewerは読むだけの道具と割り切るのが現実的です。Codexを複数並べて監視したい場合は、デスクトップGUIのCodex Monitorも候補になります。opencode向けには同種のOpenCode Viewerがあります。
よくある質問
Codexのアーカイブはどこに保存されますか?
本文は~/.codex/archived_sessions/直下にrolloutファイルとして移り、アーカイブ状態は~/.codex/state_5.sqliteのthreads表に記録されます。CODEX_HOMEを変えている場合はその配下です。実際の場所はcodex doctorのCODEX_HOME行で確認できます。
VS Codeでアーカイブしたチャットを戻すには?
拡張の画面に復元の入口が見つかればそこから戻せますが、版によって配置が変わります。確実なのはCLIです。拡張とCLIが同じ実行環境・保存先を参照していることを確認してから、ターミナルでcodex unarchive <セッションID>を実行すれば戻ります。
CodexのセッションIDはどこで確認できますか?
rolloutファイル名から拡張子の.jsonlを除いた末尾36文字がIDです。codex execでは実行の冒頭にsession id:として表示され、IDE拡張では/statusでチャットIDを確認できます。
アーカイブせずにCodexの履歴を削除できますか?
CLIのcodex deleteはアーカイブ不要で削除できます。ChatGPTアプリでは先にアーカイブし、設定のアーカイブ済みチャットから削除します。どちらも復元はできません。入力履歴だけを消したいときはhistory.jsonlが対象です。
Codex Viewerは今も使えますか?
会話ログを読むだけなら使えます。0.0.11は2026年2月以降更新がなく、Codex CLI 0.162.1ではアーカイブ済みセッションが表示されず、画面からの再開は削除済みの--full-autoを渡すため失敗します。