Skip to content

[macOS/iOS Remote] Persisted mobile turns are omitted from the next Desktop model context in the same thread #37620

Open

Description

@Devby

What version of the Codex App are you using (From “About Codex” dialog)?

26.803.41515 (build 6321)

What subscription do you have?

ChatGPT Pro

What platform is your computer?

Darwin 25.4.0 arm64 arm (macOS 26.4.1)

What issue are you seeing?

Turns sent from ChatGPT iOS Remote were persisted in the canonical Codex thread and visible in the task history, but they were omitted from the context supplied to a later Desktop model run in that same thread.

This was not a missing-message UI issue:

  • list_threads showed exactly one task, not a fork or duplicate.
  • read_thread for that task contained the iOS turns, their image attachment, and the assistant replies in the correct order.
  • The later Desktop model input did not contain those turns and answered as if they had never happened.
  • After being asked explicitly, the Desktop agent used read_thread, found the omitted turns, and recovered the missing context.

The durable thread and model-visible context therefore diverged.

What steps can reproduce the bug?

  1. Start a long-running Codex task in the macOS app. In this case the task ran for several hours and had at least one recorded context compaction.
  2. Open the same active task from ChatGPT iOS Remote.
  3. Send a follow-up from iOS and receive a completed assistant response.
  4. Send another iOS follow-up with an image attachment, receive a response, then send one more text follow-up.
  5. Later, continue the same task from Codex Desktop.
  6. Ask the Desktop agent about the iOS messages.
  7. Observe that the agent's supplied context does not include them.
  8. Inspect the canonical task with read_thread: the iOS turns and responses are present in the same thread and ordered before the Desktop continuation.

Observed on 2026-08-08. The iOS turns completed around 19:25–19:34 CEST; a later Desktop continuation around 22:19 CEST received stale/incomplete context.

The private thread/session ID and a screenshot are available to OpenAI staff through a private channel if needed. They are omitted here because the conversation contains private project data.

What is the expected behavior?

Every new model run should build its context from the latest canonical history of the selected thread, regardless of whether prior turns were created from iOS Remote or Desktop.

If cross-device reconciliation cannot guarantee this, Desktop should block the continuation or warn that its context is stale. It should never silently run from a history snapshot that omits already-persisted turns.

Additional information

Activity

  1. added
    bugSomething isn't working
    appIssues related to the Codex desktop app
    contextIssues related to context management (including compaction)
    sessionIssues involving session (thread) management, resuming, forking, naming, archiving
    on Aug 8, 2026
  2. github-actions commented on Aug 8, 2026

    @github-actions
    Contributor

    Potential duplicates detected. Please review them and close your issue if it is a duplicate.

    Powered by Codex Action

  3. Devby commented on Aug 8, 2026

    @Devby
    Author

    Reviewed #37030. The symptom may share a context-rehydration root cause, but the observed trigger and failure shape differ:

    I am keeping this issue open because the mobile-to-Desktop reconciliation path is independently reproducible and narrower than #37030. Maintainers can merge it if both paths are confirmed to share the same root cause.

  4. Devby commented on Aug 9, 2026

    @Devby
    Author

    Second reproduction in the same thread as the original report.

    • A sequence of messages sent from iOS completed normally and was persisted. read_thread returns the full sequence.
    • The next Desktop model turn retained older history and the current message, but omitted every intervening iOS turn from its input context.
    • The Desktop model did not know about the intervening discussion until the missing history was manually recovered with read_thread.
    • list_threads still reported one task. There was no fork, duplicate, or cross-thread delegation at the failure boundary.

    This reproduces the original selective reconciliation failure: canonical history is complete, while a later Desktop model context skips the intervening iOS turns. It is not only a UI rendering issue. The evidence does not identify which checkpoint or context-building component caused the omission.

    Versions:

    • ChatGPT macOS: 26.803.41515 (build 6321)
    • Codex CLI: 0.147.0
  5. ropepop commented on Aug 12, 2026

    @ropepop

    Adding an adjacent data point from the view-selection side (2026-08-12) — same machinery, opposite direction of the divergence you've pinned down:

    Here the canonical thread is complete, read_thread sees everything, but the next Desktop model context skips the iOS turns. In my setup the divergence is the client side: iOS remote shows a thread's reasoning/tool items live during the run, then after completion renders only the summary view (user message + final answer) via thread/resume with itemsView:"summary", even though the same thread's full items are present and renderable on desktop. Leaving the thread and reopening forces thread/turns/list (full view) and the middle reappears.

    So mobile↔desktop state divergence shows up in both directions: (a) here, persisted iOS turns omitted from a later Desktop model context; (b) in my case, full desktop materialization but summary-only remote rendering. The common thread is the mobile↔desktop reconciliation boundary — different paths hydrate state in each direction and each can silently skip what the other surfaced. If reconciling mobile turns into the next model context is fixed, the same pass should also make the remote view always use the full read path so the client stops hiding data the rollout contains.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingcontextIssues related to context management (including compaction)remotesessionIssues involving session (thread) management, resuming, forking, naming, archiving

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions