[BUG] Claude in Chrome MCP tools fail silently in claude.ai — update_plan never triggers domain approval, navigate returns Permission denied with no visible prompt
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?
The Claude in Chrome MCP tools are non-functional when used from claude.ai chat. The update_plan tool, which is supposed to present a domain approval popup to the user before navigation, never renders any UI. No popup, no notification, no prompt of any kind appears. Subsequent navigate calls return "Permission denied by user" even though the user was never asked for permission.
The tabs_context_mcp tool works and returns tab IDs, but the tabs it manages are isolated in their own tab group. Tabs opened via the separate Control Chrome MCP open outside this group, and Claude in Chrome refuses to interact with them. The two MCP integrations have no bridge between them.
Environment:
- Platform: macOS (M4 MacBook Air, 32GB RAM)
- Browser: Chrome (latest stable)
- Claude interface: claude.ai (Max plan)
- Claude model: claude-opus-4-6
- Claude in Chrome extension: Installed and connected
- Control Chrome MCP: Also connected
- Domain allowlist: "All domains" (confirmed in Settings > Capabilities)
- Network egress: Enabled, all domains allowed
What Should Happen?
update_planshould display a domain approval prompt to the user when called- After approval,
navigateshould work on tabs within the group - The user's domain allowlist setting ("All domains") in claude.ai Settings > Capabilities should be respected
- OR: The two Chrome MCPs (Claude in Chrome + Control Chrome) should share tab context so tabs opened by one are accessible to the other
Error Messages/Logs
update_plan returns: "No tab available"
navigate returns: "Permission denied by user"
Control Chrome:execute_javascript returns: "missing value for required argument code" (intermittent)
No approval popup, notification, or domain consent UI is ever rendered to the user.
Steps to Reproduce
- Open claude.ai in Chrome with Claude in Chrome extension installed and connected
- Also have Control Chrome MCP connected
- In chat, ask Claude to navigate to any URL (e.g.,
bmorcelli.github.io/Launcher/webflasher.html) - Claude calls
tabs_context_mcp— succeeds, returns tab group with blankchrome://newtabtabs - Claude calls
update_planwith domains list — returns "No tab available" error - Claude calls
navigateon a tab in its group — returns "Permission denied by user" - No popup, notification, or approval prompt is ever shown to the user
- Alternatively, Claude uses
Control Chrome:open_urlwhich works but opens tabs outside the Claude in Chrome tab group, making them inaccessible to Claude in Chrome tools
User's Settings > Capabilities page confirms "All domains" is selected and all features are enabled — this is not a permissions configuration issue.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
N/A — this bug is in the Claude in Chrome browser extension, not Claude Code CLI
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
This appears to be the same family of bugs reported in:
- #26217 (macOS, silent WebSocket failure, "Browser extension is not connected")
- #24935 (macOS, "Could not establish connection. Receiving end does not exist")
- #23221 (Windows, approval popup auto-closes within 2 seconds or fails to render)
- #21772 (Windows, CSP blocks inline scripts in sidepanel.html)
- #20298 (macOS, sidepanel works but MCP tools cannot connect)
- #23539 (Windows, "Browser extension is not connected" despite correct config)
All of these issues are filed in the last 1-3 weeks and most remain OPEN with no resolution. The common pattern is: MCP server side works (tools register), but the Chrome extension side fails to establish working connections or render approval UI.
This renders the Claude in Chrome browser automation completely non-functional for its advertised use case.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗