[BUG] Chrome native host crashes on Windows with Bun panic — "Browser extension is not connected"

Resolved 💬 3 comments Opened Jan 30, 2026 by wasbt Closed Feb 3, 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 integration (Claude in Chrome MCP) is completely broken on Windows. The --chrome-native-host process crashes immediately on startup due to a Bun runtime panic when attempting to create a Windows named pipe (\\.\pipe\claude-mcp-browser-bridge-<USERNAME>).

The only error users see is the generic message:

Browser extension is not connected. Please ensure the Claude browser extension is installed and running.

This gives no indication that the native host binary is crashing, making the issue extremely difficult to diagnose. Everything else is configured correctly — registry keys, manifest JSON, Chrome extension, batch wrapper — but the binary itself panics on startup.

Note: If the user also has Claude Desktop (Cowork) installed, there is a compounding issue where both products register competing native messaging hosts for the same Chrome extension, leading to silent routing conflicts. See "Additional Information" below.

What Should Happen?

Running claude.exe --chrome-native-host should successfully create the named pipe \\.\pipe\claude-mcp-browser-bridge-<USERNAME> and keep the process alive, allowing the Chrome extension to connect and relay messages to Claude Code's MCP server.

Chrome MCP tools (e.g. tabs_context_mcp) should return tab information instead of "Browser extension is not connected."

Error Messages/Logs

$ "C:\Users\{{User}}\.local\bin\claude.exe" --chrome-native-host

[Claude Chrome Native Host] Initializing...
[Claude Chrome Native Host] Creating socket listener: \\.\pipe\claude-mcp-browser-bridge-{{MyMachineUserName}}
============================================================
Bun v1.3.5 (1e86cebd) Windows x64 (baseline)
Windows v.win11_dt
CPU: sse42 avx avx2 avx512
Args: "C:\Users\{{UserName}}\.local\bin\claude.exe" "--chrome-native-host"
Features: Bun.stderr(2) Bun.stdin(2) Bun.stdout(2) jsc standalone_executable
Builtins: "bun:main" "node:assert" "node:async_hooks" "node:buffer" "node:child_process" "node:constants" "node:crypto" "node:domain" "node:events" "node:fs" "node:fs/promises" "node:http" "node:https" "node:module" "node:net" "node:os" "node:path" "node:path/posix" "node:path/win32" "node:perf_hooks" "node:process" "node:querystring" "node:stream" "node:timers/promises" "node:tls" "node:tty" "node:url" "node:util" "node:zlib" "node:worker_threads" "undici" "ws" "node-fetch" "node:inspector" "node:http2"
Elapsed: 1187ms | User: 1578ms | Sys: 531ms

panic(main thread): Internal assertion failure
oh no: Bun has crashed. This indicates a bug in Bun, not your code.

To send a redacted crash report to Bun's team,
please file a GitHub issue using the link below:

 https://bun.report/1.3.5/XXXXXXXX

Steps to Reproduce

  1. Install Claude Code CLI on Windows:

``
npm install -g @anthropic-ai/claude-code
``

  1. Install the "Claude in Chrome" extension from the Chrome Web Store (ID: fcoeoabgfenejglbffodgkkbkcdhcgfn)
  2. Open Chrome, click the extension icon to activate it
  3. Run Claude Code and attempt any Chrome MCP tool — get "Browser extension is not connected"
  4. To confirm the crash directly, run in a terminal:

``
"C:\Users\Admin\.local\bin\claude.exe" --chrome-native-host
``
The process will crash immediately with the Bun panic shown above.

Debugging steps performed to isolate the root cause:

| Check | Status |
|---|---|
| Registry key HKCU\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.anthropic.claude_code_browser_extension | OK |
| Manifest JSON at %APPDATA%\Claude Code\ChromeNativeHost\com.anthropic.claude_code_browser_extension.json | OK |
| Batch wrapper at ~/.claude/chrome/chrome-native-host.bat points to correct binary | OK |
| Chrome extension installed with correct ID | OK |
| Named pipe \\.\pipe\claude-mcp-browser-bridge-{{CurrentUse}} exists | NOT CREATED |
| chrome-native-host process running | NOT RUNNING |
| Manual execution of claude.exe --chrome-native-host | CRASHES |

Claude Model

Other

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.25

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

PowerShell

Additional Information

Cowork / Claude Desktop Conflict (compounding issue)

If a user also has Claude Desktop (Cowork) installed, both products register competing native messaging hosts for the same Chrome extension:

| Product | Manifest Name | Socket/Pipe Location |
|---|---|---|
| Claude Desktop | com.anthropic.claude_browser_extension.json | /tmp/claude-mcp-browser-bridge-$USER/<PID>.sock |
| Claude Code CLI | com.anthropic.claude_code_browser_extension.json | \\.\pipe\claude-mcp-browser-bridge-<USER> (Windows) |

Suggestions

Chrome can silently pick the wrong native host, routing messages to the wrong product. This makes debugging even harder because everything _appears_ configured correctly. Even after disabling the Desktop host (removing its registry key and renaming its manifest), the Claude Code native host still crashes.

  1. Fix the Bun crash — the named pipe creation on Windows triggers a Bun runtime assertion failure. Upgrading the bundled Bun version or working around the pipe creation may resolve this.
  2. Improve error messaging — when the native host crashes, surface it instead of the generic "Browser extension is not connected." For example: _"Native host process crashed — run claude --chrome-native-host to see the error."_
  3. Add a diagnostic command — e.g. claude --diagnose-chrome that checks: registry keys, manifest files, extension installation, native host process health, and pipe existence.
  4. Document the Cowork conflict — warn users when both Claude Desktop and Claude Code are installed, or auto-detect and surface the conflict.

View original on GitHub ↗

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