[BUG] Desktop extension installs silently fail on macOS Tahoe 26.5 — no error, no feedback

Open 💬 9 comments Opened Jun 14, 2026 by mconnley

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?

Every desktop extension install from the Directory (Settings → Extensions → Browse, or the Connectors Directory panel) silently fails. The download completes, the log emits [warn] Installing unsigned extension from ..., and then nothing happens — no error, no success, no user-facing feedback. Some extensions display a progress bar that never progresses, others just don't do anything at all. The extension never appears in the installed list.

This reproduces 100% of the time across every extension tested:

  • Macos (ant.dir.gh.cursortouch.macos-mcp) — button does nothing at all
  • Control your Mac (ant.dir.gh.k6l3.osascript) — shows "Installing..." progress bar indefinitely
  • Kubernetes MCP Server (ant.dir.gh.flux159.mcp-server-kubernetes) — same as Macos

What Should Happen?

The extensions should install and appear in the extensions list, or a clear error message should be displayed explaining why installation failed.

Error Messages/Logs

2026-06-14 17:19:49 [info] [download:1] Starting download from https://claude.ai/api/organizations/.../dxt/extensions/ant.dir.gh.cursortouch.macos-mcp/download
2026-06-14 17:19:50 [warn] Installing unsigned extension from /var/folders/mx/.../dxt-download-1781475589938.mcpb
2026-06-14 17:20:20 [info] [download:2] Starting download from https://claude.ai/api/organizations/.../dxt/extensions/ant.dir.gh.k6l3.osascript/download
2026-06-14 17:20:20 [warn] Installing unsigned extension from /var/folders/mx/.../dxt-download-1781475620721.mcpb

Steps to Reproduce

  1. Open Claude Desktop 1.12603.1 on macOS Tahoe 26.5.1
  2. Go to Settings → Extensions → Browse Extensions (or use the Directory panel under Connectors)
  3. Click + / Install on any extension
  4. Observe: download completes, "Installing..." may briefly appear, then nothing. No extension is installed. No error is shown.

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

1.12603.1 (3df4fd)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

Environment

  • macOS: Tahoe 26.5.1 (Build 25F80)
  • Hardware: Mac Studio, Apple Silicon
  • Claude Desktop: 1.12603.1 (3df4fd), 2026-06-11
  • Node.js: v24.12.0 (/usr/local/bin/node)
  • Python: 3.14.5 (/opt/homebrew/bin/python3)

main.log — install attempts followed by silence

2026-06-14 17:19:49 [info] [download:1] Starting download from https://claude.ai/api/organizations/.../dxt/extensions/ant.dir.gh.cursortouch.macos-mcp/download
2026-06-14 17:19:50 [warn] Installing unsigned extension from /var/folders/mx/.../dxt-download-1781475589938.mcpb
2026-06-14 17:20:20 [info] [download:2] Starting download from https://claude.ai/api/organizations/.../dxt/extensions/ant.dir.gh.k6l3.osascript/download
2026-06-14 17:20:20 [warn] Installing unsigned extension from /var/folders/mx/.../dxt-download-1781475620721.mcpb

No error, no success, no subsequent log entry related to the install. The log jumps to unrelated OAuth/session activity.

Earlier session included a potentially relevant error

2026-06-14 17:12:17 [error] Failed to read version of python binary "python", failed with Error: Failed to spawn python (via disclaimer): /Applications/Claude.app/Contents/Helpers/disclaimer exited with code 127: Failed to spawn process: No such file or directory

This was resolved by symlinking python3python, but the extension installs continued to fail identically after the fix.

Orphaned staging directories

10 dxt-install-* directories accumulate in ~/Library/Application Support/Claude/ containing downloaded but never-unpacked package.mcpb files:

dxt-install-0GT7vL/package.mcpb  (1.2MB)
dxt-install-JI3KzH/package.mcpb  (19.9MB)
dxt-install-psDLfT/package.mcpb  (235KB)
... (7 more)

No extensions directory exists

~/Library/Application Support/Claude/extensions/ does not exist.
~/Library/Application Support/Claude/Claude Extensions/ does not exist.
Manually pre-creating these directories did not resolve the issue.

Sandbox/disclaimer helper works correctly in isolation

$ /Applications/Claude.app/Contents/Helpers/disclaimer node --version
v24.12.0
 
$ /Applications/Claude.app/Contents/Helpers/disclaimer python --version
Python 3.14.5

No macOS security blocks

log show with predicates for com.apple.security, com.apple.syspolicy, Claude, and disclaimer shows no deny/block entries during install attempts. No crash reports for disclaimer or Claude in ~/Library/Logs/DiagnosticReports/.

Extension policies are not blocking

// extensions-blocklist.json
{ "entries": [], ... }
 
// config.json (relevant field)
"dxt:allowlistEnabled:...": false

Full Disk Access granted

Full Disk Access was granted to both Claude.app and /Applications/Claude.app/Contents/Helpers/disclaimer in System Settings → Privacy & Security. System was rebooted after granting. No change in behavior.

Downloaded .mcpb files are valid

$ file /var/folders/.../dxt-download-1781475620721.mcpb
Zip archive data, at least v2.0 to extract, compression method=deflate
 
$ unzip -l /var/folders/.../dxt-download-1781475620721.mcpb | head -5
  Length      Date    Time    Name
---------  ---------- -----   ----
     1059  07-23-2025 09:27   LICENSE.md
      238  07-23-2025 09:27   README.md
   117115  07-23-2025 09:27   icon.png

Notes

This appears related to the documented pattern of macOS Tahoe 26.x tightening sandbox/privacy rules for Electron apps (#40336, #43654, #32584). The install pipeline silently swallows whatever error occurs between "Installing unsigned extension" and the actual file extraction — at minimum, the failure should be surfaced to the user.

View original on GitHub ↗

This issue has 9 comments on GitHub. Read the full discussion on GitHub ↗