Chrome MCP: ENXIO error connecting to native host socket on Linux

Resolved 💬 3 comments Opened Feb 15, 2026 by tomsmithtld Closed Feb 19, 2026

Description

Chrome MCP (--chrome flag) fails to connect to the Chrome extension on Linux (Ubuntu 24.10, kernel 6.17.0-14-generic). The MCP server attempts to connect to the native host's Unix socket but gets ENXIO: no such device or address.

Environment

  • OS: Ubuntu 24.10, Linux 6.17.0-14-generic
  • Claude Code version: 2.1.42
  • Chrome: Google Chrome 134.x with Claude extension v1.0.50
  • Architecture: x86_64

Steps to Reproduce

  1. Start Claude Code with --chrome flag
  2. Open Chrome (Default profile) — extension activates, native host spawns
  3. Native host creates listening socket at /tmp/claude-mcp-browser-bridge-<user>/<PID>.sock
  4. Call any Chrome MCP tool (e.g., tabs_context_mcp)
  5. Get: "Browser extension is not connected"

Debug Findings

From the debug log:

2026-02-15T10:13:43.445Z [ERROR] Error: ENXIO: no such device or address, open '/tmp/claude-mcp-browser-bridge-sirbob/206532.sock'

The error shows open() syscall on a Unix domain socket. Unix sockets require connect() (via net.connect() in Node.js), not open() (via fs.open()). The open() call on a socket file returns ENXIO.

Verified working:

  • Native host process is running and listening on the socket (ss shows LISTEN state)
  • Chrome extension is installed and active (nativeMessaging permission granted)
  • Native messaging host manifest is correctly configured
  • Socket file exists with correct permissions (srw-------)

Verified broken:

  • MCP server (PID for --claude-in-chrome-mcp) has NO connection to the native host socket
  • MCP server is also NOT connected to bridge.claudeusercontent.com (160.79.104.10)
  • MCP server has only one TCP connection to a Google Cloud IP (34.149.66.137:443)
  • The ENXIO error occurs once and the MCP server does not retry

Expected Behavior

The MCP server should connect to the native host's Unix socket using a socket connection (not file open), and should retry if the initial connection fails.

Additional Context

  • Starting Claude Code BEFORE Chrome means the socket doesn't exist at MCP server startup. The MCP server should poll for new sockets.
  • The config: ~/.claude.json has cachedChromeExtensionInstalled: true and claudeInChromeDefaultEnabled: true
  • Running /chrome command does not trigger a reconnect attempt

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗