Startup time 20 seconds and resume 20 seconds.

Open 💬 4 comments Opened Apr 21, 2026 by miniq15
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

What version of Codex CLI is running?

codex-cli 0.122.0

What subscription do you have?

pro

Which model were you using?

gpt-5-4

What platform is your computer?

Linux 6.17.0-22-generic x86_64 unknown

What terminal emulator and version are you using (if applicable)?

A terminal inside VScode and default linux terminal.

What issue are you seeing?

Codex starts 10 or more seconds. /resume takes 20 more seconds. then when i choose exact session another 10 sec of loading. It is not OKAY.

What steps can reproduce the bug?

Idk. i guess a lot of sessions and ubuntu.

What is the expected behavior?

_No response_

Additional information

codex`s answer

  • codex --help starts in 0.07s, so the binary/Homebrew/Node wrapper is fine.
  • This folder is tiny, so it is not scanning your university project.
  • You currently have about 8 active codex --yolo sessions still running, plus 1 stopped Codex process, plus 2 VS Code Codex app servers.
  • ~/.codex is 7.5 GB.
  • ~/.codex/sessions is 6.3 GB with 3067 session files. Some are huge: one is 415 MB, 117 are over 10 MB.
  • Codex TUI log is huge: about 714-748 MB.

› it works the same with any terminal. I dont use any plugins. Memories dont help, because i had the same delay before memories inside newest version.

codex`s answer
• Then terminal/plugins/memories are not the main cause.
Most likely common cause is Codex local state/session storage, because it affects every terminal and also affects resume.
Specifically: Codex startup touches:

  • ~/.codex/state_5.sqlite
  • ~/.codex/logs_2.sqlite
  • ~/.codex/sessions/**
  • big ~/.codex/log/codex-tui.log

View original on GitHub ↗

4 Comments

github-actions[bot] contributor · 4 months ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #18693
  • #17531

Powered by Codex Action

miniq15 · 4 months ago

› let's delete all old sesions. all older then 5 days

• I’ll delete only session files under ~/.codex/sessions older than 5 days, not any running Codex processes. I’ll first count and list what matches, then remove those files and clean empty date directories.

• Explored
└ List sessions
List sessions

• Ran find /home/william3/.codex/sessions -type f -mtime +5 -printf '%s %TY-%Tm-%Td %TH:%TM %p\n' | sort -nr | tee /tmp/codex-old-sessions.txt | sed -n '1,40p'; printf 'count='; wc -l < /tmp/codex-old-sessions.txt; printf 'bytes='; awk '{s+=$1} END{print s+0}' /tmp/
│ codex-old-sessions.txt
└ 414952459 2026-02-26 12:26 /home/william3/.codex/sessions/2026/02/25/rollout-2026-02-25T20-32-09-019c9612-a22c-77d3-a924-4d85d3c1daf8.jsonl
88606559 2026-03-08 18:29 /home/william3/.codex/sessions/2026/03/07/rollout-2026-03-07T19-46-21-019cc968-4ca6-78b3-90df-72d33bf2bd0a.jsonl
… +38 lines (ctrl + t to view transcript)
count=2926
bytes=6227027877

• Ran find /home/william3/.codex/sessions -type f -mtime +5 -print0 | xargs -0r lsof 2>/dev/null | sed -n '1,80p'

› uits achive them , eot deluet. sam do with huge logs.

• I’ll archive, not delete. For old session JSONL files I’ll move them into a timestamped archive directory; for the live text log I’ll copy it to the archive and truncate the original so running Codex can keep writing to the same path. I won’t touch or stop Codex
processes.

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• The archive operation is running. It is moving about 2,900 old session files and copying the large log files, so it may take a bit longer than the listing step.

• Waited for background terminal · set -euo pipefail
archive_root="/home/william3/.codex/archive/2026-04-21-old-sessions-and-logs"
sessions_archive="$archive_root/sessions"
logs_archive="$archive_root/logs"
mkdir -p "$sessions_archive" "$logs_archive"

Archive session files older than 5 days, preserving relative paths under ~/.codex/sessions.

find /home/william3/.codex/sessions -type f -mtime +5 -print0 |
while IFS= read -r -d '' file; do
rel="${file#/home/william3/.codex/sessions/}"
dest="$sessions_archive/$rel"
mkdir -p "$(dirname "$dest")"
mv "$file" "$dest"
done

Remove empty session date directories left behind.

find /home/william3/.codex/sessions -depth -type d -empty -delete

Archive huge text log without breaking open file descriptors.

if [ -f /home/william3/.codex/log/codex-tui.log ]; then
printf 'archive=%s\n' "$archive_root"
printf 'archived_session_files='; find "$sessions_archive" -type f | wc -l
printf 'archived_session_size='; du -sh "$sessions_archive" | cut -f1
printf 'archived_logs_size='; du -sh "$logs_archive" | cut -f1
printf 'current_text_log_size='; du -h /home/william3/.codex/log/codex-tui.log | cut -f1

• Ran set -euo pipefail
│ archive_root="/home/william3/.codex/archive/2026-04-21-old-sessions-and-logs"
│ sessions_archive="$archive_root/sessions"
current_text_log_size=4.0K

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• The file archive is done. One important follow-up: Codex also has a threads table used by resume, so I’m going to mark threads older than 5 days as archived in SQLite instead of deleting rows. I’ll copy the state DB first.

• Ran set -euo pipefail
│ archive_root="/home/william3/.codex/archive/2026-04-21-old-sessions-and-logs"
│ mkdir -p "$archive_root/state-db"
│ … +20 lines
└ state_backup=/home/william3/.codex/archive/2026-04-21-old-sessions-and-logs/state-db
threads_total=3056
… +2 lines (ctrl + t to view transcript)
visible_after=103
old_visible_after=0

• Explored
└ List 2026-04-21-old-sessions-and-logs
List logs

• Ran du -sh /home/william3/.codex/sessions /home/william3/.codex/log /home/william3/.codex/logs_2.sqlite /home/william3/.codex/archive/2026-04-21-old-sessions-and-logs 2>/dev/null; find /home/william3/.codex/sessions -type f | wc -l; sqlite3 /home/william3/.codex/
│ state_5.sqlite "select count(*) as visible from threads where archived=0;"
└ 469M /home/william3/.codex/sessions
52K /home/william3/.codex/log
… +2 lines (ctrl + t to view transcript)
141
103

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

• Archived, not deleted.

What changed:

  • Old session files older than 5 days moved to:

/home/william3/.codex/archive/2026-04-21-old-sessions-and-logs/sessions

  • Archived session files: 2926
  • Archived session size: 5.9G
  • Remaining active session files: 141
  • Remaining active session size: 469M
  • Codex text log archived and truncated:

/home/william3/.codex/log/codex-tui.log

  • Archived logs size: 1.2G
  • State DB was backed up, then old threads were marked archived=1, not deleted.
  • Visible resume threads went from 3056 to 103.

I did not remove any Codex processes.

One thing left: live logs_2.sqlite is still 479M. I copied it into the archive, but did not shrink/move the live DB because Codex processes have it open. Compacting that should be a separate maintenance step when you choose.

I fixed issue locally asking Codex to remove logs and sesions older then 5 days.

miniq15 · 4 months ago

etraut-openai
removed
CLI
Issues related to the Codex CLI
.
Why it is . it is codex cli

tmalldedede · 3 months ago

Additional datapoint on macOS / codex-cli 0.133.0.

Environment

  • macOS 26.1 (25B78), arm64
  • installed via Homebrew cask

Symptoms

  • startup / doctor / resume became extremely slow on one machine with large local Codex state
  • the binary itself was present and healthy; the pathological part appeared to be accumulated state under ~/.codex

State sizes before cleanup

  • ~/.codex/log/codex-tui.log: 71,357,455,830 bytes (~66.5 GiB)
  • ~/.codex/logs_2.sqlite: 844,046,336 bytes (~805 MiB)
  • ~/.codex/sessions: 2,937 active rollout files, 3.43 GB
  • ~/.codex/archived_sessions: 0 files
  • not obviously startup-critical but also large: ~/.codex/cape_reports_malicious_md ~1.01 GB, ~/.codex/generated_images ~476 MB, ~/.codex/.tmp ~172 MB

What improved things immediately

  • truncating ~/.codex/log/codex-tui.log
  • moving 2,789 old session files (~2.39 GB) out of ~/.codex/sessions into ~/.codex/archived_sessions

State after cleanup

  • ~/.codex/log/codex-tui.log: ~43 KB
  • ~/.codex/sessions: 148 active rollout files, 1.20 GB
  • ~/.codex/archived_sessions: 2,789 files, 2.39 GB

This strongly suggests local state growth, especially the unbounded TUI log and large active session set, can materially degrade CLI startup / resume paths.

Likely follow-ups on the product side

  • rotate / truncate CLI TUI logs automatically
  • reduce startup dependence on scanning large active session sets
  • add guardrails / warnings for oversized logs_2.sqlite and sessions
  • maybe auto-archive older rollouts