openai / openai/codex

Windows desktop diagnostic bundle: renderer error flood, unauthenticated background requests, browser routing and stream-state failures

Open
#43,437 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app auth browser bug custom-model windows-os
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 version 26.901.51231; incident session CLI version 0.153.4.
  • The 2026-09-06/07 sample includes logs from both MSIX 26.901.5280.0 and 26.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), with requires_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

  1. Fix renderer error amplification and identify the actual observer/layout trigger in a source-mapped build; preserve actionable stacks.
  2. Gate unavailable ChatGPT-only background operations for a custom-provider/no-ChatGPT-token session, and coalesce repeated failures.
  3. Correlate browser-session owner/window lifecycle transitions with route-not-found failures; distinguish expected teardown from actionable errors.
  4. Separate ephemeral internal conversations from user-conversation state handling; verify notification ordering and cleanup.
  5. Check bundled plugin source/cache reconciliation and report the exact missing component with a recoverable action.
  6. 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

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 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.