ChromeDevTools / ChromeDevTools/chrome-devtools-mcp
Password dialogs in Chrome might prevent input events dispatched by chrome-devtools-mcp
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 52.3k
- Forks
- 4.3k
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 83
Description
Summary
After certain tab events, ALL CDP-injected input to that tab — click, fill, press_key — stops reaching the renderer, while the MCP tools keep returning success ("Successfully clicked on the element"). The result is silent false positives: an agent-driven test concludes "the app is broken / the button stalls" when in fact the input was never delivered.
Environment
- chrome-devtools-mcp via npx (current as of 2026-06), macOS (darwin 25.5), Chrome 149
- Dedicated profile via
--userDataDir
Symptom detail
take_snapshotworks, uids are fresh, the target is a plain<button onClick={…}>.clickon the button returns success — but a capture-phase probe registers zero DOM events:// via evaluate_script, before clicking: window.__probe = []; ['pointerdown','mousedown','mouseup','click'].forEach(t => document.addEventListener(t, e => window.__probe.push(t), true)); // → after the MCP click tool reports success, window.__probe is still []evaluate_scriptwithelement.click()works immediately (so the page, the handler, and the element are fine).- Hit-testing exonerated:
document.elementFromPoint(centerX, centerY)returns the target button. - Mouse AND keyboard input are affected once the tab enters this state.
Triggers observed
The tab enters the dead-input state after:
- Completing a sign-in step on a page (input worked for the credential fill + submit, then died mid-page with no navigation); subsequent clicks on the consent dialog of the same page never arrive.
- Re-navigating an existing tab via
navigate_page(dead immediately after).
A fresh new_page tab restores input delivery until a trigger recurs.
Repro sketch (any login→consent flow should do)
new_page→ a login page;fillcredentials (works),clicksubmit (works).- Same-page consent/confirm dialog renders.
clickthe confirm button → tool reports success, page state unchanged, zero network, zero console, zero DOM events (probe above).evaluate_scriptelement.click()→ flow completes instantly.
Possibly related
#1794 — the stacking "Allow remote debugging?" native popup. A native Chrome UI bubble stealing focus would explain exactly this signature (trusted/CDP input swallowed, JS-dispatched events unaffected). We could not visually confirm a bubble (headless-ish agent usage), but the save-password bubble was also on our suspect list.
Why this matters
Agent loops trust the tool result. "Successfully clicked" + no effect sent us debugging the application for a stall that didn't exist. If delivery can't be guaranteed, an error or warning from the click tool when the dispatch target tab has a native UI overlay / lost input focus would prevent the false positive.
Workaround we use
Capture-phase event probe before concluding anything from a no-op click; evaluate_script DOM clicks for post-login interactions; one fresh new_page per flow; verify outcomes out-of-band.
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 click, fill, and press_key tool entry points and trace how they dispatch input through Chrome DevTools Protocol. Reproduce the login-to-consent and navigate_page flows while checking the capture-phase probe and tool results. Done means the dead-input condition is understood and the tools no longer silently report successful delivery when input was swallowed, with a regression check for the reported triggers.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- devtools, testing-qa, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100