[Windows][CLI 0.153.4] Paginated thread reads return only earliest turn despite newer persisted rollout responses
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of the Codex App are you using (From “About Codex” dialog)?
Observed on 2026-09-14:
- Windows MSIX package:
OpenAI.Codex 26.903.9818.0 - Installed Electron package version:
26.903.71938 - CLI / session writer:
0.153.4
These were obtained from package/runtime metadata; the About dialog was not independently captured.
What subscription do you have?
Not collected for this diagnostic.
What platform is your computer?
Windows native execution. App Server userAgent reported Windows 10.0.26100; x86_64.
What issue are you seeing?
A local thread receives new requests and persists complete responses, but its structured history-reading interfaces return only the earliest turn. This prevents a remote Mac task from retrieving the Windows task's response.
The same failure reproduces locally through a fresh, read-only stdio App Server process, without depending on the remote connection:
- The affected thread has
historyMode: "paginated". - The actual rollout contains a new request at 2026-09-14T14:49:50.875Z, followed by an actual tool output and final assistant response at 14:55:38.079Z. Both response records contain the complete 14,687-character payload. This was verified against the saved payload, rather than inferred from file timestamps or tool-call arguments.
codex_app.read_threadwithturnLimit: 3, includeOutputs: true, maxOutputCharsPerItem: 20000returns one early turn with 14 items,hasMore: false, andnextCursor: null.thread.updatedAtadvances, while the returned conversation body remains stale.- An independently started stdio App Server's
thread/readresolves to the same growing rollout file (over 11 MB at the time). - In that process,
thread/turns/listwith both default ordering and explicitsortDirection: "desc"returns the same earliest turn, 14 items, andnextCursor: null. thread/read(includeTurns: true)also returns just that early turn and omits the later response.- The early turn was reported as
inProgressby the app tool andinterruptedby the independent process, with no completedAt in the retained summaries. We have not established whether that state is causal.
What steps can reproduce the bug?
The initiating trigger is not yet known. The following reproduces the read inconsistency on the affected saved thread:
- Verify that a recent request and matching actual response exist in the local rollout, using a unique marker.
- Read that exact thread through the app's
read_threadtool with outputs included. - Start the same installed CLI as
app-server --stdio, initialize it, and issue these read-only requests (replace<affected-thread-id>with the real local ID):thread/read:{"threadId":"<affected-thread-id>"}thread/turns/list:{"threadId":"<affected-thread-id>","limit":3,"itemsView":"full"}- Repeat the previous request with
"sortDirection":"desc". thread/read:{"threadId":"<affected-thread-id>","includeTurns":true}
- Compare returned turn IDs/items with the marker's actual persisted response.
- Observe that only the earliest turn is returned and the turn-list response provides no next cursor.
- Exit the diagnostic process.
No thread resume/start calls, database/history edits, or network listener were used in this diagnostic.
What is the expected behavior?
Structured history reads should expose the latest persisted responses, or provide valid pagination that reaches them. An updated timestamp or completed-task signal must not mask unavailable response content.
If reconstruction cannot proceed, return an actionable error and a supported recovery path rather than silently presenting an incomplete history as the final page.
Additional information
- CLI binary SHA256:
3d6ca7085c932b62ef4ee4877e92f15b050fb94b2eb8e6c10a346a06248c6004. - A separate Windows-local
fs/readFiletest could read current files, including a file updated within the same process. That does not establish a remote file-reading workaround: the remote task's exposed tools did not offer a host-selectable file-read method. - There were also intermittent remote thread-discovery/connection errors. Their cause is unknown; they do not explain why the independent local history reads are stale.
- The exact backend function, index condition, or parsing failure is not established. No projection ordinal mismatch has been verified in this case.
- Potentially related: #42197, #43124 (projection stalls with verified ordinal mismatches), #41591 (orphaned historical turn), and #40014 (completed turn with empty items). This report adds native Windows CLI 0.153.4 reproduction through a fresh stdio App Server, with only the earliest turn returned and no turn-list continuation cursor; shared causation is unconfirmed.
- Please investigate paginated history reconstruction and cursor generation, and provide a supported recovery procedure or fixed version.
- This report contains sanitized technical summaries only. Private thread IDs, local user/company paths, conversation contents, raw logs, and business source files are omitted.
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 paginated history paths behind thread/read and thread/turns/list, using the affected saved thread and a fresh app-server --stdio process to reproduce the missing later response. Compare the persisted rollout with default and descending turn-list results, including cursor generation; done means current responses are returned or pagination reaches them, with an actionable error when reconstruction cannot proceed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100