openai / openai/codex

Android Remote cannot start turns in an idle large task: turn/start times out after 30s

Open
#38,023 12 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app app-server bug performance remote windows-os
Dominant language
Rust
Stars
125k
Forks
19.5k
PR merge metrics
PR metrics pending

Description

Summary

Android Codex Remote can become permanently unusable for a large, long-running task while that task is idle. The task view remains unhydrated, and attempting to send a simple message can fail because the mobile client's turn/start request times out after 30 seconds.

The same task sometimes becomes visible if it is actively producing assistant events. Sending a small “test” message can occasionally wake it, but this workaround is inconsistent.

Mobile reproduction
  1. On a Windows Desktop host, open a long-running Codex task with a very large local history.
  2. Let the task become completely idle.
  3. Open that task through Codex Remote in the ChatGPT Android app.
  4. Observe that the task continues loading indefinitely and never exposes a usable hydrated conversation.
  5. Attempt to send a simple message such as test.

Observed mobile state:

  • the message remains marked Sending;
  • the task shows Thinking;
  • the client eventually displays:
Couldn't send reply: Timed out waiting for app-server response to turn/start for seq_id 13 after 30000ms.

If the same task is already working and emitting assistant messages, Remote sometimes populates and becomes usable. This is not reliable: a test message sometimes wakes the task and sometimes produces the timeout above.

Correlated Desktop evidence

For the affected task:

  • rollout JSONL size: 979.35 MiB;
  • Desktop shell, app-server, and fresh renderer processes remained alive;
  • a renderer-only restart did not fix mobile hydration;
  • Desktop eventually rendered the task, but mobile remained unhydrated;
  • 20 logged thread/turns/list calls for the task took:
    • minimum: 34,774 ms
    • average: 40,345 ms
    • maximum: 50,163 ms
  • the mobile turn/start timeout is 30,000 ms, shorter than every observed history-list call.

This points to more than a blank mobile renderer. A long history hydration/list operation may be blocking or serializing the app-server path needed for turn/start. Live assistant events appear to trigger a different incremental reconciliation path that can sometimes make the task visible.

Expected behavior
  • Mobile should load metadata plus a bounded recent tail without waiting for the full task history.
  • An idle task should hydrate just as reliably as an actively streaming task.
  • turn/start should not be blocked behind full-history hydration.
  • If history loading is slow, the composer should remain usable and the message should be durably queued or return a recoverable error.
  • The UI should distinguish “loading history” from “starting turn” and should not show generic Thinking while the request has already timed out.
Environment
  • Android Codex app: 1.2026.209, installed from Google Play
  • Android connection during one captured reproduction: Wi-Fi
  • Host: Codex Desktop on Windows 10 x64
  • Observed: 2026-08-10/11

A screenshot captures the exact timeout toast and the message stuck in Sending. It is not embedded here because the connector cannot upload local attachments.

Related issues
  • #37126 — Android app no longer opens old inactive Codex chats
  • #25779 — unbounded session/turn state and full-history hydration meta-bug
  • #21211 — eager large-history hydration and thread navigation/loading

This report narrows the failure to Android Remote, an idle long-running task, and a concrete turn/start timeout correlated with slower thread/turns/list calls. No account identifiers, task IDs, task titles, local paths, or private task content are included.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the Android Remote app-server path for thread/turns/list and turn/start, using the reported idle task with a large history as the reproduction. Compare the 30-second turn/start timeout with the 34–50 second history-list calls and determine where the requests are serialized. Done means bounded idle-task hydration no longer blocks turn/start, with a usable composer or recoverable error when history is slow.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, rust
Domain
backend-api-design, mobile, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.