`claude --chrome` CLI never connects to healthy native host socket (browser extension stays disconnected)
Summary
On macOS, claude --chrome CLI fails to connect to the /tmp/claude-mcp-browser-bridge-$USER/{pid}.sock even when a healthy native host is listening. Result: mcp__claude-in-chrome__* tools always return Browser extension is not connected.
The root cause is CLI-side, not Chrome-side. Restarting claude --chrome, toggling the extension, reloading Chrome, and clearing stale sockets do not help.
Environment
- Claude Code: 2.1.113 (also reproduced on 2.1.112)
- macOS Darwin 23.6.0
- Chrome extension:
com.anthropic.claude_browser_extensionmanifest present and valid
Reproduction
- Run
claude --chrome - Open Chrome; extension is installed and enabled
- In the CLI session, call any
mcp__claude-in-chrome__*tool
Result: Browser extension is not connected.
Diagnostic evidence
Native host is healthy and listening:
$ pgrep -fl chrome-native-host
34267 /Users/.../.local/share/claude/versions/2.1.113 --chrome-native-host
$ ls -la /tmp/claude-mcp-browser-bridge-$USER/
srw------- 1 user wheel 0 34267.sock
$ lsof -p 34267 | grep sock
2.1.113 34267 user 4u unix ... /tmp/claude-mcp-browser-bridge-$USER/34267.sock
$ echo ping | nc -U -w 1 /tmp/claude-mcp-browser-bridge-$USER/34267.sock
(connects cleanly — socket is alive)
CLI never opens a connection to the bridge socket:
$ lsof -U -p <claude --chrome PID> | grep bridge
(empty — CLI has NO socket to bridge directory)
Tested with two separately-launched claude --chrome processes:
- PID A started before native host socket existed → did not connect (retry/scan never happened)
- PID B started after socket was already live → still did not connect
Neither CLI ever issued a connect() to the bridge socket, verified by lsof.
Expected
claude --chrome should either (a) scan /tmp/claude-mcp-browser-bridge-$USER/ for existing *.sock files on startup, or (b) periodically retry connecting after the extension spawns a native host.
Actual
CLI never attempts the connection, leaving the bridge permanently unusable within the session.
Workaround
Use Playwright MCP instead of claude --chrome.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗