Mobile Remote briefly shows a local project/thread, then removes both after sync
What version of the Codex App are you using (From “About Codex” dialog)?
26.519.41501 (3044)
What subscription do you have?
Plus
What platform is your computer?
Darwin 25.4.0 arm64 arm
What issue are you seeing?
When using Codex Mobile Remote with Codex Desktop on macOS, one local git workspace is not persistently visible on mobile.
A newly created thread in that workspace appears on mobile together with the project for approximately 10-15 seconds, then both the project and the thread disappear. Other projects on the same Desktop Remote connection remain visible.
The thread remains available locally in Codex Desktop after it disappears from mobile.
What steps can reproduce the bug?
- Connect Codex Mobile Remote to Codex Desktop on macOS.
- Open a local git workspace in Codex Desktop.
- Create a new thread in that workspace, for example with prompt:
Remote environment visibility test 3. - Observe the mobile Remote project/thread list immediately after thread creation.
- The project and the new thread appear briefly.
- Wait approximately 10-15 seconds.
- The project and thread disappear from mobile, while the thread remains present locally in Codex Desktop.
Additional observations:
- Other local projects on the same Mac and Remote connection remain visible on mobile.
- The affected workspace has multiple existing local threads, none persistently visible on mobile.
- A newly created thread consistently reproduces brief visibility followed by disappearance.
- I initially encountered a local worktree environment setup failure, corrected it, and confirmed that new thread creation succeeds. The mobile disappearance still reproduces after thread creation succeeds.
What is the expected behavior?
Once a local project and its newly created thread are visible through Mobile Remote, they should remain listed and accessible while they still exist in Codex Desktop.
Additional information
This looks like live thread/project events are delivered successfully, followed by a persistent project/thread synchronization or filtering pass that removes the affected workspace from the mobile view.
Possibly related issues:
- #21128: project conversations missing from Desktop enumeration while data still exists
- #16095: local threads missing from the Mac app despite local data remaining
- #20399: Remote project/thread host-state issue in a different Remote scenario
8 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Additional clean-project control test:
I created a brand-new local git repository solely for this test, with these properties:
main.codexenvironment configurationI opened that new repository in Codex Desktop, created a new thread (
Remote visibility clean project probe), and observed the same behavior on mobile: the new project/thread appeared briefly, then disappeared.This rules out the original workspace's repository metadata, existing thread history, remote URL, and custom environment configuration as necessary conditions for the bug. The behavior appears to affect newly added local projects on this Desktop Remote connection generally.
Additional existing-visible-project control test:
I created a new thread (
Remote visibility existing visible project probe) inside an existing project that is already persistently visible on mobile.Result:
Combined with the clean-project test above, this narrows the issue to persistence/indexing of newly created threads on Mobile Remote. A brand-new project also disappears because its only newly created thread is removed from the mobile index, while an older project remains listed because it already has persistently visible historical content.
This appears closely aligned with #23152 (Mac-visible recent project threads missing from the mobile thread list/search).
Additional mobile-created-thread control test:
I created a new thread from Codex Remote on mobile inside a project that is already visible on mobile.
Result:
This rules out a Desktop-to-mobile thread upload-only failure. New thread state can successfully synchronize to Desktop even when created on mobile, but the mobile persistent thread list still removes it shortly afterward. The failing layer is most likely mobile/backend persistent thread enumeration or refresh filtering for newly created Remote threads.
Additional mobile reinstall control test:
I uninstalled and reinstalled the ChatGPT mobile app, signed back into the same account, and repeated the Codex Remote test.
Result:
Reinstalling the mobile client did not change the behavior. This makes a stale mobile app cache or corrupted local installation unlikely, and further supports a persistent Mobile Remote thread-list/index refresh issue outside the local project configuration.
Related issue: #22762 documents that Android Remote Control connects to Codex Desktop but host logs show
initializeandthread/startonly, with no observedthread/listorthread/loaded/listrequest for persisted history.My results appear consistent with and extend that report:
Together, these results suggest live thread events work, while persisted Mobile Remote thread enumeration/list refresh does not load or retain newly created threads.
I ran into the same issue. Below is the analysis/debugging that Codex produced, fully tracing it back to the bounded rollout-preview scan in
codex-rs/rollout/src/list.rs.The missing threads were valid, unarchived, and present in
state_5.sqlite. A state-backedthread/listreturned all of them, while the normalupdated_atlisting omitted them.The affected legacy rollouts begin with an IDE placeholder ending in
## My request for Codex:. Prefix stripping produces an empty preview, while the first substantive user message occurs beyond the 210-record scan limit (HEAD_RECORD_LIMIT = 10plusUSER_EVENT_SCAN_LIMIT = 200).build_thread_item()requiressummary.preview.is_some(), so it silently drops the otherwise-valid thread. When every thread for a workspace is dropped, the project disappears too.Codex verified the cause on an isolated copy: the normal listing initially returned zero threads; adding a recognized preview-bearing event near the beginning made the identical query return the thread. Applying that metadata-only repair to six unloaded rollouts made all six immediately reappear on iOS without restarting Codex.
The fix should be to retain valid sessions when the bounded scan cannot find a preview, falling back to the state-database title/preview or continuing until a substantive user message is found.
I reproduced this on a real affected thread with the Codex app's bundled CLI
0.145.0-alpha.18. The host logs identified the iOS Remote client as1.2026.188.The thread behaved differently in two otherwise identical app-server requests:
The request used
archived: false,limit: 100, andsortKey: "updated_at". OmittinguseStateDbOnlyproduced the same omission asfalse.thread/readstill worked, the rollout parsed without errors, and the thread was active and unarchived.The first persisted user event was at line 11. It was an attachment-only app wrapper ending with an empty
## My request for Codex:section.strip_user_message_prefix()therefore returned an empty string. The next user event with usable preview text was at line 394, beyondHEAD_RECORD_LIMIT + USER_EVENT_SCAN_LIMIT.I backed up the rollout and added the actual request text after the empty marker in the matching
response_itemandevent_msgrecords. Those were the only two changed lines. The same normalthread/listrequest then returned the thread, and the thread remained visible on iOS after the list finished refreshing.This appears to be the same underlying bug reported in #24077 and #21619. A missing preview should lower the quality of the list row, not remove an otherwise valid and resumable thread.
Current
mainstill checkssummary.saw_session_meta && summary.preview.is_some()incodex-rs/rollout/src/list.rsand filters SQLite rows withthreads.preview <> ''incodex-rs/state/src/runtime/threads.rs.The patch shared in #21619, commit
24b5388636, removes both eligibility checks and adds rollout and state DB regression tests. I think an app-server integration test would also help. It could start with an attachment-only message whose request section is empty, place the next substantive user event beyond the scan limit, and assert that the normal and state-only list paths return the same thread ID.I did not open a PR because the contribution guide says external code contributions require an invitation. Could a maintainer adopt that patch direction or invite a targeted PR?