Codex Desktopのローカルセッションのサイドバーで、セッションが多数あるとプロジェクトフォルダが空で表示されることがある

Codex Desktop のローカルセッションのサイドバーで、セッション数が多いとプロジェクトフォルダが空に表示されることがある

Windows で Codex Desktop を使っていて、サイドバー上の古いプロジェクトフォルダに、ディスク上にはセッションが残っているのに会話が表示されないという問題に遭遇しました。

観察したこと

ローカルの Codex セッションが数百件ある環境で:

  • SQLite の state データベースには thread の行が残っていました。
  • .codex/sessions 配下の rollout JSONL ファイルも残っていました。
  • codex.exe app-server を直接呼び出して thread/list を叩くと、ページネーションを使った場合に消えていた会話を返せました。
  • Desktop のサイドバーでは、一部のプロジェクトフォルダが空として表示され続けました。特に、最初に読み込まれる recent-thread の範囲(ウィンドウ)外にある古いフォルダで顕著でした。

そのためセッションが削除されたように見えましたが、実際には削除されていませんでした。問題は、UI がプロジェクトグループを埋めるのに十分な recent thread を読み込めていなかったことでした。

ローカル回避策

公式の Codex アプリ自体は変更せずに済む、Windows 限定のローカル回避策を作りました:

  1. インストール済みの公式 Codex アプリのリソースを、別のローカルパッチ用ディレクトリにコピーする。
  2. resources/app.asar を展開する。
  3. フロントエンドの recent-thread マネージャをパッチし、初回の recent-thread 取得が小さな 1 ページ目に依存するのではなく、nextCursor を辿って複数ページ取得するようにする。
  4. load-more とサイドバー検索の上限を 1000 に引き上げる。
  5. 独自の CODEX_ELECTRON_USER_DATA_PATH を持つ別の Electron ランナー経由で、パッチ適用版アプリを起動する。
  6. ウィンドウ名を Codex Patched に変更し、公式の Codex ウィンドウと混同せず共存できるようにする。

Project:

Official Codex discussion:

Related issue comment:

これは .codex/state_5.sqlite を変更せず、updated_at の並べ替えもせず、rollout ファイルの削除や書き換えも行いません。コピーしたフロントエンドのバンドルを変更するだけです。

アップストリームへの修正提案

Codex Desktop でローカルセッション/サイドバー履歴の上限をユーザーが設定できるようにする、またはサイドバーがプロジェクトフォルダを確実に埋められるところまで自動的にページネーションするようにすると有用だと思います。

少なくとも UI は次を区別すべきです:

  • “このフォルダには会話がありません”
  • “会話リストがまだ完全には読み込まれていません”

ローカル履歴が大きいユーザーにとっては、50 / 100 / 500 / 1000 / 全件 のような設定可能な上限があると挙動が予測可能になり、ローカルパッチの必要もなくなります。

兄貴何のプロジェクトやってんのw 俺の vibe coding は基本3〜4個しかウィンドウ開かない