[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XFECTFBZY43FC0ZS83DJBW":3,"skill-same:01M6XFECTFBZY43FC0ZS83DJBW":66},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":14,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M6XFECTFBZY43FC0ZS83DJBW","claude-in-chrome-troubleshooting",null,"Diagnose and fix Claude in Chrome MCP extension connectivity issues. Use when mcp__claude-in-chrome__* tools fail, return \"Browser extension is not connected\", or behave erratically.","sapsapshen\u002Fai-memory-router","sapsapshen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20347959?v=4","01M6XDQEF1DP50DKF37H81J3J5","shenmian","01M6XDQEJPE41Y3DT2763X8ZJN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcopilot\u002Fclaude-in-chrome-troubleshooting\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"chrome","troubleshooting","claude in chrome troubleshooting","when","MCP","unknown","browser extension","extension","connectivity","behave","community","use","fix","Tools","browser","issues","diagnose","2026-11-10 10:12:30",false,"---\nname: claude-in-chrome-troubleshooting\ndescription: Diagnose and fix Claude in Chrome MCP extension connectivity issues. Use when mcp__claude-in-chrome__* tools fail, return \"Browser extension is not connected\", or behave erratically.\nrisk: unknown\nsource: community\n---\n\n# Claude in Chrome MCP Troubleshooting\n\nUse this skill when Claude in Chrome MCP tools fail to connect or work unreliably.\n\n## When to Use\n- `mcp__claude-in-chrome__*` tools fail with \"Browser extension is not connected\"\n- Browser automation works erratically or times out\n- After updating Claude Code or Claude.app\n- When switching between Claude Code CLI and Claude.app (Cowork)\n- Native host process is running but MCP tools still fail\n\n## When NOT to Use\n\n- **Linux or Windows users** - This skill covers macOS-specific paths and tools (`~\u002FLibrary\u002FApplication Support\u002F`, `osascript`)\n- General Chrome automation issues unrelated to the Claude extension\n- Claude.app desktop issues (not browser-related)\n- Network connectivity problems\n- Chrome extension installation issues (use Chrome Web Store support)\n\n## The Claude.app vs Claude Code Conflict (Primary Issue)\n\n**Background:** When Claude.app added Cowork support (browser automation from the desktop app), it introduced a competing native messaging host that conflicts with Claude Code CLI.\n\n### Two Native Hosts, Two Socket Formats\n\n| Component | Native Host Binary | Socket Location |\n|-----------|-------------------|-----------------|\n| **Claude.app (Cowork)** | `\u002FApplications\u002FClaude.app\u002FContents\u002FHelpers\u002Fchrome-native-host` | `\u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F\u003CPID>.sock` |\n| **Claude Code CLI** | `~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F\u003Cversion> --chrome-native-host` | `$TMPDIR\u002Fclaude-mcp-browser-bridge-$USER` (single file) |\n\n### Why They Conflict\n\n1. Both register native messaging configs in Chrome:\n   - `com.anthropic.claude_browser_extension.json` → Claude.app helper\n   - `com.anthropic.claude_code_browser_extension.json` → Claude Code wrapper\n\n2. Chrome extension requests a native host by name\n3. If the wrong config is active, the wrong binary runs\n4. The wrong binary creates sockets in a format\u002Flocation the MCP client doesn't expect\n5. Result: \"Browser extension is not connected\" even though everything appears to be running\n\n### The Fix: Disable Claude.app's Native Host\n\n**If you use Claude Code CLI for browser automation (not Cowork):**\n\n```bash\n# Disable the Claude.app native messaging config\nmv ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json \\\n   ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json.disabled\n\n# Ensure the Claude Code config exists and points to the wrapper\ncat ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json\n```\n\n**If you use Cowork (Claude.app) for browser automation:**\n\n```bash\n# Disable the Claude Code native messaging config\nmv ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json \\\n   ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json.disabled\n```\n\n**You cannot use both simultaneously.** Pick one and disable the other.\n\n### Toggle Script\n\nAdd this to `~\u002F.zshrc` or run directly:\n\n```bash\nchrome-mcp-toggle() {\n    local CONFIG_DIR=~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\n    local CLAUDE_APP=\"$CONFIG_DIR\u002Fcom.anthropic.claude_browser_extension.json\"\n    local CLAUDE_CODE=\"$CONFIG_DIR\u002Fcom.anthropic.claude_code_browser_extension.json\"\n\n    if [[ -f \"$CLAUDE_APP\" && ! -f \"$CLAUDE_APP.disabled\" ]]; then\n        # Currently using Claude.app, switch to Claude Code\n        mv \"$CLAUDE_APP\" \"$CLAUDE_APP.disabled\"\n        [[ -f \"$CLAUDE_CODE.disabled\" ]] && mv \"$CLAUDE_CODE.disabled\" \"$CLAUDE_CODE\"\n        echo \"Switched to Claude Code CLI\"\n        echo \"Restart Chrome and Claude Code to apply\"\n    elif [[ -f \"$CLAUDE_CODE\" && ! -f \"$CLAUDE_CODE.disabled\" ]]; then\n        # Currently using Claude Code, switch to Claude.app\n        mv \"$CLAUDE_CODE\" \"$CLAUDE_CODE.disabled\"\n        [[ -f \"$CLAUDE_APP.disabled\" ]] && mv \"$CLAUDE_APP.disabled\" \"$CLAUDE_APP\"\n        echo \"Switched to Claude.app (Cowork)\"\n        echo \"Restart Chrome to apply\"\n    else\n        echo \"Current state unclear. Check configs:\"\n        ls -la \"$CONFIG_DIR\"\u002Fcom.anthropic*.json* 2>\u002Fdev\u002Fnull\n    fi\n}\n```\n\nUsage: `chrome-mcp-toggle` then restart Chrome (and Claude Code if switching to CLI).\n\n## Quick Diagnosis\n\n```bash\n# 1. Which native host binary is running?\nps aux | grep chrome-native-host | grep -v grep\n# Claude.app: \u002FApplications\u002FClaude.app\u002FContents\u002FHelpers\u002Fchrome-native-host\n# Claude Code: ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002FX.X.X --chrome-native-host\n\n# 2. Where is the socket?\n# For Claude Code (single file in TMPDIR):\nls -la \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\" 2>&1\n\n# For Claude.app (directory with PID files):\nls -la \u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F 2>&1\n\n# 3. What's the native host connected to?\nlsof -U 2>&1 | grep claude-mcp-browser-bridge\n\n# 4. Which configs are active?\nls ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic*.json\n```\n\n## Critical Insight\n\n**MCP connects at startup.** If the browser bridge wasn't ready when Claude Code started, the connection will fail for the entire session. The fix is usually: ensure Chrome + extension are running with correct config, THEN restart Claude Code.\n\n## Full Reset Procedure (Claude Code CLI)\n\n```bash\n# 1. Ensure correct config is active\nmv ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json \\\n   ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json.disabled 2>\u002Fdev\u002Fnull\n\n# 2. Update the wrapper to use latest Claude Code version\ncat > ~\u002F.claude\u002Fchrome\u002Fchrome-native-host \u003C\u003C 'EOF'\n#!\u002Fbin\u002Fbash\nLATEST=$(ls -t ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F 2>\u002Fdev\u002Fnull | head -1)\nexec \"$HOME\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F$LATEST\" --chrome-native-host\nEOF\nchmod +x ~\u002F.claude\u002Fchrome\u002Fchrome-native-host\n\n# 3. Kill existing native host and clean sockets\npkill -f chrome-native-host\nrm -rf \u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F\nrm -f \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\"\n\n# 4. Restart Chrome\nosascript -e 'quit app \"Google Chrome\"' && sleep 2 && open -a \"Google Chrome\"\n\n# 5. Wait for Chrome, click Claude extension icon\n\n# 6. Verify correct native host is running\nps aux | grep chrome-native-host | grep -v grep\n# Should show: ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002FX.X.X --chrome-native-host\n\n# 7. Verify socket exists\nls -la \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\"\n\n# 8. Restart Claude Code\n```\n\n## Other Common Causes\n\n### Multiple Chrome Profiles\n\nIf you have the Claude extension installed in multiple Chrome profiles, each spawns its own native host and socket. This can cause confusion.\n\n**Fix:** Only enable the Claude extension in ONE Chrome profile.\n\n### Multiple Claude Code Sessions\n\nRunning multiple Claude Code instances can cause socket conflicts.\n\n**Fix:** Only run one Claude Code session at a time, or use `\u002Fmcp` to reconnect after closing other sessions.\n\n### Hardcoded Version in Wrapper\n\nThe wrapper at `~\u002F.claude\u002Fchrome\u002Fchrome-native-host` may have a hardcoded version that becomes stale after updates.\n\n**Diagnosis:**\n```bash\ncat ~\u002F.claude\u002Fchrome\u002Fchrome-native-host\n# Bad: exec \"\u002FUsers\u002F...\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F2.0.76\" --chrome-native-host\n# Good: Uses $(ls -t ...) to find latest\n```\n\n**Fix:** Use the dynamic version wrapper shown in the Full Reset Procedure above.\n\n### TMPDIR Not Set\n\nClaude Code expects `TMPDIR` to be set to find the socket.\n\n```bash\n# Check\necho $TMPDIR\n# Should show: \u002Fvar\u002Ffolders\u002FXX\u002F...\u002FT\u002F\n\n# Fix: Add to ~\u002F.zshrc\nexport TMPDIR=\"${TMPDIR:-$(getconf DARWIN_USER_TEMP_DIR)}\"\n```\n\n## Diagnostic Deep Dive\n\n```bash\necho \"=== Native Host Binary ===\"\nps aux | grep chrome-native-host | grep -v grep\n\necho -e \"\\n=== Socket (Claude Code location) ===\"\nls -la \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\" 2>&1\n\necho -e \"\\n=== Socket (Claude.app location) ===\"\nls -la \u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F 2>&1\n\necho -e \"\\n=== Native Host Open Files ===\"\npgrep -f chrome-native-host | xargs -I {} lsof -p {} 2>\u002Fdev\u002Fnull | grep -E \"(sock|claude-mcp)\"\n\necho -e \"\\n=== Active Native Messaging Configs ===\"\nls ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic*.json 2>\u002Fdev\u002Fnull\n\necho -e \"\\n=== Custom Wrapper Contents ===\"\ncat ~\u002F.claude\u002Fchrome\u002Fchrome-native-host 2>\u002Fdev\u002Fnull || echo \"No custom wrapper\"\n\necho -e \"\\n=== TMPDIR ===\"\necho \"TMPDIR=$TMPDIR\"\necho \"Expected: $(getconf DARWIN_USER_TEMP_DIR)\"\n```\n\n## File Reference\n\n| File | Purpose |\n|------|---------|\n| `~\u002F.claude\u002Fchrome\u002Fchrome-native-host` | Custom wrapper script for Claude Code |\n| `\u002FApplications\u002FClaude.app\u002FContents\u002FHelpers\u002Fchrome-native-host` | Claude.app (Cowork) native host |\n| `~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F\u003Cversion>` | Claude Code binary (run with `--chrome-native-host`) |\n| `~\u002FLibrary\u002FApplication Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json` | Config for Claude.app native host |\n| `~\u002FLibrary\u002FApplication Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json` | Config for Claude Code native host |\n| `$TMPDIR\u002Fclaude-mcp-browser-bridge-$USER` | Socket file (Claude Code) |\n| `\u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F\u003CPID>.sock` | Socket files (Claude.app) |\n\n## Summary\n\n1. **Primary issue:** Claude.app (Cowork) and Claude Code use different native hosts with incompatible socket formats\n2. **Fix:** Disable the native messaging config for whichever one you're NOT using\n3. **After any fix:** Must restart Chrome AND Claude Code (MCP connects at startup)\n4. **One profile:** Only have Claude extension in one Chrome profile\n5. **One session:** Only run one Claude Code instance\n\n---\n\n*Original skill by [@jeffzwang](https:\u002F\u002Fgithub.com\u002Fjeffzwang) from [@ExaAILabs](https:\u002F\u002Fgithub.com\u002FExaAILabs). Enhanced and updated for current versions of Claude Desktop and Claude Code.*\n","# Claude in Chrome MCP Troubleshooting\n\nUse this skill when Claude in Chrome MCP tools fail to connect or work unreliably.\n\n## When to Use\n- `mcp__claude-in-chrome__*` tools fail with \"Browser extension is not connected\"\n- Browser automation works erratically or times out\n- After updating Claude Code or Claude.app\n- When switching between Claude Code CLI and Claude.app (Cowork)\n- Native host process is running but MCP tools still fail\n\n## When NOT to Use\n\n- **Linux or Windows users** - This skill covers macOS-specific paths and tools (`~\u002FLibrary\u002FApplication Support\u002F`, `osascript`)\n- General Chrome automation issues unrelated to the Claude extension\n- Claude.app desktop issues (not browser-related)\n- Network connectivity problems\n- Chrome extension installation issues (use Chrome Web Store support)\n\n## The Claude.app vs Claude Code Conflict (Primary Issue)\n\n**Background:** When Claude.app added Cowork support (browser automation from the desktop app), it introduced a competing native messaging host that conflicts with Claude Code CLI.\n\n### Two Native Hosts, Two Socket Formats\n\n| Component | Native Host Binary | Socket Location |\n|-----------|-------------------|-----------------|\n| **Claude.app (Cowork)** | `\u002FApplications\u002FClaude.app\u002FContents\u002FHelpers\u002Fchrome-native-host` | `\u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F\u003CPID>.sock` |\n| **Claude Code CLI** | `~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F\u003Cversion> --chrome-native-host` | `$TMPDIR\u002Fclaude-mcp-browser-bridge-$USER` (single file) |\n\n### Why They Conflict\n\n1. Both register native messaging configs in Chrome:\n   - `com.anthropic.claude_browser_extension.json` → Claude.app helper\n   - `com.anthropic.claude_code_browser_extension.json` → Claude Code wrapper\n\n2. Chrome extension requests a native host by name\n3. If the wrong config is active, the wrong binary runs\n4. The wrong binary creates sockets in a format\u002Flocation the MCP client doesn't expect\n5. Result: \"Browser extension is not connected\" even though everything appears to be running\n\n### The Fix: Disable Claude.app's Native Host\n\n**If you use Claude Code CLI for browser automation (not Cowork):**\n\n```bash\n# Disable the Claude.app native messaging config\nmv ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json \\\n   ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json.disabled\n\n# Ensure the Claude Code config exists and points to the wrapper\ncat ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json\n```\n\n**If you use Cowork (Claude.app) for browser automation:**\n\n```bash\n# Disable the Claude Code native messaging config\nmv ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json \\\n   ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json.disabled\n```\n\n**You cannot use both simultaneously.** Pick one and disable the other.\n\n### Toggle Script\n\nAdd this to `~\u002F.zshrc` or run directly:\n\n```bash\nchrome-mcp-toggle() {\n    local CONFIG_DIR=~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\n    local CLAUDE_APP=\"$CONFIG_DIR\u002Fcom.anthropic.claude_browser_extension.json\"\n    local CLAUDE_CODE=\"$CONFIG_DIR\u002Fcom.anthropic.claude_code_browser_extension.json\"\n\n    if [[ -f \"$CLAUDE_APP\" && ! -f \"$CLAUDE_APP.disabled\" ]]; then\n        # Currently using Claude.app, switch to Claude Code\n        mv \"$CLAUDE_APP\" \"$CLAUDE_APP.disabled\"\n        [[ -f \"$CLAUDE_CODE.disabled\" ]] && mv \"$CLAUDE_CODE.disabled\" \"$CLAUDE_CODE\"\n        echo \"Switched to Claude Code CLI\"\n        echo \"Restart Chrome and Claude Code to apply\"\n    elif [[ -f \"$CLAUDE_CODE\" && ! -f \"$CLAUDE_CODE.disabled\" ]]; then\n        # Currently using Claude Code, switch to Claude.app\n        mv \"$CLAUDE_CODE\" \"$CLAUDE_CODE.disabled\"\n        [[ -f \"$CLAUDE_APP.disabled\" ]] && mv \"$CLAUDE_APP.disabled\" \"$CLAUDE_APP\"\n        echo \"Switched to Claude.app (Cowork)\"\n        echo \"Restart Chrome to apply\"\n    else\n        echo \"Current state unclear. Check configs:\"\n        ls -la \"$CONFIG_DIR\"\u002Fcom.anthropic*.json* 2>\u002Fdev\u002Fnull\n    fi\n}\n```\n\nUsage: `chrome-mcp-toggle` then restart Chrome (and Claude Code if switching to CLI).\n\n## Quick Diagnosis\n\n```bash\n# 1. Which native host binary is running?\nps aux | grep chrome-native-host | grep -v grep\n# Claude.app: \u002FApplications\u002FClaude.app\u002FContents\u002FHelpers\u002Fchrome-native-host\n# Claude Code: ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002FX.X.X --chrome-native-host\n\n# 2. Where is the socket?\n# For Claude Code (single file in TMPDIR):\nls -la \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\" 2>&1\n\n# For Claude.app (directory with PID files):\nls -la \u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F 2>&1\n\n# 3. What's the native host connected to?\nlsof -U 2>&1 | grep claude-mcp-browser-bridge\n\n# 4. Which configs are active?\nls ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic*.json\n```\n\n## Critical Insight\n\n**MCP connects at startup.** If the browser bridge wasn't ready when Claude Code started, the connection will fail for the entire session. The fix is usually: ensure Chrome + extension are running with correct config, THEN restart Claude Code.\n\n## Full Reset Procedure (Claude Code CLI)\n\n```bash\n# 1. Ensure correct config is active\nmv ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json \\\n   ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json.disabled 2>\u002Fdev\u002Fnull\n\n# 2. Update the wrapper to use latest Claude Code version\ncat > ~\u002F.claude\u002Fchrome\u002Fchrome-native-host \u003C\u003C 'EOF'\n#!\u002Fbin\u002Fbash\nLATEST=$(ls -t ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F 2>\u002Fdev\u002Fnull | head -1)\nexec \"$HOME\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F$LATEST\" --chrome-native-host\nEOF\nchmod +x ~\u002F.claude\u002Fchrome\u002Fchrome-native-host\n\n# 3. Kill existing native host and clean sockets\npkill -f chrome-native-host\nrm -rf \u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F\nrm -f \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\"\n\n# 4. Restart Chrome\nosascript -e 'quit app \"Google Chrome\"' && sleep 2 && open -a \"Google Chrome\"\n\n# 5. Wait for Chrome, click Claude extension icon\n\n# 6. Verify correct native host is running\nps aux | grep chrome-native-host | grep -v grep\n# Should show: ~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002FX.X.X --chrome-native-host\n\n# 7. Verify socket exists\nls -la \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\"\n\n# 8. Restart Claude Code\n```\n\n## Other Common Causes\n\n### Multiple Chrome Profiles\n\nIf you have the Claude extension installed in multiple Chrome profiles, each spawns its own native host and socket. This can cause confusion.\n\n**Fix:** Only enable the Claude extension in ONE Chrome profile.\n\n### Multiple Claude Code Sessions\n\nRunning multiple Claude Code instances can cause socket conflicts.\n\n**Fix:** Only run one Claude Code session at a time, or use `\u002Fmcp` to reconnect after closing other sessions.\n\n### Hardcoded Version in Wrapper\n\nThe wrapper at `~\u002F.claude\u002Fchrome\u002Fchrome-native-host` may have a hardcoded version that becomes stale after updates.\n\n**Diagnosis:**\n```bash\ncat ~\u002F.claude\u002Fchrome\u002Fchrome-native-host\n# Bad: exec \"\u002FUsers\u002F...\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F2.0.76\" --chrome-native-host\n# Good: Uses $(ls -t ...) to find latest\n```\n\n**Fix:** Use the dynamic version wrapper shown in the Full Reset Procedure above.\n\n### TMPDIR Not Set\n\nClaude Code expects `TMPDIR` to be set to find the socket.\n\n```bash\n# Check\necho $TMPDIR\n# Should show: \u002Fvar\u002Ffolders\u002FXX\u002F...\u002FT\u002F\n\n# Fix: Add to ~\u002F.zshrc\nexport TMPDIR=\"${TMPDIR:-$(getconf DARWIN_USER_TEMP_DIR)}\"\n```\n\n## Diagnostic Deep Dive\n\n```bash\necho \"=== Native Host Binary ===\"\nps aux | grep chrome-native-host | grep -v grep\n\necho -e \"\\n=== Socket (Claude Code location) ===\"\nls -la \"$(getconf DARWIN_USER_TEMP_DIR)\u002Fclaude-mcp-browser-bridge-$USER\" 2>&1\n\necho -e \"\\n=== Socket (Claude.app location) ===\"\nls -la \u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F 2>&1\n\necho -e \"\\n=== Native Host Open Files ===\"\npgrep -f chrome-native-host | xargs -I {} lsof -p {} 2>\u002Fdev\u002Fnull | grep -E \"(sock|claude-mcp)\"\n\necho -e \"\\n=== Active Native Messaging Configs ===\"\nls ~\u002FLibrary\u002FApplication\\ Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic*.json 2>\u002Fdev\u002Fnull\n\necho -e \"\\n=== Custom Wrapper Contents ===\"\ncat ~\u002F.claude\u002Fchrome\u002Fchrome-native-host 2>\u002Fdev\u002Fnull || echo \"No custom wrapper\"\n\necho -e \"\\n=== TMPDIR ===\"\necho \"TMPDIR=$TMPDIR\"\necho \"Expected: $(getconf DARWIN_USER_TEMP_DIR)\"\n```\n\n## File Reference\n\n| File | Purpose |\n|------|---------|\n| `~\u002F.claude\u002Fchrome\u002Fchrome-native-host` | Custom wrapper script for Claude Code |\n| `\u002FApplications\u002FClaude.app\u002FContents\u002FHelpers\u002Fchrome-native-host` | Claude.app (Cowork) native host |\n| `~\u002F.local\u002Fshare\u002Fclaude\u002Fversions\u002F\u003Cversion>` | Claude Code binary (run with `--chrome-native-host`) |\n| `~\u002FLibrary\u002FApplication Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_browser_extension.json` | Config for Claude.app native host |\n| `~\u002FLibrary\u002FApplication Support\u002FGoogle\u002FChrome\u002FNativeMessagingHosts\u002Fcom.anthropic.claude_code_browser_extension.json` | Config for Claude Code native host |\n| `$TMPDIR\u002Fclaude-mcp-browser-bridge-$USER` | Socket file (Claude Code) |\n| `\u002Ftmp\u002Fclaude-mcp-browser-bridge-$USER\u002F\u003CPID>.sock` | Socket files (Claude.app) |\n\n## Summary\n\n1. **Primary issue:** Claude.app (Cowork) and Claude Code use different native hosts with incompatible socket formats\n2. **Fix:** Disable the native messaging config for whichever one you're NOT using\n3. **After any fix:** Must restart Chrome AND Claude Code (MCP connects at startup)\n4. **One profile:** Only have Claude extension in one Chrome profile\n5. **One session:** Only run one Claude Code instance\n\n---\n\n*Original skill by [@jeffzwang](https:\u002F\u002Fgithub.com\u002Fjeffzwang) from [@ExaAILabs](https:\u002F\u002Fgithub.com\u002FExaAILabs). Enhanced and updated for current versions of Claude Desktop and Claude Code.*\n",{"name":5,"risk":29,"source":34,"description":7},"main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fcopilot\u002Fclaude-in-chrome-troubleshooting","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill claude-in-chrome-troubleshooting",{"tool":58,"command":59},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill claude-in-chrome-troubleshooting",{"tool":61,"command":62},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill claude-in-chrome-troubleshooting","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcopilot\u002Fclaude-in-chrome-troubleshooting\u002FSKILL.md",true,[],[67,91,116,126,139,156],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":78,"publishedAt":41},"01M71ATQRKG48SH06FQ697T5G9","wechat-search","Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fwechat-search-release\u002FSKILL.md",[73],{"categoryNo":74,"categoryName":75,"taxonomyType":76,"taxonomyTypeDesc":77},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[79,80,81,82,83,84,85,86,87,88,89,90],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch","with",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":41},"01M71ATNAVGZB35PFYM2GC5N00","trend-tap","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-tap\u002FSKILL.md",[],[98,99,100,101,102,103,81,104,105,106,107,27,108,109,110,111,112,113,114,115],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","brew","live","data","google","install","read","across","api",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":41},"01M71ATJ9AM5KM15AA8PS302EB","trend-radar","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-radar\u002FSKILL.md",[],[123,124,98,108,109,110,111,102,81,113,125,114,115,27,106,105,104,112,103,101],"trend radar","radar","pulse",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":41},"01M71ATGF095N3EJM9G8SD0BB5","tech-news-daily","每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻，翻译（英→中）、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftech-news-daily\u002FSKILL.md",[],[133,134,135,136,137,138],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":148,"publishedAt":41},"01M71ATFAEAMQ17M70NQNY7SR8","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsummarize\u002FSKILL.md",[145],{"categoryNo":146,"categoryName":147,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[141,87,149,150,151,90,108,152,153,154,100,155,112],"Audio","cli","youtube","images","https","files","pdfs",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":41},"01M71ATDNS3R0M4H936PACQAWZ","sonoscli","Control Sonos speakers (discover\u002Fstatus\u002Fplay\u002Fvolume\u002Fgroup).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsonoscli\u002FSKILL.md",[],[158,163,164,165,112,166,153,167,168,169,170,171],"status","play","go","latest","github","discover","control","cmd","volume"]