[BUG] Chrome native host crashes with EADDRINUSE on Windows - named pipe conflict
Bug Description
Claude in Chrome extension cannot connect to Claude Code CLI on Windows. The native messaging host (chrome-native-host.bat) crashes with EADDRINUSE because it tries to create a named pipe that Claude Code has already created, instead of connecting to it.
Environment
- Claude Code: 2.1.33
- OS: Windows 11 (NT 10.0.26200.0)
- Chrome: 144.0.7559.133
- Node.js: v23.9.0
- Extension: Claude in Chrome (Beta) -
fcoeoabgfenejglbffodgkkbkcdhcgfn - Claude Desktop: Installed (v1.1.1520) but NOT running during tests
Steps to Reproduce
- Install Claude in Chrome extension
- Start Claude Code CLI (
claudein terminal) - Extension shows as installed in
/chromesettings - Any
mcp__claude-in-chrome__*tool call returns "Browser extension is not connected"
Diagnostic Details
Native host crash log
Running the native host manually produces:
[Claude Chrome Native Host] Initializing...
[Claude Chrome Native Host] Creating socket listener: \.\pipe\claude-mcp-browser-bridge-feder
[Claude Chrome Native Host] Socket server error: Error: listen EADDRINUSE: address already in use \.\pipe\claude-mcp-browser-bridge-feder
at Server.setupListenHandle [as _listen2] (node:net:1915:21)
at listenInCluster (node:net:1994:12)
at Server.listen (node:net:2116:5)
at file:///C:/Users/feder/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:6226:1029
Root cause
Claude Code creates the named pipe \.\pipe\claude-mcp-browser-bridge-{username}. When Chrome spawns the native messaging host (via chrome-native-host.bat), the host also attempts to listen() on the same pipe name → EADDRINUSE crash.
The native host should connect to the existing pipe as a client, not try to create a new server on it.
Configuration verified
- Registry:
HKCU\Software\Google\Chrome\NativeMessagingHosts\com.anthropic.claude_code_browser_extension✅ (points to correct manifest) - Manifest:
C:\Users\feder\AppData\Roaming\Claude Code\ChromeNativeHost\com.anthropic.claude_code_browser_extension.json✅ - Bat file:
C:\Users\feder\.claude\chrome\chrome-native-host.bat✅ - Node.exe path:
C:\Program Files\nodejs\node.exe✅ - Extension installed and functional (side panel works) ✅
- Logged into claude.ai ✅
Troubleshooting attempted
- [x] Restarted Chrome
- [x] Restarted Claude Code
- [x]
/chrome→ Reconnect extension - [x] Killed all Chrome and Claude processes, restarted both
- [x] Temporarily disabled Claude Desktop native host (renamed
.json→.json.bak) - [x] Copied manifest to
%APPDATA%\Google\Chrome\NativeMessagingHosts\ - [x] No other Claude Code sessions running
None of the above resolved the issue. The EADDRINUSE error persists as long as Claude Code is running (which is expected, since Claude Code owns the pipe).
Expected Behavior
The native messaging host should connect to Claude Code's existing named pipe as a client, enabling the extension ↔ Claude Code bridge.
Related Issues
- #23218, #21363, #22052, #21300 - Similar "not connecting" reports on Windows
- #20546 - Desktop/Code conflict for same extension
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗