macOS TCC dialogs recur on every update and request unrelated permissions (Apple Music)
Environment
- Platform: macOS (Darwin 25.4.0, Apple Silicon)
- Claude Code version: 2.1.88 (also reproduced with 2.1.84–2.1.87)
- Installation method: Native (
~/.local/share/claude/versions/<version>) - Running in: VS Code (Claude Code extension)
Description
Two related issues with macOS TCC (Transparency, Consent, and Control) permission dialogs:
1. Permissions reset on every update
Each Claude Code update installs a new standalone Mach-O binary at ~/.local/share/claude/versions/<version>. Since macOS TCC ties permissions to the specific binary path, every update invalidates all previously granted permissions. The user must click "Allow" again for each app that Claude Code/MCP servers interact with.
This has been clicked 20+ times for version 2.1.87 alone, and resets again with 2.1.88.
2. Unrelated permission requests (Apple Music)
The dialog also requests access to Apple Music ("your music and video activity, and your media library"), which Claude Code should never need. This suggests either:
- The runtime probes system APIs broadly on startup
- An MCP server inadvertently triggers media framework access
- The unsigned binary triggers overly broad TCC checks
Screenshots
Dialog 1 — "2.1.87" accessing data from other apps:
The macOS dialog shows the version number as the app name (related to #12433) and asks for inter-app data access.
Dialog 2 — "2.1.88" accessing Apple Music:
Requests access to Apple Music, music/video activity, and media library — completely unrelated to Claude Code's function.
Expected behavior
- TCC permissions should persist across updates (e.g., by keeping a stable binary name/path or using proper code signing)
- Claude Code should not request access to Apple Music or other unrelated system services
Related issues
- #12433 — macOS shows version number instead of app name (root cause: versioned binary filenames)
- #27322, #36675, #36832 — earlier reports of recurring TCC dialogs (closed as duplicates)
Additional context
The versioned binary approach also wastes ~200 MB per version. Old binaries at ~/.local/share/claude/versions/ are never cleaned up automatically.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗