Environment
- Surface: ChatGPT Web / Desktop
- OS: Windows 10
- Browser: Microsoft Edge / Chromium-based browser
- Exact browser version at the time: not recorded
- Affected feature: Long-running document / image tasks / timeout state / result delivery
Bug
A long-running task can trigger a visible timeout/error in the ChatGPT UI even though the requested result is still being generated successfully in the background.
Observed behavior:
- A document or image task runs for some time.
- The UI reports that the time limit was exceeded / the task failed.
- The user is given the impression that the operation did not complete.
- The backend process may nevertheless continue.
- The requested result can appear later even though the UI already reported failure.
This creates a mismatch between the actual background job state and the state shown to the user.
Expected behavior
The UI should distinguish between:
- request failed
- frontend/client timeout
- background processing still running
- completed result available
If the backend job is still active, the user should see a state such as:
“Processing continues in the background”
rather than a hard failure.
Once the result is complete, it should load automatically into the conversation.
Reproduction
- Start a long-running task such as document creation or image generation.
- Wait until the operation exceeds the visible UI time limit.
- The interface reports a timeout / failure.
- Do not restart the task.
- Wait or reopen the conversation.
- The requested result may still appear later.
Impact
The current behavior encourages unnecessary retries because the user cannot tell whether the task actually failed.
This can lead to:
- duplicate jobs
- duplicated generated files or images
- wasted compute
- confusion about whether work was lost
- unnecessary repeated submissions
Diagnostics
The issue appears to involve a mismatch between:
frontend timeout
→ background job state
→ completion state
→ result delivery
A frontend timeout should not be treated as proof that the backend job failed.
The client should query the authoritative job state before presenting a final failure.
Acceptance criteria
- A frontend timeout is clearly distinguished from backend job failure.
- If processing continues, the UI shows a persistent “still processing” state.
- Completed background results are inserted automatically into the conversation.
- The user is not prompted to retry while the original job is still active.
- Reopening or reconnecting to the conversation restores the current authoritative job state.
- Duplicate jobs are avoided when a timeout occurs only at the client/UI layer.