[BUG] Custom URL scheme links (message://) not opened by OS in Claude Desktop — same root cause as #26952

Resolved 💬 1 comment Opened Jul 12, 2026 by xwoker Closed Jul 15, 2026

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?

MailMate's MCP server returns message://<id>@... deep links so users can jump from a chat digest straight to a specific email. Claude Desktop renders these as clickable markdown links and shows the "Open external link" confirmation dialog, but clicking "Open link" does nothing — the URL never reaches macOS Launch Services.

What Should Happen?

MailMate activates and navigates to the specified message (same behavior as running open "message://<id>" in Terminal, which works correctly).

Error Messages/Logs

Steps to Reproduce

Connect the MailMate MCP server in Claude Desktop.
Ask Claude to produce a digest of inbox messages with message:// backlinks.
Click any resulting link, confirm the "Open external link" dialog.
Observe: MailMate does not open/navigate to the message.

Claude Model

Sonnet (default)

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.207

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

iTerm2

Additional Information

Root cause (per #26952): Claude Desktop's Electron link handler appears to allow only http:///https:// through to shell.openExternal(), silently dropping other registered schemes before the OS ever sees them.
Suggested fix: Same as #26952 — pass through any URL scheme registered with the OS (or at minimum, schemes present in a small allowlist / schemes the MCP response explicitly marks as safe) to shell.openExternal().
Related: anthropics/claude-code#26952

Bug analysis and suggested value come straight from claude Sonnet 5 high.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗