[BUG] Claude in Chrome: left_click reports success but is dropped on a hidden MCP tab until any screenshot is taken (macOS, extension 1.0.100)
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
On a newly created Claude in Chrome tab, computer → left_click with a ref returns Clicked on element ref_N, but the page receives no click event. Read tools (find, read_page, get_page_text, javascript_tool) work normally on the same tab.
After any computer → screenshot of that tab (even scale: 0.1), the identical click lands on the element's exact centre, and later clicks in that tab keep working.
Page-side measurements, same tab, same session:
| State | visibilityState | document.hasFocus() | rAF callbacks / s | Click delivered |
|---|---|---|---|---|
| Before any screenshot | hidden | false | 0 | No (0 events) |
| After one screenshot (scale: 0.1) | hidden | true | 0 | Yes, at the exact centre |
The tab stays hidden and still doesn't render after the screenshot. The only change visible from the page is hasFocus() going from false to true. That fits the screenshot path enabling focus emulation for the tab, and the click path not doing so.
Dropped, not misdirected. For this I used a page that is a 12 × 30 grid of buttons with a capture-phase click listener on document, so a delivered click is logged wherever it lands. Across 11 dropped clicks on that grid in 5 fresh tabs, nothing was recorded: no hits on wrong elements, and nothing in a second open tab of the same page. The failure is safe, but silent: the agent believes it acted when it didn't.
Frequency: clicks were dropped in 7 of 8 fresh tabs (14 dropped clicks in total). The exception was one tab whose visibility and focus state I didn't record.
Possible pointer (from reading the installed bundle, assets/mcpPermissions-*.js, extension 1.0.100, so may be off): the screenshot path calls drawHiddenTab(...) when the tab reports hidden, and the scroll and hover paths dispatch with drawIfHeld: true. click() dispatches mousePressed/mouseReleased with neither.
Impact: the tool result says the click succeeded, so the agent only finds out from a later read that nothing happened, for example a form that wasn't submitted or a link that didn't navigate. That costs extra turns, and an agent that doesn't re-check reports work it didn't do. Seen in several headless benchmark runs.
Workaround: take one computer screenshot of the tab (scale: 0.1 is enough) before the first click.
What Should Happen?
Clicks are delivered on hidden MCP tabs, as screenshot, scroll and hover already manage, for example by enabling focus emulation or forcing a draw before dispatch. Failing that, left_click should return an error when the event isn't delivered, instead of Clicked on element ….
Error Messages/Logs
None. The tool result is Clicked on element ref_28.
Steps to Reproduce
- Save this page as
index.htmland serve its folder, e.g.python3 -m http.server 8800:
``html``
<!doctype html><meta charset="utf-8"><title>click probe</title>
<button id="target" style="margin:120px;padding:20px 40px">Target</button>
<script>
window.__log = [];
document.addEventListener('click', e => __log.push({
target: e.target.id || e.target.tagName, x: e.clientX, y: e.clientY }), true);
</script>
- Start
claude --chromeand keep Chrome behind another app window (the normal setup while working in an editor). navigate→http://localhost:8800/(new tab group).find→ "Target button" →ref_N.javascript_tool→({v: document.visibilityState, f: document.hasFocus()})→{v: "hidden", f: false}.computerleft_clickref: ref_N→Clicked on element ref_N.javascript_tool→__log→[](not delivered).computerscreenshotscale: 0.1.javascript_tool→{v: "hidden", f: true}.computerleft_clickref: ref_N→__lognow has one entry at the button's centre.
Claude Model
Not sure / Multiple models (tool behaviour; seen with Sonnet in headless runs and Opus interactively)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.296 (Claude Code). Re-verified with the minimal page above in a fresh claude -p --chrome session on this version.
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
VS Code integrated terminal
Additional Information
| | |
|---|---|
| Claude in Chrome extension | 1.0.100 |
| Chrome | 154.0.8037.98 |
| macOS | 26.5.2 (25F84), 2× Retina display |
| Date | 2026-10-10 |
The minimal repro page (bench/fixtures/click-probe.html) and the benchmark where the dropped clicks showed up are at https://github.com/cr1707/claude-chrome-speed.
Related, possibly the same root state:
- #97751: MCP tabs are created in the background and stay
hidden. Same tab state; there the symptom is blank screenshots. - #88413: all input silently dropped (Windows, "Debugger is not attached"). Same symptom, but there input fails on every tab even though screenshots work.
- #96797:
left_clickfalse success on non-permitted origins. Different trigger.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗