[BUG] Orphaned `chrome-native-host` processes accumulate and crash Chrome
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?
Orphaned chrome-native-host processes accumulate and crash Chrome
Description
The Chrome extension's native messaging host (chrome-native-host) leaves orphaned processes behind after disconnections. Over time these accumulate silently and appear to destabilise Chrome, causing repeated crashes - particularly under moderate tab load (7-8 tabs).
Steps to reproduce
- Install Claude desktop app + Chrome extension
- Use Chrome normally over 1-2 days with several tabs open
- Run
ps aux | grep chrome-native-host- multiple stale processes accumulate
Observed behaviour
Two orphaned chrome-native-host processes were found running simultaneously, one spawned ~18 hours before the other. Neither had a live Chrome connection. Chrome was crashing repeatedly until both were manually killed.
$ ps aux | grep chrome-native-host
peterduffy 96058 0.0 0.0 435322992 3856 ?? S Wed06PM 0:00.00 /Applications/Claude.app/Contents/Helpers/chrome-native-host chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/
peterduffy 13725 0.0 0.0 435322144 3856 ?? S Thu04AM 0:00.00 /Applications/Claude.app/Contents/Helpers/chrome-native-host chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/
Expected behaviour
chrome-native-host should detect when its parent Chrome connection (stdin/stdout pipe) has closed and self-terminate. Only one instance should be running at a time.
Workaround
Kill stale processes manually:
pkill -f chrome-native-host
Chrome re-spawns a fresh instance on the next extension interaction.
Environment
- Claude desktop app: 1.1.2321
- Chrome: 145.0.7632.68
- Chrome extension ID:
fcoeoabgfenejglbffodgkkbkcdhcgfn - macOS: 26.2 (25C56)
- Architecture: arm64 (Apple Silicon)
- Native host manifest:
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json - Native host binary:
/Applications/Claude.app/Contents/Helpers/chrome-native-host(universal binary, correctly configured)
What Should Happen?
z
Error Messages/Logs
The native messaging protocol uses stdin/stdout. When Chrome closes
a connection it closes the stdin pipe, so `chrome-native-host`
should:
1. **Exit on stdin EOF.** Poll or read stdin and terminate
immediately when the pipe closes. This is the standard
native-messaging contract - if stdin closes, the host has no
parent.
2. **Guard against duplicate instances.** Use a PID file or lock so
that a new spawn detects and reaps any previous instance before
starting.
3. **Time out on idle.** If no message arrives within a reasonable
window (e.g. 30-60 s), treat the connection as dead and exit rather
than blocking indefinitely on a stale pipe.
Any one of these would prevent orphan accumulation. Together they
would make the problem impossible.
### Workaround
Kill stale processes manually:
pkill -f chrome-native-host
Steps to Reproduce
Orphaned chrome-native-host processes accumulate and crash Chrome
Description
The Chrome extension's native messaging host (chrome-native-host) leaves orphaned processes behind after disconnections. Over time these accumulate silently and appear to destabilise Chrome, causing repeated crashes - particularly under moderate tab load (7-8 tabs).
Steps to reproduce
- Install Claude desktop app (1.1.2321) and the Claude Chrome extension.
- Open Chrome with 7-8 tabs and use it normally for a day or two. No specific interaction with the extension is required - just normal browsing with the extension installed.
- Chrome will crash or become unresponsive at some point. Reopen Chrome and continue.
- After one or more crash/restart cycles, check for orphaned processes:
``bash``
ps aux | grep chrome-native-host | grep -v grep
- Multiple
chrome-native-hostprocesses will be running, each from a different spawn time. Only one (at most) has a live connection.
Note: The issue is timing-dependent and not instant to trigger. It appears to require at least one Chrome crash or restart while the extension is active, which leaves a stale process behind. Each subsequent cycle adds another.
Observed behaviour
Two orphaned chrome-native-host processes were found running simultaneously, one spawned ~18 hours before the other. Neither had a live Chrome connection. Chrome was crashing repeatedly until both were manually killed.
$ ps aux | grep chrome-native-host
peterduffy 96058 0.0 0.0 435322992 3856 ?? S Wed06PM 0:00.00 /Applications/Claude.app/Contents/Helpers/chrome-native-host chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/
peterduffy 13725 0.0 0.0 435322144 3856 ?? S Thu04AM 0:00.00 /Applications/Claude.app/Contents/Helpers/chrome-native-host chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/
Expected behaviour
The native messaging protocol uses stdin/stdout. When Chrome closes a connection it closes the stdin pipe, so chrome-native-host should:
- Exit on stdin EOF. Poll or read stdin and terminate immediately when the pipe closes. This is the standard native-messaging contract - if stdin closes, the host has no parent.
- Guard against duplicate instances. Use a PID file or lock so that a new spawn detects and reaps any previous instance before starting.
- Time out on idle. If no message arrives within a reasonable window (e.g. 30-60 s), treat the connection as dead and exit rather than blocking indefinitely on a stale pipe.
Any one of these would prevent orphan accumulation. Together they would make the problem impossible.
Workaround
Kill stale processes manually:
pkill -f chrome-native-host
Chrome re-spawns a fresh instance on the next extension interaction.
Environment
- Claude desktop app: 1.1.2321
- Chrome: 145.0.7632.68
- Chrome extension ID:
fcoeoabgfenejglbffodgkkbkcdhcgfn - macOS: 26.2 (25C56)
- Architecture: arm64 (Apple Silicon)
- Native host manifest:
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json - Native host binary:
/Applications/Claude.app/Contents/Helpers/chrome-native-host(universal binary, correctly configured)
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.41
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗