[iOS ChatGPT][state desync] Messages disappear from transcript while assistant retains them; latest turn gets stale-context response
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Summary
I am seeing a conversation-state desynchronization in the ChatGPT iOS app where the visible transcript and the context used to generate the next assistant response appear to diverge.
This is regular ChatGPT inside a Project chat, not Codex Remote Control.
Two related symptoms occurred in the same conversation:
- Newly sent messages/images were briefly visible, then disappeared from the iOS transcript and the chat appeared to revert to an older visible state.
- On a later turn, the latest user request was visible and the app showed the assistant working on it, but the final answer responded to an earlier conversation state instead. That final answer also demonstrated access to a prior user message that was no longer visible anywhere in the iOS transcript.
The concerning part is not only transcript rendering: the final answer can be routed from stale/invisible context while the current visible turn is different.
Environment
- Product: ChatGPT for iOS
- App version: 1.2026.244
- App build: 33940143573
- iOS: 26.0
- Subscription: ChatGPT Pro
- Conversation type: ChatGPT Project chat
- Observed: September 12, 2026
Concrete reproduction from the latest occurrence
- Open an existing ChatGPT Project conversation on iOS.
- Send a new user message with an attached screen recording. The message asked the assistant to study typography/layout relationships in the recording.
- The new user message was visible in the transcript.
- The UI showed the assistant processing the turn (
Thinking; laterWorked for 31s). - The final answer that appeared did not answer the typography/layout request. Instead, it answered an earlier discussion about messages disappearing from the conversation.
- The final answer also paraphrased/reconstructed content from an earlier user message that had already disappeared from the visible iOS transcript.
So the observed state looked approximately like:
Visible UI state:
... older turns
-> latest typography/layout request
Expected generation context:
... older turns
-> latest typography/layout request
Actual final response:
response to an earlier "messages disappeared" state
+ references to a prior message no longer visible in the UI
Earlier occurrence in the same conversation
Shortly before the reproduction above:
- A newly sent message and image appeared normally.
- Later, they were no longer present in the iOS transcript.
- The visible chat had reverted to an older section of the conversation.
- Despite that disappearance, subsequent assistant behavior suggested that at least some of the missing content still existed in model/session context.
Expected behavior
The visible transcript and the canonical context used for the next model turn should remain consistent:
- A successfully accepted user message should not silently disappear from the active conversation view.
- If a turn is present in model/session context, it should remain inspectable in the transcript (or the UI should explicitly indicate a branch/state transition).
- The assistant response for the latest visible user turn should be generated from that same active turn/branch.
- A stale or hidden prior state should never silently win over the current visible state.
Actual behavior
The conversation can enter a state where:
- messages disappear from the visible iOS transcript;
- the assistant still appears to retain some of those invisible messages;
- a new visible user turn can receive a final response associated with an older/stale conversation state.
This makes it impossible to verify which conversation state is actually authoritative.
Why this seems different from a simple UI rendering glitch
If this were only a scrollback/rendering issue, the latest visible user turn should still receive the correct answer. In the latest occurrence, the final response itself was mismatched to the current turn, which suggests a possible branch/session/turn-routing or state-hydration desynchronization in addition to transcript rendering.
Related issue
#41377 reports iOS Remote Control hiding prior turns while underlying session context remains available. The symptom family is similar, but this report differs in two important ways:
- this occurs in a regular ChatGPT Project chat, not Codex Remote Control;
- the newest visible turn can receive a final answer from stale/invisible prior context, not only lose scrollback visibility.
Evidence available
I have screenshots and a screen recording showing:
- the user message visible before generation;
Worked for 31s/ stopped-thinking UI;- the mismatched final answer immediately below it;
- earlier before/after transcript states where newly sent content disappeared.
I am intentionally not posting private conversation contents publicly, but I can provide sanitized screenshots or additional timestamps if maintainers request them.
Requested investigation
Please investigate whether iOS conversation hydration, branch selection, turn persistence, or response attachment can diverge such that:
- the transcript renders one conversation state,
- the model is invoked with another state, or
- the generated response is attached to a stale/incorrect branch or turn.
If there is a canonical conversation-state identifier/branch identifier available to clients, surfacing it in diagnostics would also make this class of bug much easier to verify without exposing conversation content.
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
The payload names no repository file, test, or entry point; start by reviewing the reproduction and available sanitized evidence, then compare the behavior with related issue #41377. Done means a maintainer can reproduce the mismatch and determine whether transcript hydration, branch selection, turn persistence, or response attachment diverges.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios
- Domain
- mobile-dev
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100