Claude in Chrome (v1.0.80): list_connected_browsers is stale/cached, isLocal misreports host, and name↔deviceId can't be joined
Product: Claude in Chrome extension (v1.0.80), used via Claude Code MCP tools (mcp__claude-in-chrome__*).
Filing here since this is the main public feedback repo — please redirect if the Chrome extension has a dedicated tracker.
Summary
Three related problems make it impossible to reliably identify which connected browser a deviceId refers to, and cause the agent to report wrong/garbled browser names.
1. list_connected_browsers returns stale, per-session-cached data
Repeated calls within a single session return identical connectedAt timestamps and never reflect names set via the connect/rename flow. It keeps showing the default Browser 1 / Browser 2 even after a browser has been renamed. The real, user-assigned name was confirmed via the switch_browser handshake, but list_connected_browsers never surfaces it.
2. isLocal is unreliable
Two connections both report isLocal: true, but the host machine runs only one Chrome instance (verified independently via the OS process tree). The second connection is a different physical machine signed into the same Claude account. isLocal appears to mean "same account", not "same host" — which is misleading for any logic that wants to target the local browser.
3. No way to join name ↔ deviceId
switch_browserreturns the real (user-assigned) name, but nodeviceId.list_connected_browsersreturns thedeviceId, but only the stale default name.
There is no tool output that contains both, so an agent cannot tell which named/physical browser a given deviceId is. The only workaround was to read the extension's own bridgeDeviceId off local disk to pin which deviceId is the local browser.
Expected
list_connected_browsersreturns live (non-cached) data.namereflects the user-assigned name (not a stale default).isLocalmeans same-host — or add a distinctsameHostfield, keepingisLocalfor same-account.switch_browserreturns thedeviceIdalongside the name, so name↔deviceId can be joined.
Environment
- Claude in Chrome extension v1.0.80
- macOS, Chrome (stable)
- Two browsers connected to the same account (one local, one remote)
3 Comments
Confirming this on extension v1.0.84 (macOS, Chrome stable) — the rename behaviour in §1/§3 is unchanged.
Repro from today's session
list_connected_browsers→ two entries,Browser 1/Browser 2.switch_browser→ user clicks Connect in the intended browser and types a name. The call returns the name correctly:``
``Connected to browser "MY"
list_connected_browsersimmediately after — and again a minute later, after unrelated tool calls — still returns:``
``Browser 1 (deviceId A)
Browser 2 (deviceId B)
The user-assigned name never appears.
The user has renamed these browsers repeatedly across past sessions with the same outcome, so this is not a one-off.
Data point on
isLocalIn this setup both connections really are on the same Mac (two Chrome profiles, one personal
MYand one for workWORK), and both reportisLocal: true— correct in this case. So the field is not always wrong, but as §2 notes it still cannot distinguish same-host from same-account, so it is unusable for targeting.Practical impact
Because the only stable identifier is an opaque
deviceId, the agent has to ask "Browser 1 or Browser 2?" — a question the user cannot answer either, since nothing inside Chrome shows which is which. In this session the user picked the wrong one, the agent opened a page inWORKinstead ofMY, and it surfaced only when an expected login session was missing. Workaround: hardcodingdeviceId→ purpose in the agent's long-term memory.Smallest fix that would unblock this
Have
switch_browserreturn thedeviceIdalongside the name. That alone makes name↔deviceId joinable, without touching the caching behaviour described in §1.**Follow-up: the mapping is recoverable locally, which makes the missing join look even more like a gap in the tool surface.**
In this setup the two "browsers" turned out to be two profiles of a single Chrome install — which is why both report
isLocal: true. Each profile'sdeviceIdis stored in the extension's ownLocal Extension Settings, so it can be joined to a profile with no tool support at all:Cross-referencing that with the profile display names in Chrome's
Local State(profile.info_cache[*].name) yields an exactprofile name ↔ deviceIdmapping — which is precisely whatlist_connected_browsersshould have returned in the first place.So the data exists on disk and is stable; only the API omits it. Having to shell out and grep a LevelDB store to answer "which browser is this?" seems a strong argument for returning the
deviceIdfromswitch_browser(or the real name fromlist_connected_browsers).Tested on extension v1.0.84, which the Chrome Web Store update endpoint currently reports as the latest available version — so the behaviour above is present in the newest release, not just in v1.0.80.
Windows 10 here. The part that broke for me is that the deviceId itself moved, which undercuts the workaround both comments land on.
On 2026-08-23 my desktop sat in
list_connected_browsersall day asa88b0d8a-.... Around 19:14 it stopped appearing. At 22:45 the same physical machine was back in the list under4a1a86cb-.... During the gap, three ids I had no record of showed up at once, one of which turned out to be a laptop I keep around for something unrelated entirely.I was already doing the hardcode-deviceId-to-purpose thing, in a written table, and I've had to rewrite that table twice in a week. The row that was correct in the morning pointed at nothing by the evening. I lost something like an hour and a half that day just working out which entry was the machine sitting in front of me.
I didn't port your
Local Extension Settingsgrep over to Windows, so I can't tell you whether the on-disk value rotated too, or whether only the API started reporting something different.Raising it because if the ids do rotate, returning the deviceId from
switch_browsermakes the join work inside one session but still not across sessions.