Regression: codex resume picker slowed from 2-3s to 8-60s after updating to 0.124.0
What version of Codex CLI is running?
0.124.0
What subscription do you have?
[Please fill in: Plus / Pro / Team / Enterprise]
Which model were you using?
gpt-5.5
What platform is your computer?
Linux lia-server 6.8.0-110-generic #110-Ubuntu SMP PREEMPT_DYNAMIC Thu Mar 19 15:09:20 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Node.js: v22.22.0
npm: 10.9.4
Install path: /home/lia/.npm-global/bin/codex
What terminal emulator and version are you using?
[Please fill in]
What issue are you seeing?
After updating Codex CLI to the recent version 0.124.0, codex resume became excessively slow when opening the resume picker.
This is a regression after the recent CLI update, not simply a case of having a large local history. Before the update, the same machine and accumulated session history loaded the resume picker in about 2-3 seconds. After updating to 0.124.0, the same workflow became much slower.
The slowdown appears to scale with the number and total size of local session JSONL files after the update, but the important point is that this history was previously usable. I want to keep my session history, so deleting old sessions is not an acceptable long-term workaround.
Current local state after manually archiving old session files outside the active scan path:
Codex CLI: 0.124.0
Model: gpt-5.5
Active session JSONL files under ~/.codex/sessions: 27
Active session directory size: 260M
Archived session JSONL files moved outside active scan path: 821
Archived session size: 3.1G
State DB thread rows: 833
Visible rows: 36
Archived rows: 797
Even after reducing the active session set to only 27 JSONL files, codex resume still takes around 8 seconds for the picker list to become visible.
Measured after reinstalling the same CLI version:
run 1: 8.236s
run 2: 7.927s
run 3: 7.982s
Before physical archiving, with the full session history in the active scan path, the full load after the update was much worse:
Average first list: about 10.22s
Average full load: about 62.83s
Different active retention sizes showed that the slowdown scales with session history size:
30-day active keep:
- 82 files
- 2.1G
- full load: about 40-46s
14-day active keep:
- 49 files
- 449M
- full load: about 10-18s
- average: about 12.75s
7-day active keep:
- 25-27 files
- about 253-260M
- full load/list visible: about 6-8s
Reinstalling @openai/codex@0.124.0 did not improve the behavior. npm uninstall/install completed successfully and the package files were refreshed, but resume loading remained slow.
What steps can reproduce the bug?
- Use Codex CLI
0.124.0. - Accumulate many local Codex sessions under
~/.codex/sessions, including large JSONL files. - Run:
codex resume
- Observe that the resume picker remains on
Loading sessions...for a long time. - Reduce the active session set and observe that loading time improves roughly with fewer/smaller JSONL files, but remains slow even with a relatively small active set.
What is the expected behavior?
codex resume should open the resume picker quickly even when the user has a large local session history.
The picker should not require scanning or parsing large amounts of JSONL before becoming usable. It should preferably use the state DB/index first, render quickly, and load heavier history lazily only when needed.
Keeping long-term session history should not make the native resume picker progressively slower.
Additional information
I want to preserve session history and continue using the native codex resume command. Manual archiving of old JSONL files improves load time, but this is only a workaround and requires external session management.
The regression became noticeable only after updating to the recent Codex CLI version. Before the update, the resume picker was typically usable in about 2-3 seconds with the accumulated local history. I am avoiding CLI rollback because this version is also tied to GPT-5.5 availability in Codex, and I want to keep using gpt-5.5.
There may be an architectural issue in the resume picker path where it still scans/parses session JSONL files instead of relying primarily on the state DB metadata.
5 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Thanks for the bug report. Can you confirm that this problem showed up first in 0.124.0? If you downgrade to 0.123.0 on your system, do you see a different behavior? This will help us track down the cause more quickly. Thanks!
I ran the requested downgrade comparison, and the result strongly indicates that this is a CLI regression introduced between
0.123.0and0.124.0.This does not look like a general "large session history" issue. Under the same cwd and the same current session state,
0.123.0opens the resume picker in under 1 second, while0.125.0consistently takes about 8-10 seconds.Test environment:
Measurement method:
codex resume --no-alt-screenfrom/home/lia.0.123.0, the CLI first showed an update prompt (0.123.0 -> 0.125.0). I selectedSkipand excluded that update prompt time from the picker timing.0.125.0with-m gpt-5.4.Results:
Conclusion:
This looks like a CLI-side resume picker regression, not a model issue and not merely an unavoidable consequence of having a larger local session history.
The key comparison is:
Forcing
gpt-5.4on0.125.0remains slow, so the regression does not appear to be caused bygpt-5.5.After the test, I restored the CLI to:
Additional investigation after locally testing
rust-v0.125.0:This does not look like just “large session history is slow”. Before the recent CLI update,
codex resumeopened in roughly a few seconds for the same retained session set, and in an A/B downgrade test I measured0.123.0at about0.19s,0.57s,0.55sto show the picker rows. With0.124.0/0.125.0the same measurement is around8s+.The main code-path difference I found is that
0.124+added ause_state_db_onlypath for thread listing, but the TUI resume paths still passfalse:codex-rs/tui/src/resume_picker.rs::thread_list_params(...)codex-rs/tui/src/lib.rs::latest_session_lookup_params(...)Current
0.125.0behavior forcodex resumeis therefore still:This is especially costly because resume applies metadata filters such as source kind, provider, cwd, and archived=false. In
0.125.0, filtered listings go through the heavier reconcile path before returning.I built a local experimental
0.125.0binary and changed only the resume picker / latest-session lookup to useuse_state_db_only: true. That reduced the measured picker-row time from about8s+to about4.5s-4.8s, confirming that the JSONL scan-and-repair path is a large part of the regression.There was also a separate startup latency source in my PTY environment: synchronous terminal capability/color queries before the first screen draw. Instrumentation showed roughly:
Setting
CODEX_TUI_DISABLE_KEYBOARD_ENHANCEMENT=1on the installed0.125.0partially improved startup, but did not fix the JSONL scan cost. In a local build where I combined both changes:codex resumeusesuse_state_db_only: trueI measured:
So the practical fix direction seems to be:
codex resume/resume --lastuse the SQLite state DB as the primary listing source (use_state_db_only=true) instead of blocking on JSONL scan-and-repair.This preserves large retained session histories while restoring the pre-regression
codex resumebehavior.This will be addressed in the next release.