[BUG] Chrome native host enters zombie state without socket, blocking all browser automation

Resolved 💬 4 comments Opened Dec 26, 2025 by odysseyalive Closed Mar 1, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

The Chrome native host process (chrome-native-host) can enter a zombie state where it's running but hasn't created its Unix socket (/tmp/claude-mcp-browser-bridge-{user}).

When this happens, all browser automation fails with "Browser extension is not connected" even though:

  • The extension is installed and enabled
  • Chrome is running
  • The native messaging host config is correct
  • The native host process IS running (visible via ps aux | grep chrome-native-host)

The native host process appears healthy (not crashed), but the socket file doesn't exist, so Claude Code's MCP cannot communicate with the extension.

Root cause: The native host process started but never created its socket listener, leaving it in a zombie state that blocks all connections.

What Should Happen?

  1. The native host should reliably create its Unix socket on startup
  2. The extension should detect when the native host is in a bad state and respawn it
  3. There should be a health check / heartbeat mechanism between the extension and native host
  4. If the socket doesn't exist but the process is running, the system should self-recover

Error Messages/Logs

# MCP tool response:
Browser extension is not connected. Please ensure the Claude browser extension is installed and running.

# Diagnostic findings:
$ ps aux | grep chrome-native-host
francis  2827  0.0  0.6 22122708 204392 ?  Sl  12:01  0:01 /home/francis/.local/share/mise/installs/node/22.20.0/bin/node /home/francis/.local/share/pnpm/global/5/.pnpm/@anthropic-ai+claude-code@2.0.76/node_modules/@anthropic-ai/claude-code/cli.js --chrome-native-host

$ ls /tmp/claude-mcp-browser-bridge-francis
ls: cannot access '/tmp/claude-mcp-browser-bridge-francis': No such file or directory

# Native host process was running but socket did not exist

Steps to Reproduce

  1. Start Chrome with the Claude extension installed and enabled
  2. Start Claude Code and attempt to use browser automation (e.g., tabs_context_mcp)
  3. Observe "Browser extension is not connected" error
  4. Check for native host process: ps aux | grep chrome-native-host - process IS running
  5. Check for socket: ls /tmp/claude-mcp-browser-bridge-$USER - socket does NOT exist
  6. Kill the stale process: kill <pid>
  7. Toggle the Chrome extension off/on to respawn the native host
  8. Browser automation now works

Note: The exact trigger for the zombie state is unclear - it was discovered after the process had been running since system boot (several hours).

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.0.76 (Claude Code)

Platform

Anthropic API

Operating System

Other Linux

Terminal/Shell

Other

Additional Information

Environment details:

  • Linux: Arch Linux (kernel 6.17.9-arch1-1)
  • Chrome: 143.0.7499.169
  • Chrome extension version: 1.0.36
  • Native messaging host config: ~/.config/google-chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json

Workaround:

  1. Kill the zombie native host: kill $(pgrep -f chrome-native-host)
  2. Toggle the Chrome extension off/on in chrome://extensions to respawn

Suggested fix:
Add a health check / socket existence verification in the extension that respawns the native host if the socket is missing but the process is running (or stale).

View original on GitHub ↗

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