Windows/Edge: Chrome plugin update leaves locked host, partial cache, stale app-server manifest, and an uninstallable plugin
Environment
- Windows:
10.0.26200.8457 - Microsoft Edge:
150.0.4078.48 - Codex AppX:
26.707.8168.0 - Codex CLI:
0.144.0-alpha.4 - Chrome plugin before update:
26.623.81905 - Chrome plugin reported after update:
26.707.61608 - Browser: Microsoft Edge with the Codex Chrome Extension installed and enabled
Summary
When Codex updates while the Codex Chrome Extension is enabled in Edge, Edge keeps launching the plugin's extension-host.exe. The process holds files inside the versioned plugin cache. The update can then leave a partially copied plugin directory while Codex reports the new version as installed and enabled. The plugin UI may also be unable to uninstall the plugin.
In this reproduction, four pieces of state diverged:
- Installed-plugin state reported
26.707.61608. - The native messaging manifest still launched
26.623.81905. - The
latestjunction still targeted26.623.81905. chrome-native-hosts-v2.jsonstill referenced a removed AppX resources directory from26.707.3748.0, while the installed AppX was26.707.8168.0.
Reproduction and evidence
- Keep Microsoft Edge running with the Codex Chrome Extension enabled.
- Update Codex while Edge continues to launch
extension-host.exefrom the old versioned plugin cache. - After the update:
- Codex reports the new plugin as installed and enabled.
- The cache can be incomplete. A clean source contained 375 files, but the newly installed cache contained only 342 files and was missing both
docs/and.codex-plugin/plugin.json. - The native messaging manifest still points to the old versioned
extension-host.exe. - The plugin UI cannot reliably uninstall the plugin.
- Browser communication becomes partially functional:
- Codex could enumerate 273 open Edge tabs.
- Claiming/controlling a specific HTTPS tab timed out.
- After a CLI remove/add cycle, the cache was again incomplete because the extension host was relaunched during installation.
- The extension then showed:
Unable to start ChatGPT
Codex app-server manifest entry is missing required path resourcesPath
chrome-native-hosts-v2.jsondid contain aresourcesPath, but it pointed to an AppX directory that no longer existed:
...OpenAI.Codex_26.707.3748.0...\app\resources
The currently installed package was:
OpenAI.Codex_26.707.8168.0
Expected behavior
- Codex should stop or detach the running native host before replacing plugin files.
- A plugin version should become active only after its complete cache has been staged and validated.
- Installed-plugin state,
latest, the native messaging manifest, andchrome-native-hosts-v2.jsonshould be updated as one recoverable transaction. - On startup, Codex should detect a missing or stale
resourcesPathand regenerate the app-server/native-host entry automatically. - Uninstall should work even if the native host is running: stop the owned process, remove state, and report an actionable error if cleanup fails.
Suggested improvements
- Stage into a temporary version directory, validate required files, then atomically rename/switch
latest. - Before update/remove, identify and stop only the extension-host processes owned by that plugin cache.
- Repoint the native messaging manifest to a stable
latestpath before deleting an old version. - Refresh the AppX
resourcesPathafter every desktop update and validate that it exists. - Add startup self-healing for mismatched plugin version, host version, junction target, and app-server manifest.
- Add a UI repair action that performs the supported stop/reinstall/re-register workflow and preserves a rollback copy.
Comparison
On the same machine, the user's comparable Claude browser integration has not exhibited this update-time lock, partial-install, or stale-manifest failure. This suggests Codex could improve lifecycle coordination and atomicity rather than requiring users to disable the Edge extension before every desktop update.
Temporary recovery used for diagnosis
- Back up plugin/config/native-host state.
- Disable or stop the running extension host.
- Restore a complete plugin cache from the bundled source.
- Reinstall the plugin through Codex's plugin command.
- Rebuild stale app-server/native-host registration on the next Codex startup.
The workaround is fragile; the product should self-heal without manual cache or manifest intervention.
12 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Resolution update: clean uninstall/reinstall restored the integration
The user completed the reinstall, and the resulting state has now been verified locally.
Additional lock source found during uninstall
Stopping
extension-host.exealone was not enough. The Codex browser diagnostic session had also loaded a nativeclassic-levelmodule from the Chrome plugin cache. Resetting the diagnostic session did not terminate all of its childnode.exeprocesses, socodex plugin remove chrome@openai-bundledcontinued to fail with Windows error 5 (Access is denied).After identifying and stopping only the Codex diagnostic Node children associated with that browser session, the official CLI uninstall succeeded:
not installedextension-host.exe: 0This suggests uninstall/update should also terminate or detach browser-client/Node processes that have native modules loaded from the plugin cache, not only the native extension host.
Recovery sequence that worked
extension-host.exe.codex plugin remove chrome@openai-bundled.A stale
chrome-native-hosts-v2.jsonhad been backed up and removed before restart. Codex then regenerated it correctly during the clean reinstall.Post-reinstall verification
26.707.61608docs/.codex-plugin/plugin.jsonscripts/browser-client.mjsextension-host/windows/x64/extension-host.exelatestjunction targets26.707.6160826.707.61608hostchrome-native-hosts-v2.jsonnow reports:26.707.61608resourcesPathpointing to the currently installed AppXOpenAI.Codex_26.707.8168.0resourcesPathexistsextension-host.execomes from the current plugin cacheThe user reports the browser integration is functioning normally again.
Product implication
The update/remove lifecycle should account for every process that can load files from the plugin cache:
The product should stop/detach these processes before deletion, stage and validate the new cache atomically, then update
latest, Native Messaging registration, and the app-server manifest together.Additional reproduction on Google Chrome and a newer Windows build
I can reproduce a closely related stale-state failure on Codex Desktop for Windows.
Sanitized environment
26.715.2305.026.715.2142526.707.62119Observed state
%USERPROFILE%\.codex\plugins\cache\openai-bundled\chrome\26.715.21425is complete. It contains.codex-plugin/plugin.json,assets,scripts/browser-client.mjs, andextension-host.exe.latestjunction still points to the missing directory26.707.62119.%LOCALAPPDATA%\OpenAI\extension\com.openai.codexextension.jsonalso points to the missing26.707.62119\...\extension-host.exe.extension-host.exewere fully closed, then Codex Desktop was restarted. The current plugin directory was regenerated successfully, but the stalelatestjunction and native-host manifest were not reconciled.Chrome) and exact ID (chrome@openai-bundled). At the time of these attempts, there were zerochrome.exeand zeroextension-host.exeprocesses. The UI/API returned only a genericFailed to uninstall pluginresult.Expected behavior
latestto the complete current plugin version.extension-host.exe.No manual registry or native-host modifications were made.
One additional recovery condition from a closely related reproduction on Codex Desktop
26.715.4045.0/ Chrome plugin26.715.31925.After the complete current plugin version existed, the following could still remain absent or stale:
chrome/latest.plugin-appserverchrome-native-hosts-v2.jsonThere were two independent blockers:
extension-host.exeor diagnostic Node workers holding plugin-cache files; andArchive, Encrypted, causing Electron/Node copy operations to fail with Windows error 6000.After closing the plugin-owned processes, I copied the official signed runtime files and bundled marketplace to verified user-writable cache/mirror locations using decrypted-destination semantics (
robocopy /COPY:DT), then used the supported plugin install flow. The desktop app's own native-host reconciliation was then able to atomically pointlatestat the current version and regenerate the v2 state, manifest, and HKCU registration.A useful diagnostic distinction:
codex plugin addsucceeding only proves the payload install completed. It does not prove that desktop native-host reconciliation ran. Verify the junction, v2 entry, manifest target, registry value, current AppXresourcesPath, and an actual browser handshake.The real Chrome extension backend subsequently created a tab, navigated to
https://example.com/, and read the page successfully. No manual manifest/registry fabrication was used.This reinforces the need for update/remove to stop every plugin-cache consumer, stage/validate atomically, and reconcile all host state after each AppX/plugin version change.
Additional deterministic reproduction on a newer Windows build.
Environment:
26.727.4816.026.721.31836The supported plugin uninstall path returns only
Failed to uninstall plugin, but it is not a no-op. It partially deletes the cache:.codex-plugin/,assets/, anddocs/extension-host/,scripts/, andskills/remainfailed to load plugin: missing or invalid plugin.jsonRestoring the three missing directories from the bundled same-version source returned the cache to 376 files, with matching SHA-256 hashes and zero changed/extra files. Retrying the supported uninstall reproduced the same 376 -> 342 partial deletion and generic failure.
This shows the uninstall operation is non-transactional on this build: it mutates the installed cache before failing and leaves the plugin marked/configured in a broken half-installed state. No registry or native-host files were manually modified.
Additional reproduction: AppX physically installed on a secondary encrypted drive
I encountered the same user-visible error on Windows x64 with Google Chrome:
Environment
26.727.6591.026.727.51351Observed state
Get-AppxPackagereported a compatibility path underC:\Program Files\WindowsApps\OpenAI.Codex_....D:\WindowsApps\OpenAI.Codex_....Directory, Archive, Encryptedattributes.Recovery and verification
I used the supported Windows Move action to move ChatGPT from D: to OS (C:), then restarted it. After the move:
extension-host.exe; andMoving the AppX may also have forced stale registration state to regenerate, so the secondary-drive/encryption condition is a strong correlation rather than proof of the sole cause. Still, Move to C: was the change that turned this reproduction from broken to working.
OpenAI feedback ID:
019fcdba-0bf9-70e0-a623-764b48dd6dc6Author disclosure: I maintain WinBridge Recovery, an independent Windows recovery project for Codex Desktop.
This report is particularly relevant to the state the tool checks: a versioned plugin cache can be incomplete while
latest, the native-host registration, and the currently installed AppX resources point at different generations. WinBridge Recovery resolves the currently installed official Codex package, checks those version/path relationships, detects stale/partial user-side state, and repairs only the inconsistent pieces with backup/rollback support.I’m sharing it here as a possible recovery aid for users who hit this specific cache/pointer/registration drift after an update, not as a claim that it fixes the underlying updater race. It does not modify WindowsApps contents, bypass file locks by changing ownership, or weaken sandbox/security policy. If the failure is caused by a product runtime bug rather than stale local state, it deliberately leaves that outside its scope.
I am experiencing the same Windows Chrome native-host failure.
Feedback ID:
no-active-thread-01a01f0b-2a7b-7a53-aa74-263206d90512
Environment:
The side panel loads and can read the selected tab, but tab enumeration, navigation and control remain unavailable. The extension reports that the Codex Chrome native host is out of date.
A clean app/extension/plugin reinstall, regenerated native-host configuration, corrected resourcesPath and nodePath, and a full restart did not resolve it.
Additional reproduction on Windows, August 20, 2026.
Incident timestamp: August 20, 2026 at 10:18 AM EDT (America/New_York)
This appears to reproduce the same update-time state divergence described in this issue, with a newer Codex build.
Environment
26.814.5517.0C:\Program Files\WindowsApps\OpenAI.Codex_26.814.5517.0_x64__2p2nqsd0c76g01.2.27267.1537526.803.81509Failure sequence observed
Unable to start ChatGPTCodex app-server manifest entry is missing required path resourcesPathextension-host.exe.C:\Users\Ryan\.codex\chrome-native-hosts-v2.jsoncontained two stale runtime entries referencing older removed AppX resource directories:OpenAI.Codex_26.803.8161.0...\app\resourcesOpenAI.Codex_26.803.10989.0...\app\resourcesTest-Pathas:C:\Program Files\WindowsApps\OpenAI.Codex_26.814.5517.0_x64__2p2nqsd0c76g0\app\resourcesresourcesPathvalues to the current verified AppX resources directory, the error changed to:Codex app-server manifest entry is missing required path nodePathC:\Users\Ryan\.codex\plugins\cache\openai-bundled\chrome\latestwas renamed out of the way so Codex could regenerate it on restart.Impact
The Chrome sidebar is used for active production workflows and browser-control tasks. The failure blocks or degrades access to the user's existing logged-in Chrome state and interrupts those workflows.
Additional observation
The failure mode changes as individual stale paths are repaired, suggesting the AppX version, plugin cache, native host, Node runtime paths, and app-server manifest are not being regenerated/validated atomically after an update.
This also appears related to #39531, which reports the native host remaining outdated/read-only on the same current ChatGPT/Codex desktop version
26.814.5517.0.A product-side self-heal that rebuilds all version-specific paths (
resourcesPath,nodePath, host paths, cache/junction state) together after an AppX update would likely prevent this class of failure.Clean reproduction after complete removal and reinstall:
Windows ChatGPT app: 26.818.2441.0
Bundled Chrome plugin: 26.818.21641
Chrome extension ID: hehggadaopoacecdllhhajmbjkdcmajg
Verified:
Result:
Selected-tab text works, but tab enumeration/navigation/control fails with:
“Codex Chrome native host is out of date.”
Feedback ID:
no-active-thread-01a01f0b-2a7b-7a53-aa74-263206d90512
Additional recurrence on the same Windows/Chrome integration failure.
Incident timestamp: August 20, 2026 at 12:37 PM EDT (America/New_York)
The ChatGPT Chrome sidebar froze again while attempting to resume a production Active Listings audit after the earlier native-host / manifest repairs documented above.
What was happening when it froze
The sidebar had been given a continuation handoff to run a full manual August 20 combined STATUS + PRICE audit against a SharePoint production workbook containing roughly 1,829 active properties. The audit is designed to research current listing status and current asking price, then write a single reconciled result back to the exact production workbook.
Verified impact of this freeze
After the sidebar froze, the production workbook was re-fetched directly from SharePoint to determine whether any safe checkpoint had been committed.
Findings:
AuditControlTablestill shows the prior August 17 run asIncomplete, ErrorCount4, RunIDAUDIT-20260817-094224-ET.AuditRunLogcontains no August 20 audit run entry at all.PriceTrackingTablestill carries prior-day / August 19 baseline/check state and no August 20 completed price-lane run.Because the sidebar froze before a run-control/log write was committed, any live browser research it had already performed cannot be trusted as resumable state. The next sidebar session must re-fetch the workbook and restart the full audit from a clean current-state baseline to avoid partial or duplicate writeback.
Why this matters for usage / credits
This is now forcing repeated execution of a large, research-heavy workflow. A single failed sidebar session can require the next session to redo substantial browser research across a large active-property population because no durable checkpoint survives the freeze. That repeated research is a plausible contributor to unusually high weekly Codex usage and is materially disruptive to production work.
This recurrence should be considered part of the same lifecycle/state-divergence problem: after update/repair, the sidebar can still degrade or freeze during real browser-control work rather than returning to a stable, self-healed state.
Additional Windows/Google Chrome reproduction: stale
resourcesPath, recovery-path package mismatch, and verified recoveryI hit a closely related failure on Windows with Google Chrome and collected a read-only forensic trace before repair. This reproduction adds a recovery-path case where the Codex package itself was removed and a subsequent ChatGPT-branded install installed ChatGPT Classic (
OpenAI.ChatGPT-Desktop) rather than restoringOpenAI.Codex.Failure sequence
Failed to uninstall pluginresult. A later reinstall reported success, but browser control still failed.0x80073D02becauseOpenAI.Codexwas still running.OpenAI.Codex_26.814.5517.0was then successfully removed.OpenAI.ChatGPT-Desktop 1.2026.190.0(display name ChatGPT Classic) instead of restoringOpenAI.Codex. That package contained no Codex binaries/app-server resources.chrome-native-hosts-v2.jsonstill referenced the removed Codex package:Test-Pathon thatresourcesPathwas false, while every other path in the manifest entry existed.The error strings and
required_path_missingenum were also found in the activeextension-host.exebinary. At this point Chrome native messaging itself was demonstrably reachingextension-host.exe; the missing Codex package/resources path was the blocker.Correct-package recovery
Installing/opening the current non-Classic ChatGPT/Codex application restored:
with a populated:
The Chrome plugin cache regenerated to
26.818.22352;latestrepointed to that build; both copies ofchrome-native-hosts-v2.jsonbecame byte-identical and gained a new valid entry whoseresourcesPathresolves to the currentOpenAI.Codex_26.818.2872.0package. Native Messaging registration andcom.openai.codexextension.jsonwere valid.One noteworthy residual state: the regenerated v2 manifest retained the old stale entry for
26.814.41957/ removedOpenAI.Codex_26.814.5517.0alongside the new valid entry. The old entry has a deadpresence.pid; the new entry has a live app PID. So startup/self-healing added a valid entry but did not purge the dangling one.Live post-recovery validation
After restarting Chrome so the pre-repair
extension-host.execould not serve the test, a trivial Codex browser task succeeded:No native-host, app-server,
resourcesPath, or browser-control error occurred. A subsequent attachment-only validation also successfully claimed an existing normalhttps://claude.ai/chat/...Chrome tab and confirmed the exact expected session without typing or sending anything.So the repaired chain was verified end-to-end:
Product implications
This reproduction supports the lifecycle/self-healing concerns already described in this issue, and adds two points:
OpenAI.ChatGPT-Desktop/ ChatGPT Classic is a separate package and does not replace the missingOpenAI.Codexapp-server resources. A user following a generic ChatGPT reinstall path can therefore remain broken while believing the desktop app was reinstalled successfully. The recovery flow should identify/verify the required package identity when Codex browser integration is being repaired.No manual registry edits,
resourcesPathedits, junction edits, or hand-built native-host configuration were used to obtain the successful recovery.