Windows desktop diagnostic bundle: renderer error flood, unauthenticated background requests, browser routing and stream-state failures
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Environment and scope
- Windows 11 x64, OS build 26200.
- Current MSIX:
OpenAI.Codex 26.901.6511.0; bundled Electron package version26.901.51231; incident session CLI version0.153.4. - The 2026-09-06/07 sample includes logs from both MSIX
26.901.5280.0and26.901.6511.0. It is not a single-version controlled reproduction. - 33 desktop log files in the September 6 and 7 directories were read once per file on September 7. Counts below are records, not independent failures; related components can log the same event more than once.
- Important confounder: inference uses a custom local Responses provider (
codex_local_access, a loopback Cockpit gateway), withrequires_openai_auth=false. The missing ChatGPT token is therefore not itself proof of an OpenAI authentication outage. Please investigate whether unavailable account-only features should be gated rather than repeatedly requested. - User reports an intolerable volume of unexpected errors. The observations below locate actual error families; we cannot prove each one caused a visible dialog or interruption.
Observed error families
| Family | Records in the two-directory sample | Evidence and limits |
|---|---|---|
Renderer ResizeObserver loop completed with undelivered notifications. |
3,297 | Peak 28 records in the UTC second 2026-09-07T02:19:43. Related existing issue #42495; Windows examples #39419 and #33996. |
desktop_fetch_auth_401 |
1,732 | Representative records have hadToken=false, skipRetryReason=no_token_attached, tokenSource=cached, willRetry=false. Requests include /wham/usage, /wham/tasks/list, /settings/user. |
sa_server_request_failed |
1,752 | Overlaps the 401 wrapper records; do not sum them as unique failures. Representative /settings/user response: Unauthorized - Access token is missing. |
| Browser site-status authentication failures | 346 | Sign in to ChatGPT to load browser site status. |
| Browser backend info routing failure | 112 | No ChatGPT browser route is available for browser session [REDACTED]. Additional backend request failures: 3; route window not live: 21; missing route window cursor/active state: 7 each; PiP upsert failures: 3. |
| Unknown conversation lifecycle events | 124 | turn/started 41, item/started 34, item/completed 31, turn/completed 18. Additional Conversation state not found: 25. Ephemeral title generation is present nearby in at least one trace, so some events may be benign internal-thread noise; a user-thread race is not established. |
| Artifact Session host startup warning | 11 | Artifact Session host Unix-socket transport is not available on Windows. Related #42669, but this machine's app does open and run. This warning does not establish the no-window failure reported there. |
| Renderer update-state publication | 12 | Failed to publish app update state to renderer, MessagePort message error. |
| Plugin status/install failures | status unknown 4; marketplace install 3; app-server install 2 | Representative status lookup fails with Windows os error 3 (path not found) while checking bundled runtime plugin paths. Cross-layer records may overlap; source/cache lifecycle versus local state needs investigation. |
| Thread title generation | 6 | Representative failure: Timed out waiting for structured result. |
| Stream-state inconsistency (separate SQLite source) | 5 | codex_core::util: OutputTextDelta without active item on Sep 7 at 04:30:06, 04:37:58, 04:42:48, 04:44:03, 04:45:01 UTC. Four records carry requested gpt-6-astra, one gpt-5.6-terra. Related #29336 and #15720. Custom provider stream ordering remains a possible cause. |
Additional logged conditions: 33 Git warnings (one representative is git config --get remote.origin.url exit 1, which can legitimately mean no remote), 33 unmatched MCP sandbox attach warnings, 30 IPC broadcasts with no handler, 30 browser guest teardown warnings, 17 placeholder-turn rebinding warnings, 6 recoverable Chromium child-process exits, 11 remote authorization refresh warnings and 11 sync failures. These are recorded as diagnostic context, not 14 additional confirmed product bugs. One sampled child exit is an Audio Service process with reason=killed; it is not proof of a renderer crash. A targeted Windows Application event-log check for Codex/ChatGPT application-fault entries over the preceding two days returned no matches.
Core ERROR records also include failed tool invocations, a third-party MCP transport closure, and a GitHub release-check 403 rate limit. These must not be misclassified as all having one Codex root cause.
Packaged-code finding: proven error amplification
Read-only inspection of the installed app.asar found this behavior in webview/assets/app-initial-f87238153a19.js: a generic window.addEventListener('error', ...) takes the stack/message and dispatches log-message at error level with the fixed prefix [desktop-notifications][global-error]. There is no filtering, deduplication or rate limit in that handler. An adjacent unhandledrejection handler uses the same notification-specific naming pattern.
The packaged Sentry filter also contains the exact ResizeObserver guard message. This supports #42495 on Windows: the custom logging path bypasses that filtering. It does not identify which ResizeObserver callback produces the underlying layout cycle. Please retain genuine diagnostics while fixing amplification and misleading classification, rather than merely hiding all errors.
The packaged Artifact Session startup explicitly throws when process.platform === 'win32', explaining the recorded warning. We did not modify the package or attempt to bypass that platform check.
Expected behavior / requested investigation
- Fix renderer error amplification and identify the actual observer/layout trigger in a source-mapped build; preserve actionable stacks.
- Gate unavailable ChatGPT-only background operations for a custom-provider/no-ChatGPT-token session, and coalesce repeated failures.
- Correlate browser-session owner/window lifecycle transitions with route-not-found failures; distinguish expected teardown from actionable errors.
- Separate ephemeral internal conversations from user-conversation state handling; verify notification ordering and cleanup.
- Check bundled plugin source/cache reconciliation and report the exact missing component with a recoverable action.
- Validate Responses item ordering before applying deltas, with a diagnostic that identifies a malformed provider stream rather than losing context.
This is a retrospective, read-only diagnostic bundle. Exact UI steps that deterministically reproduce every family are unknown. Original sessions, settings, caches and application files were retained; no restart/reset, plugin reinstall or configuration change was made. Only curated technical facts are included here, without credentials, private prompts, user paths, account identities or full raw logs.
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
Start with the packaged webview/assets/app-initial-f87238153a19.js global error and unhandled-rejection handlers, then use a source-mapped build to trace the ResizeObserver trigger. Review the desktop_fetch_auth_401, browser routing, conversation lifecycle, plugin, and Responses stream entry points described in the report. Done requires separating actionable failures from expected conditions and addressing the six requested investigation areas, but deterministic reproduction is not provided.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, javascript, rust
- Domain
- backend, desktop, observability, testing-qa
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 18/100