Arc: extension connects but all commands time out; /chrome always launches Chrome (hardcoded detection order)
Environment
- Claude Code 2.1.212 (Homebrew cask), macOS (Darwin 25.5.0)
- Claude in Chrome extension 1.0.81
- Browsers installed: Arc (system default, extension installed + signed in), Google Chrome (initially without the extension)
- Docs state Arc is supported: https://code.claude.com/docs/en/chrome.md ("Claude Code also detects the extension and sets up the connection in other Chromium-based browsers, including Brave, Arc, Vivaldi, and Opera.")
Issue 1 — Arc: extension connects at account level, but every command times out
With the extension installed, signed in, and current in Arc, and the native messaging host manifest present in ~/Library/Application Support/Arc/User Data/NativeMessagingHosts/:
- The Arc instance appears in
list_connected_browsers(isLocal: true) and can be selected. - Every actual command (
tabs_context_mcpwithcreateIfEmpty: true, tried repeatedly) times out with "The extension is connected but the page may be loading, unresponsive, or waiting on a permission prompt". No permission prompt is visible anywhere in Arc. - Installing the extension in Google Chrome instead worked immediately — same machine, same session, first try.
Issue 2 — /chrome always launches Google Chrome, even when Arc is the system default browser
BROWSER_DETECTION_ORDER is hardcoded to ["chrome","brave","arc","edge","chromium","vivaldi","opera"] and detectAvailableBrowser() returns the first browser found in /Applications. If Chrome is installed but unused (extension not even installed in it), every setup/reconnect flow still opens Chrome. There is no setting, flag, or env var to prefer a different browser, and the system default browser is ignored. Suggestion: prefer the OS default browser, or the browser where the extension is actually installed, or offer a picker.
Issue 3 — Native host manifests not written by in-session /chrome
In a session started without --chrome, running /chrome and walking the setup repeatedly never wrote com.anthropic.claude_code_browser_extension.json to any browser directory (and cachedChromeExtensionInstalled stayed false). Only relaunching with claude --chrome wrote the manifests (correctly, to all browsers' directories at once). If /chrome in-session is supposed to trigger the native host install, it didn't; if it isn't, the UI gives no hint that a relaunch with --chrome is required.
Issue 4 — UX: connected browsers are indistinguishable
Connected browsers are named "Browser 1" / "Browser 2" with UUID deviceIds. Users cannot tell which is which, and the ordinal names reshuffle when a new browser connects (the newest instance took over the name "Browser 1", demoting the existing one to "Browser 2"). Please name instances by browser (e.g. "Arc", "Google Chrome") + profile, which the extension can read from its own environment.
🤖 Filed via Claude Code on the user's behalf.