Repository navigation
Windows desktop: existing-chat sends indefinitely blocked by loading-local-config / pending codex-home; main-window reload recovers, normal restart can recur #44342
Description
What version of the Codex App are you using (From “About Codex” dialog)?
Windows package 26.903.8094.0; internal app 26.903.61454 (recorded in prior diagnostics). See evidence and measurement dates below.
What subscription do you have?
Not disclosed for privacy; account identifiers and billing information are omitted.
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
Summary and impact
The Windows Codex desktop app repeatedly prevents follow-up messages from being submitted in existing chats. The composer remains blocked on local configuration/workspace preparation without an actionable error. New-chat initial messages can work, while follow-ups fail; even a newly created chat can subsequently be affected. During an earlier affected episode, messages sent through mobile Remote succeeded and appeared live on the PC.
This interrupts normal use of existing conversations and forces repeated manual recovery. Please investigate a permanent fix for the initial request-completion failure and add bounded recovery and a visible retry path. Creating another chat or asking users to reset their data is not an adequate resolution for this failure mode.
This report consolidates local diagnostic records from September 9 and a directly observed recurrence and recovery on September 10, 2026. Historical observations are identified below. The precise startup trigger and first missing-response boundary remain unconfirmed.
Additional history reported by the user (September 10 update)
- The same user-visible sending symptom had already been observed approximately two weeks before this report (around late August 2026), not only on September 9–10. The exact first-occurrence date and app version from that time were not recorded here.
- At that earlier time, resetting the
.codexfolder restored sending, according to the user. The symptom later recurred; the reset therefore did not establish a permanent fix. The exact reset procedure and which files changed were not documented in this report. - The user also reports that the symptom recurred on another PC. This is user-reported cross-PC occurrence; the detailed internal-state measurements in this report were collected on one PC, and matching internal state on the other PC has not been independently verified.
These historical observations should inform the investigation, but they do not prove that .codex data corruption caused the problem or that every occurrence shared the same underlying cause. Please investigate why resetting local state helped temporarily and why the symptom can recur across PCs, while preserving user data in the supported fix.
Actual state and evidence
Earlier diagnostics (September 9)
The affected composer reported:
submitBlockReason = loading-local-config
localWorkspaceMaterialization = loading
isSubmitButtonLoading = true
codex-home query = pending / fetching
- The renderer contained 12 incomplete local requests in the recorded recurrence. They included
codex-homeand other initialization reads such as language, automation-list, and shortcut state. - At that observation point, the main-process response queue / active lookup lists did not show corresponding outstanding work; a response sender object had
targets: []. - A fresh request for the same
codex-homeinformation succeeded. One diagnostic record measured approximately 0.7 ms with a local HTTP-style status of 200; another recorded approximately 1 ms for both normal and priority response routes. These were local bridge timings, not external-network measurements or a performance benchmark. - App-server initialization, connection, and account checks were recorded as successful.
- After main-window reload,
codex-homebecamesuccess / idle, workspace readiness becameavailable, and the local request manager had zero incomplete requests. - Metadata collected during the successful reload showed local response delivery. This did NOT capture the original failed startup and therefore does not identify the first lost or unprocessed response.
- Actual follow-up sends using both button click and Enter, with completed answers in an existing chat, were recorded in the earlier recovery tests. A later user confirmation also verified PC sending after diagnostic cleanup.
Direct recurrence and recovery (September 10)
Before recovery:
submitBlockReason = loading-local-config
localWorkspaceMaterialization = loading
isSubmitButtonLoading = false
The spinner boolean was false in this sample even though the configuration block was present; the spinner should not be treated as a necessary signature.
Only the actual main app window was reloaded. A changed renderer performance.timeOrigin verified that a real reload occurred. After initialization settled:
localWorkspaceMaterialization = available
submitBlockReason = empty-message
empty-message was expected because the composer was empty. The configuration block had cleared. The app main process stayed running. After temporary diagnostic connections were closed and their listening ports were confirmed absent, a follow-up test message arrived through the same existing chat and received an answer.
The 12-request count and fresh-request timings were not re-measured during this latest recurrence; they are earlier evidence, not new measurements.
Earlier code inspection and limits of the conclusion
The September 9 local investigation of the installed bundle recorded that the renderer-side local request manager registers requests in pendingRequests and resolves/removes them on fetch-response or cancellation. No intrinsic response deadline or missing-response retry was found in that inspected request path. This is a finding from the earlier bundle inspection; please verify it against the source for this build. It is not a claim that the entire application lacks timeout handling.
Together with the observed indefinite pending / fetching state, this suggests a failure mode in which an initialization read remains unresolved and keeps workspace materialization and sending blocked.
Hypothesis, not established root cause: a startup ordering, response-delivery, listener-readiness, or renderer completion problem leaves an early local request unresolved. The investigation did not trace the first failed request across every boundary. It cannot distinguish a response never emitted, a response not delivered, a listener not ready, or a response received but not used to settle the promise.
The earlier theory that the main-process send queue was currently congested was not supported by subsequent observations and was withdrawn. No causal evidence linked this failure to a specific skill, plugin, prompt-length warning, permission setting, conversation database corruption, or external-network outage.
What steps can reproduce the bug?
Observed user flow (not a deterministic minimal reproducer)
- Launch the desktop app normally and open an existing chat.
- Type a follow-up message and try the send button or Enter.
- On affected launches, the send control appears unavailable or remains loading, with no explanatory error. The follow-up does not start a model run.
- Navigate to another chat and return: the loading appearance may disappear, but the unsent draft remains. This does not restore sending.
- A first message in a new chat may still work. During the earlier episode, mobile Remote could send while the PC composer could not, and the PC continued receiving conversation updates.
- A normal app restart alone was followed by recurrence in earlier testing. Reloading the actual main app renderer after startup restored the existing-chat send path.
The frequency and precise timing conditions are unknown. This report does not claim every launch fails.
Recovery that worked and approaches that did not
Working recovery in the observed episodes:
- Identify the running app and its actual main Electron window by type
windowand URLapp://-/index.html. - Reload that main window with
webContents.reload(), preserving the backend process where possible. - Wait for readiness to become
availableand the configuration block to disappear. - Close temporary diagnostics and verify a real follow-up send and completed answer in an existing chat.
An earlier successful full sequence was normal launch, wait for initial load, reload the main window once, verify sending, then close diagnostics without restarting again. The latest recurrence needed only the main-window reload.
This was a local diagnostic workaround, not a supported public repair API or a permanent fix. It did not patch the installed app, force readiness flags, delete conversations, reset login, disable security protections, or install a background monitor. Temporary diagnostics were loopback-only and closed afterward. The generic Ctrl+R shortcut was not established as equivalent; it may target the embedded browser instead of the app shell.
Earlier attempts that did not resolve the issue included re-approving Full access, opening another app window, switching Queue to Steer, disabling plugins and relaunching, and normal restart alone. Diagnostic changes were restored. An invasive startup debugger attachment also caused a separate hang during investigation; that diagnostic failure is not presented as the cause of the original send block.
What is the expected behavior?
Expected behavior
Local configuration and workspace initialization should complete or fail with a bounded, actionable error. Existing-chat sending should become available when its prerequisites are ready. A stalled read should offer a safe retry without losing drafts, clearing conversation history, changing permissions, or requiring a new chat.
Requested investigation and improvements
Please investigate the original failure, rather than only recommending repeated restarts:
- Trace a local initialization read by request ID across request creation, main-process receipt, response emission, renderer receipt, and promise settlement, starting before initial renderer startup. Include lifecycle/disconnect events and request age, without logging user prompt contents or secret configuration values.
- Review initialization/listener ordering and stale pending-request cleanup after renderer or bridge lifecycle changes. Ensure requests complete, cancel, or fail explicitly when their response cannot be delivered.
- Add a bounded deadline and safe retry for idempotent local reads such as
codex-home. Do not blindly retry model submissions or other side-effecting operations, and do not bypass workspace-readiness checks. - Surface a clear error and a user-accessible retry/reload action when local setup stalls. Preserve draft text and attachments, existing conversations, and running backend work.
- Add regression coverage for delayed, missing, early, and out-of-order local responses; startup/restart and renderer reload; navigation between existing chats; new-chat first message versus follow-up; and mobile Remote sending while the desktop composer initializes.
- Verify repeated ordinary launches and existing-chat follow-up sends without manual main-window reload or data resets. Confirm successful recovery also releases pending requests and does not create duplicate sends.
Additional information
Environment
- Windows x64 desktop app, packaged installation.
- Package version:
26.903.8094.0, confirmed again during the September 10 recurrence. - Internal app version:
26.903.61454; app-server version:0.153.4, recorded during the September 9 investigation, not separately re-measured on September 10. - The earlier investigation recorded the updater displaying that the app was up to date. This is a historical observation, not a claim about the latest release at triage time.
- Detailed diagnostics were collected on one affected PC. The user additionally reports recurrence of the same sending symptom on another PC; its exact environment and internal-state signature have not been independently verified.
Privacy
This report intentionally excludes names, contact details, account identifiers, machine/usernames, user-specific filesystem paths, private repository/project names, chat/session/request IDs, prompt contents, authentication data, screenshots, and raw logs. Only product versions, technical state fields, generalized reproduction steps, and sanitized diagnostic findings are included. No full chat export or diagnostic archive is attached.
Activity
github-actions commentedon Sep 10, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
nondualistcoder commentedon Sep 11, 2026
Additional reproduction on Windows x64, September 11, 2026, with installed package
OpenAI.Codex 26.903.9818.0.The user-visible failure matches this report: a follow-up message remains in the composer with a spinning Send control. It does not become a normal submitted message.
Observed through local runtime diagnostics after a Desktop-only restart:
submitBlockReason = loading-local-configisResponseInProgress = falseisResumePending = false['vscode', 'codex-home']and its local-host variant remainedpending / fetching.localWorkspaceMaterialization = availabledespite the configuration submission block. Workspace availability alone therefore did not establish that sending was ready.Recovery findings and limits:
success / idle. This alone did not clear the submission block on this build.submitBlockReasonto null. This was a batch of read-only retries; the individual decisive dependency was not isolated. No permission settings or readiness checks were changed or bypassed.success / idle, and the composer reportedempty-message, consistent with an empty composer. Successful first-message plus two-follow-up replies after that recovery remain unverified.A normal process restart did not reliably prevent recurrence. This should not be treated as fixed by restarting, reinstalling, or clearing a readiness flag. The underlying reason these reads fail to settle remains unconfirmed.
Please investigate the local request/response completion lifecycle and add bounded failure handling plus a supported retry action that preserves drafts and existing conversations. Regression coverage should verify actual repeated follow-up submission after ordinary launches, not only directory-query success or workspace availability.
No raw logs, screenshots, account identifiers, chat contents, session IDs, private paths, or configuration values are attached.
seanmartina commentedon Sep 12, 2026
Still experiencing the same user-visible symptom on Windows as of September 12, 2026.
Environment checked for this report:
OpenAI.Codex 26.908.4834.0.Microsoft Windows NT 10.0.19045.0.Reproduction:
Earlier troubleshooting recorded that the test task had finished and 99% of the weekly allowance remained at the time of that check. Restarting the app multiple times did not resolve the problem. The earlier log review also reported conversation-state errors across restarts; exact error strings are not included here.
Expected: once the reply finishes, the composer should become ready and allow subsequent messages.
This is a report of matching visible symptoms. The specific
loading-local-config/codex-homestate described above has not been independently established on this PC, and the root cause remains unconfirmed. The issue is still unresolved here.lishuoipad commentedon Sep 12, 2026
Additional verified recovery on Windows package 26.908.4834.0, September 13, 2026 (UTC+8). The
loading-local-config/ pendingcodex-homesignature was directly established on this PC, and recovery was verified through the normal desktop composer. This is additional runtime evidence for the matching symptoms discussed here.Observed before recovery
The actual main Electron webContents was identified by type
windowand exact URLapp://-/index.html, excluding the avatar overlay, detached window and embedded browser/webviews. In an existing conversation whose previous reply had finished:markedStreaming=truewas not used as evidence that a turn was still running.Recovery performed, without restarting or reloading
127.0.0.1. No startup debugger pause or application relaunch was used. On this installation, a local Node process could activate the existing main process's inspector withprocess._debugProcess(actualDesktopMainPid); this is an internal, unsupported diagnostic mechanism, not a public repair API. The PID was identified from the installed desktop executable, not from acodex.exeCLI/app-server process.getQueryCacheandcancelQueries; those private implementation details are build-specific.codex-homequeries first, then refetched those exact queries. No readiness flags, cached results or permission settings were manually changed.The essential operation, once the actual main renderer's
queryClienthas been obtained, is:This code requires the existing app query client;
queryClientis not a guaranteed console global. In this recovery, the target count was checked to be exactly two before proceeding. Do not apply this indiscriminately to submissions or other operations with side effects.Both queries returned actual directory metadata and became
success / idle. Workspace materialization becameavailable. The submit block becamenullwith a draft, andempty-messagewhen the composer was empty. The renderer'sperformance.timeOriginstayed unchanged: no main-window reload or Ctrl+R was involved.Actual follow-up validation
In the same pre-existing conversation, after its earlier reply had completed:
The two test turns completed at 01:28:39 and 01:29:41 UTC+8. Desktop main-process and app-server PIDs and start times were unchanged. The pre-existing unsent draft was preserved and restored after testing. No
send_message_to_threador equivalent tool was used to submit either test. Backend completion status was used only as a cross-check of the visible desktop replies.Limits
pending / fetching: locale, three global-state reads, inbox list, automation list, shortcut state, and Chronicle permission metadata. They were not retried in this recovery and did not prevent the two successful composer sends. This does not establish that all initialization problems are resolved..codexreset, session-database edit, cache clearing, permission/security change, installed-bundle modification, readiness bypass or persistent recovery guard was used. Temporary diagnostics were closed.This corroborates the cancel-then-refetch finding in #45069, with explicit repeated desktop-composer validation. A supported bounded timeout/retry path for lost initialization reads is still needed.
SovereignAxis commentedon Sep 15, 2026
Thanks for documenting this workaround. It restored follow-up messaging on my Windows Codex Desktop, version
26.908.70816(package26.908.9136.0).New chats could send the first message, but follow-ups were blocked. PC/app restarts and model changes did not help.
codex resume --allcould still send to the same sessions, with replies syncing back to Desktop.Diagnostics confirmed two local
codex-homequeries stuck inpending / fetching, withsubmitBlockReason = loading-local-config. CallingwebContents.reload()from the main process on the actual main window (app://-/index.html, typewindow) changed both queries tosuccess / idleand workspace readiness toavailable. I then confirmed that sending worked in another existing conversation. An earlier CDPPage.reloadattempt had not resolved the issue.No session or account data was deleted. The existing main and backend processes stayed running, and temporary diagnostic ports were closed afterward. I have not tested whether the recovery survives a full app restart.
I’m not a developer; I used Astra Light in Codex Desktop to investigate the issue and apply the workaround described here, then personally confirmed that sending worked again.
Update — restart test: After posting this, I restarted the app to check whether the recovery would persist. It did not: the local Work conversations I tried were blocked again, while my cloud conversations still worked.
I continued the troubleshooting through Codex in the browser. Diagnostics on my PC again confirmed two local
codex-homequeries stuck inpending / fetchingandsubmitBlockReason = loading-local-config. CallingwebContents.reload()from the desktop main process restored both queries tosuccess / idleand cleared the submission block again.I then personally sent a follow-up in Desktop, received a reply, and confirmed that the existing conversation content was still accessible. No session data was deleted, and the temporary diagnostic port was closed afterward.
This confirms a second successful recovery on my machine, but also that the workaround did not survive an app restart in this test.
lishuoipad commentedon Sep 16, 2026
September 16 update: targeted recovery on 26.908.9136.0, plus startup response-loss evidence
Following up on my earlier recovery report. This problem still recurs on Windows package 26.908.9136.0, with app-server 0.154.0-alpha.6.2. It has been requiring roughly 7–8 manual recoveries per day on this installation.
The targeted workaround again cleared the configuration blocker without resetting data or changing permissions. It is not a permanent fix.
Identify this specific failure first
Two repeated runtime samples showed:
Some other configuration/permission queries had completed. Fourteen local bridge requests remained pending. While the original requests were still stuck, five fresh read-only codex-home requests all returned 200 in approximately 0.7–3.6 ms, without settling the original fourteen requests. These are local bridge timings, not internet latency. The inspected main-process ChunkedMessageSender had no queued targets.
Recovery: cancel the exact stuck reads, then fetch real configuration again
The key is cancel first, then refetch. Invalidating an already-fetching query alone can leave it waiting for the same unresolved request.
For developers diagnosing this build, the following is the bounded form of the operation.
queryClientmust be the existing main renderer's actual TanStack QueryClient, not a newly created client or an assumed console global. Inspect the actual visible Electron main window (type=window, exact URLapp://-/index.html), excluding detached windows, avatar overlays and embedded webviews. The private React/provider access used to obtain this client is build-specific; this is an unsupported diagnostic workaround, not a public repair API.After the actual recovery, both reads returned real directory metadata and became success/idle; workspace materialization became available. The remaining submit reason was empty-message, appropriate for the empty composer. If another submit blocker remains, inspect it separately; do not broaden the retry to submissions or arbitrary operations. Do not use
setQueryData, force readiness flags, or bypass permission/workspace checks.Any temporary inspector should be loopback-only, attached to the identified desktop main process, and closed afterward with the listener's disappearance verified. The main executable can be named ChatGPT.exe inside the OpenAI.Codex package;
codex.exemay instead be the backend. Do not choose a process solely by CPU/memory usage. Details of this diagnostic setup and cleanup are in the earlier linked comment.New evidence useful for a permanent fix
With request-ID-only instrumentation installed before a controlled main-renderer reload, one run recorded 66 outgoing local requests, 66 main-process response-send calls, but 65 renderer response observations. The missing response was for
set-remote-wsl-connections-enabled, had status 200, and its request remained pending. The main instrumentation ran immediately before delegating to the originalwebContents.send: this establishes an attempted send, not acknowledged delivery. Two subsequent reloads had no pending bridge requests.This captures a related startup response-completion failure, but does not prove the original codex-home requests were lost at exactly the same boundary, or pinpoint the Electron/preload implementation responsible.
Inspection of this installed build also found:
sendRequestpath registers a pending request but has no intrinsic response deadline; absent a response or cancellation, it can remain unresolved indefinitely.sendMessageFromView(...).catch(...)logs failure without propagating it to the pending-request owner. This is an additional potential indefinite-pending path; an actual send rejection was not captured in this incident.Please prioritize end-to-end completion/receipt handling, propagation of asynchronous send failures, bounded deadlines and limited retries for explicitly idempotent initialization reads, and a visible Retry action. Navigation/reconnect should settle or cancel requests from the old lifecycle. Do not automatically replay user message submissions or configuration mutations.
Validation limits: the runtime configuration blocker was cleared in this September 16 run. Two normal-composer follow-up sends were verified in the earlier September 13 report, but were not repeated as a controlled end-to-end test in this run. Multiday nonrecurrence remains unverified. No session databases, history, permissions or installed app files were modified; no persistent recovery agent was installed, and the temporary Node inspector was closed. No raw logs, screenshots, private paths, prompt contents or account/session identifiers are attached.
qin532 commentedon Sep 17, 2026
Additional reproduction from another Windows user, September 17, 2026 (UTC+8).
After fully quitting Codex from the system tray and reopening it, the first message in both existing and new chats fails to submit. The Send arrow becomes dim blue/gray and then spins indefinitely. No answer or new turn appears. Signing out of the ChatGPT account and signing back in restores sending for that app session. The failure recurs after the next full quit and cold launch. Restarting the app alone does not recover it.
Deleting the user's
.codexdirectory once restored sending temporarily, but the failure returned after the next shutdown/restart. Other local state/config resets did not establish a lasting fix and were rolled back.Diagnostics during an affected launch:
turn/startrequest in the app logs.turn/startappears and messages work.This suggests the failure occurs before turn submission in the Windows desktop UI/startup state, but the root cause is not proven. Please investigate why cold launch leaves message submission blocked, why sign-out/sign-in reinitializes it, and whether this is related to the pending local-config /
codex-homestate reported here. A supported recovery path that preserves drafts and chats would help until a permanent fix ships.This report intentionally excludes account identifiers, local usernames, paths, private chat contents, raw logs, and authentication material.
seanmartina commentedon Sep 17, 2026
yiliwulu1999yunnan-boop commentedon Sep 18, 2026
September 18, 2026: reproduced on 26.915.3509.0; fast model/list does not clear the local-config blocker
Adding measurements from another Windows installation. Sending was restored, but a full exit/relaunch reproduced the failure; this is not a permanent fix.
Environment: Windows package
26.915.3509.0, internal version26.915.31029, build9771, bundled CLI0.155.0-alpha.9.Isolation of model-list latency: Initially,
model/listtook approximately 5009–5018 ms. After configuring a validated local model catalog throughmodel_catalog_json, observed desktop calls took 0–12 ms. The local-config send blocker still occurred. This isolates the model-list timeout as an insufficient explanation for the remaining failure, not a claim that all network problems are excluded.Observed blocked state in the actual main renderer:
codex-homerequest returned the real directory in approximately 1.1 ms while the original queries remained pending.thread/resume; its previous turn was completed.turn/start. The submission was blocked before model execution.Recovery and recurrence:
app://-/index.htmlrenderer, with the main process and backend kept alive, changedcodex-hometosuccess / idleand workspace readiness toavailable / success / idle.turn/startand the expected reply. This was a UI-path test, not a direct backend submission.Temporary loopback diagnostic listeners were closed afterward and verified absent. No installed application bundle was modified, conversation history deleted, or security permissions relaxed. The model-catalog configuration change described above remained in place.
Proven failure chain versus unresolved trigger:
The observed chain is outstanding local requests → pending home queries → workspace preparation never becoming ready → submission blocked. Read-only inspection of the installed local-request path found a pending-request map completed by a response or cancellation, without an intrinsic response deadline in that path. This permits an uncompleted initialization request to leave the UI blocked indefinitely.
The first failed request was not traced end-to-end across renderer dispatch, main-process receipt, response dispatch, renderer receipt, and promise settlement. The initial missing-completion boundary and its trigger remain unproven. A startup timing or response-delivery problem is a hypothesis, not a confirmed root trigger.
Could maintainers confirm whether this newer-build reproduction is covered by an upcoming fix, and which additional sanitized instrumentation would help identify that first missing completion? A durable fix needs explicit completion/failure handling for initialization reads, bounded waiting, safe cancellation, and a visible retry path that preserves drafts. Any automatic retries should be limited to suitable idempotent reads, not blind retries of
turn/startor other side-effecting operations.Our proposed acceptance check is at least three ordinary cold launches with no diagnostic connection or manual reload, each completing both a new-conversation send and an existing-conversation follow-up. This build did not meet that criterion.
This comment contains only a sanitized diagnostic summary, with no raw logs, screenshots, account data, local filesystem paths, conversation identifiers, or user prompts.
GoMaaars commentedon Sep 20, 2026
Root cause narrowed down, plus a workaround that recovers without reloading the window.
Instrumented all three hops on 26.915.4065.0 / app 26.915.31945 (Windows Store package), with the same requestId traced through each hop:
vscode://codex/codex-homerequest arrives ([electron-fetch-handler] codex-home requestin the main-process log);readCodexHomePathsis effectively synchronous for the local host and thefetch-responseis handed towebContents.sendwithin ~1 ms;windowmessageevent for that requestId never fires during the first seconds after startup, so the React Query entries["vscode","codex-home"]and["vscode","codex-home",{"hostId":"local"}]staypending/fetchingwithdataUpdatedAt=0forever. The same happens to ~9 sibling startup queries (get-global-state×3,locale-info,inbox-items,list-automations,codex-command-keymap-state,paths-exist,global-dictation-hotkey-state).Once the app is up, cancelling and refetching those same queries completes in ~3 ms end-to-end (main received → main replied → renderer received, all confirmed), the workspace flips to
available,submitBlockReasongoes fromloading-local-configtoempty-message, and Send is enabled — no window reload needed. So the responses to the very first batch of local requests are dropped somewhere on the main→renderer delivery path during startup, and nothing retries them.Workaround (MIT, Windows, Node 22+): https://github.com/GoMaaars/codex-desktop-send-button-fix — attaches to the main process over the loopback inspector, asks the renderer to re-issue every stuck
vscode/*query, and closes the inspector. Optional watcher does this automatically ~45 s after each app start. Only public Electron/React Query APIs plusprocess._debugProcessandipcMain._invokeHandlers; no build hashes, so it survives updates.Suggested fix on the app side: give the local fetch bridge a deadline and a retry for the startup batch, or have the renderer re-issue
vscode/*queries whose responses did not arrive within N seconds ofapp routes mounted.seanmartina commentedon Sep 20, 2026
becoming a joke now consrtantly signing off and back in to have a convo
TomassonJW commentedon Sep 21, 2026
Adding a newer reproduction on Windows 11 x64 (2026-09-21), app 26.915.31945 build 9922, package 26.915.4065.0, backend 0.155.0-alpha.9.2.
The same follow-up send block still occurs after a full uninstall/reinstall of the current package. On affected launches, submitBlockReason=loading-local-config and localWorkspaceMaterialization=loading while isResponseInProgress=false. Startup vscode://codex/* reads such as codex-home, paths-exist, locale-info, get-global-state, inbox-items, list-automations, codex-command-keymap-state, and global-dictation-hotkey-state remain pending/fetching. New requests over the same bridge can still return 200.
Refetching only the genuinely pending/fetching read queries changes workspace materialization to available and clears the submission block. Two real UI sends then succeed. After a normal restart, the issue can recur. This is a diagnostic workaround only; no app files or permissions were changed.
Please consider this a current-version reproduction of #44342 and investigate the startup response/lifecycle path, with bounded retry/error recovery that preserves drafts.
seanmartina commentedon Sep 22, 2026
how is this still not fixed to reply to a convo i have to resrtat sign out and back in every time, remote connection is broken since this bug its becoming a joke i have the lateset version installed this is getting tiring
seanmartina commentedon Sep 22, 2026
how is this still not fixed to reply to a convo i have to resrtat sign out and back in every time, remote connection is broken since this bug its becoming a joke i have the lateset version installed this is getting tiring
TomassonJW commentedon Sep 23, 2026
September 23 follow-up: startup reads still stall on Windows package 26.917.6896.0
The user reported the same desktop follow-up sending symptom after updating to the installed Windows package
OpenAI.Codex 26.917.6896.0(Windows package status:Ok). This is a recurrence report, not a claim that every launch fails.During a subsequent controlled recovery launch, the actual main renderer had 11
vscode://codex/*initialization reads inpending / fetching, includingcodex-home(two entries),paths-exist,locale-info,get-global-state,inbox-items,list-automations,codex-command-keymap-state, andglobal-dictation-hotkey-state. Only those observed stuck read queries were cancelled and refetched. All 11 returnedsuccesswith real responses. The inspected workspace materialization then reportedavailable; no tracked read query remainedpending / fetching. Diagnostic sessions were detached. No installed app files, account state, permissions, or conversation data were changed.Validation limit: The private composer-state inspection used in the previous build did not resolve on this build, and this recovery log alone does not establish that two follow-up messages were submitted through the normal desktop composer. It is a current-version observation of the same startup-read stall and a successful read-only retry, not proof of a permanent or fully validated UI repair. The first missing-response boundary remains unconfirmed.
Later user confirmation: The user subsequently tested desktop sending and reported that it works again. This is user-confirmed functional recovery after the workaround; it does not establish that ordinary startup without recovery now works or that future launches will stay healthy.
Please keep this version in the investigation of initial local-request completion, bounded failure/retry for idempotent startup reads, and a visible recovery path that preserves drafts. No raw logs, personal paths, chat identifiers, prompt text, account data, or secrets are included here.
Jiaxu666-dev commentedon Sep 23, 2026
Additional September 23 reproduction: exact composer gate captured, recovery limited to two reads
Adding a separately observed recurrence on Windows x64, installed package
26.917.6896.0. The user reports recurrent sending failures since approximately September 10 despite several application updates. This is not a claim that every launch fails or that every historical episode shares the same cause.In the afternoon recurrence, the app was running in a different main process from the morning observation. The main renderer showed:
["vscode","codex-home"]["vscode","codex-home","{\"hostId\":\"local\"}"]localWorkspaceMaterializationsubmitBlockReasonThis recovery retried only those two read-only queries. It did not retry all pending reads, reload/restart the application, change permissions, alter installed application files, clear profile/session data, or force readiness flags. Other pending reads were left untouched. The temporary local diagnostic interface was closed afterward.
Functional validation: The user then tried the normal desktop send control and explicitly confirmed sending worked. This confirms recovery of the observed episode; repeated successful launches or a permanent fix have not been established.
Code-inspection lead, not a proven initial root cause
Read-only inspection of the installed package indicates:
vscode://codex/request path creates a pending promise settled by a response or external cancellation. That function itself has no timeout timer.This identifies a mechanism by which an unfinished local read can keep the composer blocked, but does not locate the first missing-completion boundary. Initial request delivery, backend initialization/dependencies, response delivery, and promise settlement still need correlated tracing; timeout behavior in other layers has not been ruled out.
Please investigate that initial boundary and add bounded failure/cancellation plus limited retries for these idempotent reads, with a visible recovery action that preserves drafts. Please include regression coverage for ordinary app restart, delayed/missing local responses, existing-thread navigation, and two successive manual follow-ups. Model submissions and other side-effecting operations should not be automatically replayed.
This comment contains sanitized technical findings only; no private project names, personal filesystem paths, chat/account identifiers, prompt contents, raw logs, or screenshots are included.
PostmanTeddy commentedon Sep 23, 2026
September 23: reproduced on Windows package 26.917.8451.0, recovery verified in the UI, and a diagnostic-reattachment crash
Hi OpenAI team,
First, thank you for building ChatGPT and Codex. I love the product and appreciate the work that goes into it. I am reporting this because I want to keep using it reliably.
This problem has cost me hours and a substantial amount of Codex usage just troubleshooting how to use Codex Desktop itself, rather than doing my actual work. I have not measured an exact token total or monetary cost, so I do not want to invent one. Repeatedly losing the ability to send a follow-up is a serious interruption. I eventually needed a separate terminal conversation as a working contact route while Desktop was blocked.
With my authorization, Codex helped prepare this sanitized report from local observations. This appears to match the startup-read failure already reported here; the original missing-completion boundary is still unproven.
Environment and reproduction
10.0.26200.OpenAI.Codex 26.917.8451.0.What actually recovered the observed episodes
In the actual main app renderer (
type=window, exact URLapp://-/index.html), these two queries remained stuck:Both had
status=pending,fetchStatus=fetching,dataUpdatedAt=0, and no directory response. They were still stuck after a second check five seconds later.Only those two exact read queries were cancelled and refetched through the existing QueryClient. Both returned real directory responses and became
success/idle. No readiness flags were forced, permissions bypassed, installed app files patched, or model submissions replayed. Conversation history and sign-in were preserved.Functional validation went beyond query-state inspection:
These are observations from specific tests, not a guarantee that every launch or configuration behaves identically.
Separate diagnostic crash: please do not treat this workaround as a general repair recommendation
A later second Node-inspector connection to an already-diagnosed app process coincided with a confirmed browser-process crash. I did not close the app. Crashpad recorded it at 10:22:50 UTC, immediately after the connection attempt: exception
0x80000003inchrome.dll, module offset0xB5C5A42,ptype=browser.Repeated attachment is a suspected trigger, not a proven cause; a symbolized stack is not available. This diagnostic incident is separate from the original send block, which also occurred without any diagnostic attachment.
Automatic recovery was therefore disabled. The local diagnostic tool now persistently blocks a second attachment to the same process/start time, even after a failed attempt; that refusal was tested without opening another connection. This limits the observed risk path but does not establish that all first attachments are safe. Only passive process/crash-file metadata monitoring remains enabled. The dump is preserved locally and is not attached because it may contain private memory.
What would help permanently
Please investigate the initial read across request creation, main-process receipt, dependency completion, response delivery, and renderer promise settlement. Our observations do not prove where the first completion is lost.
A supported fix should provide bounded failure/cancellation and limited retries for these explicitly idempotent startup reads, plus an actionable retry option that preserves drafts and conversations. It should never blindly replay model submissions or other writes. Please verify ordinary launches and repeated real follow-ups with all diagnostic workarounds disabled, including existing-chat navigation and new-chat first-message/follow-up behavior.
The app is usable again after targeted recovery, but the underlying product bug is not permanently fixed. Users should not need hours of paid-product troubleshooting or internal debugger work just to continue a conversation.
Thank you again for the excellent product and for looking into this. I hope these verified findings help both your team and the other people affected.
No private conversation contents, project names, personal paths, account/session identifiers, credentials, screenshots, raw logs, or memory dumps are included.
TomassonJW commentedon Sep 23, 2026
September 24 follow-up: exact gate recovered in place on 26.917.8451.0
I reproduced this again on Windows x64 with the installed package
OpenAI.Codex 26.917.8451.0(internal app version26.917.62051; the built-in update check reported up to date). Remote could continue the conversation while the Windows Desktop composer could not submit a follow-up.In the already-running main renderer, before intervention:
submitBlockReason=loading-local-configlocalWorkspaceMaterialization=loadingvscode/codex-homequeries, default andhostId=local, were bothpending/fetching, with no data and no error.I cancelled and refetched only those two read-only queries through the existing QueryClient. Both became
success/idlewith data. A separate inspection then foundlocalWorkspaceMaterialization=availableand the composer block reasonempty-messagewhile its input was empty. The user subsequently confirmed that normal sending in the Windows app works again. This is user-confirmed functional recovery of this episode; I did not independently count two successive Desktop sends in this latest run.The app was not restarted, its installed files/profile/conversations were not changed, and no model submission was replayed by the recovery. The temporary loopback diagnostic port was closed and verified closed. This does not establish a permanent fix: an ordinary restart after this recovery and future package/Windows updates have not been validated here. Previous launches have reproduced the stall.
The local shortcut was changed to run an exact-signature-guarded in-place recovery rather than the older restart path that failed with
spawn EPERM; the shortcut's already-ready/no-op path was exercised. Its cold-start path remains untested. This uses unsupported Electron/Node inspector access and should not be treated as a recommended product fix, especially given the separate reattachment-crash report above.Please fix the original request-completion failure in the app, add a bounded error/retry for these idempotent startup reads while preserving drafts, and cover ordinary restart/update plus normal existing-chat follow-up sending in regression tests. No private paths, thread/account identifiers, prompt contents, raw logs, or credentials are included here.
xiaosheng2021 commentedon Sep 26, 2026
Reproduced on Windows x64 with Codex Desktop package
26.924.1866.0after updating on September 26, 2026.Actual behavior
codex-home request hostId=undefined, with no completion afterward.app_startlater fails withreason=timeoutafter approximately 121–130 seconds.26.727.4816.0works on the same machine, account, and network.Troubleshooting attempted without recovery
Cache,Code Cache,GPUCache, and shader caches)OkConversation and login data were preserved throughout these tests.
This appears to be the same pending
codex-home/ local-initialization failure, but in26.924.1866.0it can block application startup entirely. Please add a bounded timeout/retry and a visible reload or recovery action.s00llen commentedon Oct 7, 2026
Additional evidence: local renderer fetch requests can remain pending after native bridge invocation fails. This is a reproducible error-propagation defect in both installed Windows package 26.930.7945.0 (client 26.930.61225 / build 13232) and downloaded package 26.1002.7124.0 (client 26.1002.52244 / build 13536).
We executed the exact extracted production sendRequest/onFetchResponse methods, bridge postMessage function and complete message-bus class in an isolated Node VM, mocking only the native IPC endpoint and required browser/logging primitives. No live debugger, installed-package modification or profile reset was used.
Control: a matching successful fetch-response resolves the Promise and leaves pendingRequests.size=0.
Failure: make electronBridge.sendMessageFromView reject. The bridge logs its warning, but the original local fetch Promise is neither rejected nor removed from pendingRequests. It remains pending after the bounded 500 ms observation. Source inspection independently shows no general timeout in this path. Explicit caller abort rejects the Promise and clears the pending entry. Both scenarios behave identically in both packages.
This does not establish the initial trigger of the historical user incidents. Historical snapshots showed codex-home pending/fetching and loading-local-config blocking follow-up sends; other original renderer requests also remained pending while main active handlers and outbound queues were empty. Fresh local reads could succeed in the same document. The original request-ID lifecycle was not captured, and no matching native-invoke failure was retained for those incidents.
A separate historical Windows 10 startup timed out at 121647.8 ms after successful host/settings/account initialization, with no shell/home/sidebar paint marks. Its exact blocked renderer dependency was not captured; we are not asserting that it shares the same trigger.
Please propagate native-send failures to the associated fetch Promise, settle pending requests on transport/document teardown, and add bounded recovery for safe startup reads. A supported diagnostic trace covering requestId across renderer send, main receive/reply, preload receipt and renderer settle would identify the missing historical boundary. Please identify a release containing the applicable fix rather than treating a successful restart as proof of resolution.
Source bundle SHA256:
26.930.7945.0: b9468897f9c8a96395322ae4b2a2446914f50670403466c0c8889a40eb23f3cf
26.1002.7124.0: 35b467c3a05695ec354eb1d0bb4572ad7e9d1480decc1cf0fae3d16b50aa5bd8
Related reports, independently reported by their authors:
#44342
#45069
#48466