[Windows Desktop] Switching ChatGPT accounts restores a stale turn for the same local Codex task
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?
Exact build is currently unavailable because the desktop helper is also failing with helper_unknown_error: setup refresh had errors. The issue appeared in the recently updated unified ChatGPT/Codex Windows desktop app.
What subscription do you have?
Paid ChatGPT accounts.
What platform is your computer?
Windows, x64.
What issue are you seeing?
After switching the ChatGPT account used by Codex Desktop, reopening an existing long-running local Codex task can restore an old persisted turn instead of the latest conversation state.
This is not just an old sidebar timestamp:
- The same local task remains listed and its task metadata has a recent
updatedAt. - Reading the task history returns a much older turn.
- That older turn is still reported as
inProgress. - Many later completed user/assistant turns that were visible before the account switch are absent from the restored/readable history.
- Continuing from the restored task therefore gives the agent stale research state and can cause it to resume work that was superseded many turns earlier.
The complete affected task identifier and private transcript details are intentionally omitted from this public issue and can be supplied privately to OpenAI support.
Steps to reproduce
- Create or continue a long-running local Codex task on Windows.
- Complete many later turns in that task.
- Switch the ChatGPT account used by the desktop application.
- Reopen the same local project and task.
- Compare the task list metadata with the newest turn returned by the task-history/read path.
- Observe that the task may show a recent update while the readable transcript stops at an older turn still marked
inProgress.
Expected behavior
For local tasks that remain visible after an account transition, Codex Desktop should restore the latest durable rollout/branch.
If account ownership prevents access, the app should show an explicit account-boundary error. It should not silently display an older transcript as the current complete history.
Account switching must not overwrite or regress the selected rollout/turn pointer.
Actual behavior
The UI and task APIs disagree about the task's current state: metadata is recent, but the transcript/history projection resolves to an old in-progress turn. The agent then resumes obsolete work.
User impact
This makes long-running paid Codex workflows unreliable. Users may switch accounts when one account reaches its usage window; after switching, substantial completed research context can appear lost or be replaced by stale state.
Requested investigation
Please inspect:
- account-transition handling for local Codex tasks;
- selected rollout/branch pointer reconciliation;
- task-history projection/reindexing;
- preservation of completed rollout JSONL data;
- conflicts between recent task metadata and an older
inProgressturn.
A supported “reindex/recover latest local rollout” action would also be useful.
Related reports
- #40915 — resumed task follow-ups become stale or unreadable after restart
- #41874 — selective loss of historical local sessions and incomplete project migration
- #39677 — OAuth account transition disconnects AppServerManager RPC
- #42269 — older conversation branch restored and later turns hidden
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
No source file or test is named. Start by reproducing the Windows account switch with a long-running local task, then compare recent task metadata with the task-history/read result and inspect account transitions, rollout pointers, projection/reindexing, and persisted JSONL. Done means the latest durable rollout is restored, or an explicit account-boundary error is shown without silently reverting to an older in-progress turn.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 32/100