You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Chrome plugin file upload setFiles fails with Not allowed and upload forms can hang #21597
The Chrome plugin can connect to Chrome and navigate normally, but repeatedly hangs/timeouts on an authenticated invoice upload form when trying to inspect controls, upload files, or capture a visual screenshot.
This blocked completing a browser task that required uploading receipt images through @Chrome only.
What happened
Using the Chrome plugin in Codex Desktop:
browser.user.openTabs() worked.
browser.tabs.list() / browser.tabs.get() worked.
Navigation to https://www.zoetispetcare.com/account/rewards worked.
Reading body.innerText() worked on the rewards dashboard and the initial invoice instructions page.
Clicking through to the invoice submission flow worked.
Once on the actual invoice form (/account/rewards/invoice), repeated Chrome-plugin calls timed out until the Node runtime reset.
tab.playwright.waitForEvent("filechooser", ...) combined with clicking upload text/buttons
tab.cua.get_visible_screenshot()
tab.dom_cua.get_visible_dom()
The timeout pattern was consistent: the page stayed open in Chrome, but the plugin call hung until the tool reported a timeout and kernel/runtime reset.
Expected behavior
The Chrome plugin should either:
allow normal Playwright/CUA interaction with the upload form, including file chooser upload, or
fail quickly with an actionable error explaining that the page/frame/control cannot be automated.
It should not hang until the runtime resets.
Actual behavior
Chrome-plugin calls against the invoice form repeatedly timed out. This made it impossible to continue the task through @Chrome, despite the browser tab being navigated and logged in successfully.
Environment
Codex Desktop on macOS
Chrome plugin / Codex Chrome Extension
Browser: Google Chrome
Site: authenticated Zoetis Petcare Rewards invoice submission form
Date observed: 2026-05-07
Notes
This may be related to file upload controls, authenticated pages, page scripts, or the plugin's DOM/CUA bridge on this specific form. The important product issue is that the plugin gets stuck instead of returning a bounded failure.
changed the title [-]Chrome plugin times out on authenticated invoice upload form[/-][+]Chrome plugin file upload setFiles fails with Not allowed and upload forms can hang[/+]on May 7, 2026
The Chrome plugin connects successfully and claims the already signed-in Sleek dashboard tab.
Initial screenshot and DOM inspection work.
Start waitForEvent("filechooser"), click the page's image-attachment control, and call setFiles(...) with five synthetic/demo-safe PNGs.
The chooser reports success.
The next domSnapshot() call hangs until timeout and resets the browser-control runtime.
Chrome remains visible but covered by a gray locked overlay, preventing normal user interaction.
The failure persisted after Chrome/Codex/Windows restarts and plugin reinstallation. Local extension and native-host checks passed. No credentials or private/customer data were uploaded.
This matches the core behavior reported here—normal authenticated navigation followed by upload-page bridge timeout—but also shows the issue on Windows, in newer Codex/extension versions, and with a post-timeout Chrome lock that does not reliably release user control. Related Windows bridge/uninstall report: #21670.
The documented chooser flow was attempted first against the input and then independently against the visible label:
constchooserPromise=tab.playwright.waitForEvent("filechooser",{timeoutMs: 10000});awaitinput.click({force: true});// the label click was tested separatelyconstchooser=awaitchooserPromise;
Both variants failed with:
Timed out after 3000ms waiting for file chooser.
The observed 3-second timeout also ignored the requested timeoutMs: 10000.
Chrome's profile state showed file URL access enabled (newAllowFileAccess: true). Extension and native-host health checks passed.
Raw CDP DOM.setFileInputFiles was then rejected by the browser client with:
This method is not supported through raw CDP. Use tab.playwright.waitForEvent("filechooser") and chooser.setFiles(...) instead.
This leaves no working Chrome-only upload path: the supported chooser event never arrives, while the lower-level file-input command redirects back to the same failing chooser flow. The documented native-picker fallback is also blocked on this Windows setup by the separate browser URL-confidence issue tracked in #25271.
Expected behavior: the chooser event should fire and permit setFiles(...), or fail with a specific permission/capability error. The configured timeout should also be honored.
No credentials, private report content, or real user/customer data are included in this reproduction.
Follow-up from the same Windows machine (observed 2026-07-14): I can now distinguish the permission failure from a control-targeting failure, and I have a successful Chrome-only upload path.
Environment
Windows NT 10.0.26200 x64
Chrome plugin: 26.707.62119
ChatGPT Chrome Extension enabled in the Default profile
Extension/native-host health checks pass
Allow access to file URLs was already enabled
Successful isolation test
A plain local <input type="file"> served from http://127.0.0.1 worked end to end:
The page observed the expected file name, size and MIME type, with no browser warnings/errors. This proves the extension permission and setFiles path were functional in the same Chrome session.
Authenticated HTTPS form
The failing form used a visually hidden file input and a visible associated label:
The input was technically display: block but opacity: 0 and approximately 0.09375 × 0.09375 CSS pixels. Waiting for filechooser and clicking the input had previously produced the chooser timeout. Using the visible associated label instead worked:
Afterward the form set C:\\fakepath\\test.zip, marked the field changed, and appended the next empty attachment input. No console warnings/errors were recorded.
Product implication
In this failure mode, file-URL permission is not the root cause. The current troubleshooting collapses “chooser never opened” and “setFiles was denied” into the same permission advice. A useful fix would be to:
distinguish chooser-event timeout from setFiles permission/capability failure;
automatically prefer a visible label[for] when the underlying file input is effectively non-interactable;
honor the requested timeout and return a bounded actionable error instead of resetting the runtime.
No credentials, private report content, target name, or customer data are included here.
Activity
github-actions commentedon May 7, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
[-]Chrome plugin times out on authenticated invoice upload form[/-][+]Chrome plugin file upload setFiles fails with Not allowed and upload forms can hang[/+]markmdev commentedon May 7, 2026
Additional repro detail: this is not limited to the authenticated Zoetis form.
I created a minimal local page served from
http://127.0.0.1with a plain file input:Using the Chrome plugin against that simple page:
Observed result:
So there appear to be two related behaviors:
chooser.setFiles(...)fails withNot allowed.Environment details from the local checks:
147.0.7727.1381.1.4_0node scripts/...bfeller05 commentedon Jul 10, 2026
Confirming the same upload-timeout pattern on Windows and a different authenticated upload surface (observed July 10, 2026).
Environment
26.707.3748.00.144.0150.0.7871.1011.2.27203.26575_0https://sleek.design/dashboardReproduction
waitForEvent("filechooser"), click the page's image-attachment control, and callsetFiles(...)with five synthetic/demo-safe PNGs.domSnapshot()call hangs until timeout and resets the browser-control runtime.The failure persisted after Chrome/Codex/Windows restarts and plugin reinstallation. Local extension and native-host checks passed. No credentials or private/customer data were uploaded.
This matches the core behavior reported here—normal authenticated navigation followed by upload-page bridge timeout—but also shows the issue on Windows, in newer Codex/extension versions, and with a post-timeout Chrome lock that does not reliably release user control. Related Windows bridge/uninstall report: #21670.
mySebbe commentedon Jul 13, 2026
Confirming a second Windows failure mode on an authenticated HTTPS upload form (observed July 13, 2026).
Environment
10.0.26200x6426.707.8168.026.707.30751150.0.7871.1151.2.27203.26575_0Reproduction
timeoutMs: 10000.newAllowFileAccess: true). Extension and native-host health checks passed.DOM.setFileInputFileswas then rejected by the browser client with:This leaves no working Chrome-only upload path: the supported chooser event never arrives, while the lower-level file-input command redirects back to the same failing chooser flow. The documented native-picker fallback is also blocked on this Windows setup by the separate browser URL-confidence issue tracked in #25271.
Expected behavior: the chooser event should fire and permit
setFiles(...), or fail with a specific permission/capability error. The configured timeout should also be honored.No credentials, private report content, or real user/customer data are included in this reproduction.
mySebbe commentedon Jul 13, 2026
Follow-up from the same Windows machine (observed 2026-07-14): I can now distinguish the permission failure from a control-targeting failure, and I have a successful Chrome-only upload path.
Environment
10.0.26200x6426.707.62119DefaultprofileSuccessful isolation test
A plain local
<input type="file">served fromhttp://127.0.0.1worked end to end:The page observed the expected file name, size and MIME type, with no browser warnings/errors. This proves the extension permission and
setFilespath were functional in the same Chrome session.Authenticated HTTPS form
The failing form used a visually hidden file input and a visible associated label:
The input was technically
display: blockbutopacity: 0and approximately0.09375 × 0.09375CSS pixels. Waiting forfilechooserand clicking the input had previously produced the chooser timeout. Using the visible associated label instead worked:Afterward the form set
C:\\fakepath\\test.zip, marked the field changed, and appended the next empty attachment input. No console warnings/errors were recorded.Product implication
In this failure mode, file-URL permission is not the root cause. The current troubleshooting collapses “chooser never opened” and “
setFileswas denied” into the same permission advice. A useful fix would be to:setFilespermission/capability failure;label[for]when the underlying file input is effectively non-interactable;No credentials, private report content, target name, or customer data are included here.