Agent skill

claude-chrome-debugging

Diagnoses and fixes Claude in Chrome extension issues including zombie MCP processes, action failures, and extension conflicts

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/claude-chrome-debugging

SKILL.md

Claude Chrome Debugging

Troubleshoot Claude in Chrome browser automation issues.

Symptoms & Causes

Symptom Likely Cause
navigate/form_input work but click/screenshot/javascript_exec fail with "Cannot access a chrome-extension:// URL" CDP debugger conflict (other extensions) or zombie MCP processes
Extension completely unresponsive MCP server not running or Chrome extension disabled
Actions work intermittently Multiple MCP processes competing

Diagnostic Steps

1. Check for Zombie MCP Processes

bash
ps aux | grep -i "claude-in-chrome-mcp" | grep -v grep

Expected: 1-2 processes (one per active Claude Code session)

Problem: Multiple processes, especially with old timestamps (days ago)

2. Check Active Claude Code Sessions

Count your actual terminal sessions running Claude Code. Compare to MCP process count.

3. Verify Chrome Extension Status

In Chrome: chrome://extensions/ → Find "Claude in Chrome" → Ensure enabled

4. Check for Conflicting Extensions

Chrome only allows one extension to attach the CDP debugger per tab (root cause analysis). Extensions that conflict:

Extension Type Examples
DevTools React DevTools, Vue DevTools, Redux DevTools
Automation Selenium IDE, Puppeteer Recorder
Page tools Screenshot tools, page inspectors
Security Some password managers (ref)

Any extension using chrome.debugger API will conflict.

Fixes

Fix CDP Conflicts (Most Common)

Disable conflicting extensions (confirmed by multiple users):

  1. Go to chrome://extensions/
  2. Disable DevTools extensions (React, Vue, Redux)
  3. Disable any automation/screenshot extensions
  4. Refresh the tab and retry

macOS: Enable JavaScript from Apple Events (mixed results):

  1. Chrome → View → Developer → Allow JavaScript from Apple Events
  2. Refresh/re-navigate tabs (old tabs don't pick up the change)

Close other Chromium browsers (ref):

Other Chromium-based browsers (Arc, Brave, Dia) can interfere. Close them when using Claude in Chrome.

Quick Fix: /chrome Command

Run /chrome in your Claude Code session. Options include:

  • Reconnect extension - Re-establish connection without killing processes
  • Enabled by default - Check/change whether Chrome starts with every session

If "Enabled by default" is Yes and you run multiple CC sessions, disable it. Use --chrome flag only when needed.

Kill Zombie MCP Processes

bash
# View processes first
ps aux | grep "claude-in-chrome-mcp" | grep -v grep

# Kill all MCP processes (will auto-restart for active sessions)
pkill -f "claude-in-chrome-mcp"

After killing, wait a few seconds. Active Claude Code sessions will reconnect automatically.

Full Reset (if above doesn't work)

  1. Kill all MCP processes: pkill -f "claude-in-chrome-mcp"
  2. Quit Chrome completely
  3. Restart Chrome
  4. Restart Claude Code session

Extension Reinstall (last resort)

  1. chrome://extensions/ → Remove "Claude in Chrome"
  2. Reinstall from Chrome Web Store
  3. Restart Claude Code

Prevention

Multi-Session Conflicts

Each Claude Code session spawns its own claude-in-chrome-mcp process. Multiple sessions = multiple processes competing for the single Chrome extension connection.

Best practice: Only enable Chrome in sessions that need browser automation.

Session flags:

bash
# Start with Chrome (for browser QA sessions)
claude --chrome

# Resume existing session with Chrome
claude --resume <session-id> --chrome

Check your default: Run /chrome → if "Enabled by default" is Yes, set to No. Then use --chrome flag only when needed.

Zombie Processes

Zombie processes occur when Claude Code sessions exit uncleanly (force quit, terminal crash, system sleep). Diagnose and fix when symptoms appear using steps above.

Notes

  • The "chrome-extension:// URL of different extension" error is misleading - you're on localhost, but stale MCP processes confuse the extension about which server to use
  • form_input uses different code path than click/screenshot which is why some actions work while others fail

References

Didn't find tool you were looking for?

Be as detailed as possible for better results