[Windows][26.908.9136.0] Document tabs change visibly but persisted right-pane state remains stale
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)?
26.908.9136.0 (verified installed package version)
What subscription do you have?
ChatGPT Pro
What platform is your computer?
Windows, x64
What issue are you seeing?
Document tabs change visibly in the right pane while their persisted open-tab state remains stale. Newly opened documents can disappear after a full quit/relaunch, and previously closed documents can return. The user reports this across tasks; the controlled measurements below concern one existing local task.
Inspected location: .codex-global-state.json → electron-persisted-atom-state → thread-tab-routes-v1:<redacted-task-id>.
All times are local CEST (UTC+02:00). Times identify disk checkpoints; UI confirmations were separate user observations, not simultaneous automated captures.
| Checkpoint | README visible | Persisted route | ID in topology.right.tabIds |
|---|---|---|---|
| 16 Sep 23:44:46, before manual opening | Closed, user confirmed | Absent | Absent |
| 16 Sep 23:49:08, after manual opening | Open, user confirmed | Absent | Absent |
| 17 Sep 00:07:03, after Windows Repair/relaunch, before opening | Closed, user confirmed | Absent | Absent |
| 17 Sep 00:10:38, after manual opening | Open, user confirmed | Absent | Absent |
The two pre-existing persisted document entries remained unchanged. No user-facing save error was observed.
What steps can reproduce the bug?
These steps reproduced the issue in the affected installation; a clean-profile reproduction has not been tested.
- In an existing local task, confirm that a Markdown document tab is visibly closed and absent from both the persisted routes and
topology.right.tabIds. - Manually click its local file link in the conversation once, opening the document in the right pane. No
open_in_codexcall is used during this test. - Confirm that it is visibly open, then read the same task's persisted state.
- Observe that its route and right-pane membership are still absent.
- The same controlled comparison after Windows app Repair produces the same result.
A separate earlier full-quit/relaunch test also ended with README missing from the restored UI. Closing the window via its top-right X left application processes running and was not treated as a full restart.
What is the expected behavior?
The saved open-tab layout should reflect manual opening and closing. A normal full quit/relaunch should restore documents left open and leave explicitly closed tabs closed. Unused route metadata may remain if intentional; persisted open-tab membership should be accurate.
Additional information
Filesystem evidence: During the manual-opening test window, Process Monitor recorded ChatGPT.exe creating and writing a temporary global-state file, then successfully replacing the expected .codex-global-state.json at 23:48:04. The backup was also replaced. All operations visible in the filtered trace returned SUCCESS. Filters: Process Name is ChatGPT.exe; Path contains .codex-global-state.
This demonstrates that the observed process could write and replace this file. It does not prove that the tab click triggered these writes, exclude failures at other paths or in other processes, or reveal every intermediate file content. The subsequent snapshot still lacked README. Because measurements were snapshots, a brief correct state followed by overwriting cannot be excluded; no such transition was captured.
Earlier distinct findings:
- A different Markdown tab already present in persisted open-tab state remained in the right topology after manual closing.
- Closing the unsaved README is not a valid test of persisted removal: it was already absent.
- Earlier tool-based openings persisted documents. A later single
open_in_codexcomparison returned queued and did not yield a saved README entry during the measured interval. Tool opening is not an established workaround.
Recovery history:
- Earlier, a backed-up offline reset of only this task's two tab-state keys allowed two tool-opened documents to be persisted, but subsequent manual closing still failed to update the saved set.
- Later, Windows Settings → Apps → Repair was tried separately after a regular full quit. The package version stayed unchanged and the manual-open failure persisted. No global profile reset or reinstall was part of that Repair attempt.
- The user reports older custom sandbox/configuration fixes predating these tests; their relevance is unproven. This is not a pristine-profile reproduction.
- The app updater reported that the app was up to date when checked.
The internal cause remains unresolved. Window persistence ownership, missed updates, or competing state are hypotheses.
Feedback was already submitted successfully through the app. Existing reference: 01a03a08-f2c3-7180-9fc3-2c0c7fd22379.
Potentially related, not asserted duplicates: #45004 (macOS browser-tab topology), #41653 (Windows ghost tabs), #37429 (Windows layout restoration). A shared cause has not been established.
The raw PML is retained locally. Please request narrowly scoped diagnostics through a suitable private channel if needed. Full state files, conversation histories, private document contents, and local user paths 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 by reproducing the Windows case with an existing local task and compare the visible right pane with .codex-global-state.json, especially electron-persisted-atom-state and thread-tab-routes-v1:<task-id>. Trace which persistence path handles manual document-tab opening and closing, considering the reported global-state replacement and topology.right.tabIds. Done means persisted open-tab membership matches the visible tabs and survives a full quit and relaunch.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100