list_connected_browsers reports isLocal: true for a browser on a different physical machine

Status Open
Reported on v2.1.201
Maintainer reply None cached
Activity 4 comments · opened Jul 6, 2026

Environment

Claude Code 2.1.201 (CLI), two Macs on the same LAN, extension on both, same account.

Bug

list_connected_browsers reports isLocal: true for both connected browsers:

[
  {"deviceId": "3112c087-…", "name": "Browser 1", "osPlatform": "macOS", "isLocal": true},
  {"deviceId": "3fe3204b-…", "name": "Browser 2", "osPlatform": "macOS", "isLocal": true}
]

One of them is on a different physical machine - confirmed by selecting it and navigating: the tab opened on the other computer.

View original on GitHub ↗

3 Comments

bertshim · 1 month ago

Same thing on Windows, so the platform:macos label may be too narrow.

Two machines, both Windows 10, same account, extension on both:

[{"deviceId":"4a1a86cb-...","name":"Browser 1","osPlatform":"Windows","isLocal":true},
 {"deviceId":"e1496311-...","name":"Browser 2","osPlatform":"Windows","isLocal":true}]

One of those is a laptop on a different desk. I didn't confirm it by navigating the way you did, because the reason I care is that I'm deliberately keeping two agent sessions off each other's machine, and opening a tab over there is the thing I'm trying to avoid.

Something that made this worse for me: the names aren't stable either. In one day I watched Browser 1 and Browser 2 swap which machine they pointed at, twice, while the deviceIds stayed put. So isLocal and name are both unsafe to select on, and deviceId is the only field I trust now.

jordan-brough · 1 month ago

I'm also hitting this.
Claude Code will open chrome on my iMac instead of the MacBook, without any prompt.

Here's a report from Claude Code in my terminal:
<blockquote>

list_connected_browsers reports isLocal: true for browsers on other machines

Summary
The Claude in Chrome MCP tool list_connected_browsers returns isLocal: true for Chrome
instances running on a different physical machine than the Claude Code session. With two
browsers connected — one genuinely local, one on another Mac — both returned isLocal: true
in the same call, so the field cannot discriminate at all.

Actual (two browsers, two different physical machines, one call)

[{"deviceId":"cce4ed85-...","name":"Browser 1","osPlatform":"macOS","connectedAt":1788177670288,"isLocal":true},
 {"deviceId":"9584195d-...","name":"Browser 2","osPlatform":"macOS","connectedAt":1788172685476,"isLocal":true}]

Expected
isLocal: true only for a browser on the same host as the agent. If that can't be determined
reliably, omit the field rather than assert true.

Evidence the machines differ
Each browser's self-reported hardware, vs. the host running the Claude Code shell:

| | 9584195d | cce4ed85 | Claude Code host |
|---|---|---|---|
| navigator.hardwareConcurrency | 8 | 10 | 10 (hw.ncpu) |
| Display | 2240x1260 @2x | 1710x1107 @2x | 2880x1864 panel |
| Verdict | remote (24" iMac) | genuinely local | — |

Core count is decisive: 8 != 10. cce4ed85 matches the host on cores, and its 1710x1107 @2x is
the host panel's "More Space" scaled mode. Timezone and Chrome major version matched across all
three, so neither discriminates.

Impact
chrome://version, which would report the host and profile path, is rejected by the extension
("Can't interact with browser-internal or unparseable URLs"), so isLocal is the only signal
available to the agent. A wrong value is load-bearing. In this session it caused the agent to:

  1. State as fact that it was driving the user's local Chrome.
  2. Open tabs on the wrong machine, then explain their absence with a wrong theory.
  3. Search the local machine's Chrome profile/history data for activity that had occurred on

another machine, and mistake a stale local record for its own tab.

The user, not the agent, identified that the browser was on a different computer. A correct
isLocal: false would have prevented all of it.

Repro

  1. Pair the Claude Chrome extension from Chrome on machine A.
  2. Run Claude Code on machine B (same Claude account).
  3. list_connected_browsers from machine B → machine A reports isLocal: true.
  4. Also pair Chrome on machine B → both entries report isLocal: true.

Secondary (device identity)
Device names are positional and unstable: the same deviceId was listed as "Browser 1", then
"Browser 2", then "Browser 1" again as other devices connected/disconnected. A name assigned by
the user during the switch_browser connect flow (which returned Connected to browser "<name>")
never appeared in list_connected_browsers, which kept returning "Browser 1". Stable, real device
names would make this class of mix-up self-evident.

Environment

  • Claude Code 2.1.251
  • Claude in Chrome extension (fcoeoabgfenejglbffodgkkbkcdhcgfn) 1.0.90 on the Claude Code host;

version on the remote browser is also 1.0.90 — verified by user, not exposed by any available tool

  • Chrome 152 on both (host 152.0.7977.65; remote Chrome/152.0.0.0, UA-reduced)
  • macOS 26.5.2 (25F84) arm64 on the host; remote reports macOS

</blockquote>

ykdojo · 21 days ago

I ended up building this with Claude Code as a workaround for this issue and #74671.

Showing cached comments. Read the full discussion on GitHub ↗