Help us improve
Share bugs, ideas, or general feedback.
Quickly checks whether the Claude in Chrome MCP connection is working and reports the status. Use when the user says "is chrome connected?", "check chrome", "chrome status", "test chrome connection", "is the chrome extension working?", or any variation of wanting to know if Chrome is reachable before starting browser-based work. Also use proactively before running Chrome automation tasks if there's any doubt the connection is live.
npx claudepluginhub msapps-mobile/claude-plugins --plugin fix-chrome-connectionHow this skill is triggered — by the user, by Claude, or both
Slash command
/fix-chrome-connection:chrome-health-checkThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Run a quick connection test. If broken, diagnose the root cause and fix it.
Diagnoses and fixes Claude in Chrome MCP extension connectivity issues. Use when MCP browser tools fail or return 'Browser extension is not connected'.
Diagnoses and fixes Claude in Chrome MCP extension connectivity issues on macOS. Resolves conflicts between Claude.app Cowork and Claude Code CLI native hosts using bash commands.
Controls Chrome via DevTools Protocol for navigating, clicking, typing, multi-tab management, and content extraction with auto-screenshots.
Share bugs, ideas, or general feedback.
Run a quick connection test. If broken, diagnose the root cause and fix it.
Call tabs_context_mcp with createIfEmpty: false.
If successful (returns tab info or "no tab group exists"): → Report: "✅ Chrome is connected and ready." Stop here.
If it returns "No Chrome extension connected after discovery": → Report: "❌ Chrome extension not connected — diagnosing now…" → Proceed to Step 2.
The #1 root cause is an account mismatch between the Desktop App and the Chrome extension. The bridge WebSocket is namespaced per user UUID — if the two sides use different accounts, they can never find each other.
python3 -c "
import glob, re
pattern = '/Users/*/Library/Application Support/Claude/Local Storage/leveldb/*.ldb'
for f in glob.glob(pattern):
try:
data = open(f,'rb').read().decode('utf-8','ignore')
email = re.search(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', data)
uid = re.search(r'[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}', data)
if email: print('Desktop email:', email.group())
if uid: print('Desktop UUID:', uid.group())
except: pass
"
Also check the bridge URL in the log:
grep "Connecting to bridge" ~/Library/Logs/Claude/main.log | tail -3
Navigate to: chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/options.html
The top-right shows the logged-in email. Compare it with the Desktop App account.
If they match → accounts are correct, skip to Step 3b. If they differ → account mismatch confirmed → go to Step 3a.
On the extension options page (chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/options.html), click "Log out".
https://claude.ai/logoutms.apps@msapps.mobi)ms.apps@msapps.mobi (Zoho Workplace): https://workplace.zoho.com/#mail_app/mail/folder/inboxnoreply@...mail.anthropic.comms.apps@msapps.mobi magic link emails are delivered to the michal@msapps.mobi Zoho inbox (same org)After Claude.ai is signed in with the correct account:
chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/options.htmldiscoverAndSelectExtension() runs once at startup and sets discoveryComplete=true. Every subsequent tool call throws the error permanently until the app restarts.
osascript -e 'quit app "Claude"'
sleep 3
open -a Claude
sleep 5
Then retest with tabs_context_mcp.
If accounts match but still broken:
Extension not installed/enabled:
chrome://extensions/ → confirm fcoeoabgfenejglbffodgkkbkcdhcgfn is enabledExtension token expired:
Bridge WebSocket down or Chrome not focused:
osascript -e 'quit app "Google Chrome"'
sleep 2
open -a "Google Chrome"
sleep 3
osascript -e 'quit app "Claude"'
sleep 2
open -a Claude
| Side | Account | UUID |
|---|---|---|
| Claude Desktop App (correct) | ms.apps@msapps.mobi | da5d00b9-5ca9-40ea-a8b5-5052603ff35b |
| Chrome extension (correct) | ms.apps@msapps.mobi | da5d00b9-5ca9-40ea-a8b5-5052603ff35b |
| Chrome extension (wrong/old) | msmobileapps@gmail.com | 22a74de5-a2af-47b2-b30e-eab1eb168f03 |
Bridge URL: wss://bridge.claudeusercontent.com/chrome/{UUID} — both sides must share the same UUID.
Desktop App switched accounts (Apr 2) to ms.apps@msapps.mobi. Chrome extension kept old credentials (msmobileapps@gmail.com). Bridge namespaces don't overlap → discovery found nothing → discoveryComplete=true got permanently stuck. Fix: log out extension → sign Claude.ai into correct account via magic link → extension re-authenticates via OAuth → restart Desktop App.