Codex Desktop shows stale last-edited age for local thread
Attestation of Biological Origin: Codex helped draft this report; however, a verified carbon-based reviewer put down his coffee long enough to check it for correctness, reorganize it, and ensure the bot didn't hallucinate anywhere.
Related Issues and Difference
I found several existing issues about local session metadata, missing sessions, and non-recency ordering. This report may share the same underlying metadata-sync problem, but the visible symptom is narrower: a Desktop thread is present in the UI, yet the UI's relative "last edited" age is older than the latest activity recorded in the thread's rollout JSONL file.
| Issue | Related symptom | Why this report is different |
| --- | --- | --- |
| #16624 | VS Code task list drops valid sessions and shows a non-recency order. | This thread is visible, but its displayed last-edited / relative-age value is stale compared with the latest timestamp in the rollout JSONL. |
| #16280 | Resume picker / name-based resume uses inconsistent metadata between session_index.jsonl and state_5.sqlite. | This is not about rename or resume lookup; it is about the UI age being computed from stale metadata while newer session activity exists on disk. |
| #16385 | ACP-spawned sessions are written to JSONL/session index but do not appear in Desktop because storage paths do not sync. | This session was visible in Desktop; the problem is that the recency metadata shown by the UI did not reflect later activity in the session file. |
Description
Codex Desktop shows a stale "last edited" / relative-age value for a local thread even though the underlying session JSONL contains newer activity.
This looks related to existing session metadata split/sync issues, but the symptom here is narrower: the thread is visible, but the displayed recency is wrong.
What I observed
For one local thread, the UI showed an age of approximately 1d, but the session rollout file contained activity from today.
Screenshot evidence: the attached screenshot shows the d7-nes-working project with the Identify installed project thread displaying 1d in the right-side age column. That is the stale value.
<img width="414" height="229" alt="Image" src="https://github.com/user-attachments/assets/7901e07a-4701-45eb-b0a9-36a4f49e0380" />
Redacted local evidence:
Thread ID: 019dda12-8c8d-76a3-bce2-a510a1629f3c
UI displayed age: 1d
session_index.jsonl updated_at: 2026-04-29T16:29:21Z
latest timestamp in rollout JSONL: 2026-04-30T17:37:25Z
rollout file path shape: ~/.codex/sessions/YYYY/MM/DD/rollout-...-THREAD_ID.jsonl
The session content itself was current, and the rollout JSONL had newer entries. The likely cause is that the UI is using the stale index timestamp instead of the latest persisted session activity.
Expected behavior
The thread list should show recency based on the latest persisted activity for the thread, or the metadata index should be updated whenever the rollout/session JSONL receives new activity.
Actual behavior
The UI showed an older relative age even though the session file had newer activity.
Environment
- Codex Desktop on macOS
- Local storage inspected:
~/.codex/session_index.jsonl~/.codex/sessions/.../*.jsonl~/.codex/state_5.sqlite
Privacy note
I am not attaching the full JSONL because it contains private session content, but the timestamps above are enough to show the mismatch.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗