macOS: newest-first thread lookup returns two-day-old in-progress turn despite newer persisted messages
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Recent conversation lookup returns two-day-old turns while newer messages remain in the local transcript
Environment
- Observed September 5, 2026, around 8:33 PM America/New_York (September 6, 00:33 UTC).
- macOS 26.5.2, arm64.
- Long-running local Codex conversation spanning multiple days.
- Installed desktop/build version was not established. The documented compatibility bundle path was absent; no version is inferred.
User-visible symptom
The user reports that substantial recent conversation history disappeared from the displayed chat and that the conversation appears to have reverted approximately two days. The UI symptom is user-reported; the retrieval mismatch below was independently observed.
Independently verified evidence
- Read the affected thread using the available
read_threadapp tool withincludeOutputs: false, without a pagination cursor. - A request for the newest eight turns returned old September 3 work. Repeating with
turnLimit: 2returned the same old newest turn. - The second response declared
page.order: newest_first,page.limit: 2, andhasMore: true. - Its newest returned turn had
startedAt: 1788468606(September 3, 2026, 20:50:06 UTC),status: inProgress, andcompletedAt: null. - The thread metadata was current:
updatedAt: 1788654804(September 6, 2026, 00:33:24 UTC), despite returning a September 3 turn as newest. - A read-only inspection of the matching local session JSONL file found newer user/assistant message records dated September 6 at 00:32:32, 00:33:06 and 00:33:08 UTC, including the user's current report. The file was approximately 147 MiB at inspection.
- Independently, the working repository retained the latest same-evening committed work. This is not evidence of a repository rollback.
Expected behavior
The current conversation view and a cursor-free newest-first thread lookup should expose the latest persisted messages, with consistent turn status and ordering. Pagination should not silently make a multi-day-old turn appear to be the latest available work.
Actual behavior and impact
The newest-first lookup is inconsistent with current thread metadata and recent persisted messages. The visible chat reportedly loses approximately two days of history. This undermines confidence in completed work and could cause an operator or agent to repeat already completed actions based on stale history.
Reproduction limits / hypotheses
- Confirmed twice against one affected existing thread; no minimal synthetic reproduction yet.
- Recent sampled messages are present on disk. Completeness of every intervening message has not been audited, so this report does not claim universal absence of data loss.
- A stale index, incorrect pagination boundary, or turn reconstruction problem is a working hypothesis, not a proven cause.
- No cache deletion, transcript rewrite, database mutation, restart, or recovery action was performed during diagnosis.
Requested investigation
Please investigate how the desktop conversation view and read_thread newest-first pagination reconstruct long-running turns from persisted session records, particularly when an old turn remains marked in progress despite newer records and current thread metadata.
Related reports
- #43124 describes a similar macOS stale-history symptom with a verified projection ordinal mismatch. This report has not inspected projection ordinals and does not claim that cause.
- #41079 describes Windows paginated history stalling while the rollout remains complete.
- #42971 describes recent metadata with an older in-progress turn after account switching on Windows. No account-switch trigger has been established in this case.
Privacy
No raw transcript, screenshots, log attachments, conversation text, thread/session identifiers, project/repository names, hostnames, local account paths, credentials, tokens, URLs from captured activity, or production data are included. This report contains only a manually selected symptom description, software environment and diagnostic timing/status metadata.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the read_thread app tool and the matching local session JSONL file, then trace how the desktop conversation view reconstructs newest-first pagination from persisted records. Compare thread metadata, turn status, timestamps, and ordering; done means a cursor-free lookup exposes the latest persisted messages consistently without presenting the old in-progress turn as newest.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, rust
- Domain
- backend, desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100