TCC permission grants lost on every auto-update: native installer gives each release a new absolute binary path (bare Mach-O, no bundle)
Summary
On macOS, Claude Code installed via the native installer re-prompts for TCC permissions ("would like to access data from other apps" / "wants to access files managed by iCloud Drive") after every auto-update — several times a day for active users. The prompt also shows the raw version number (e.g. "2.1.218") instead of "Claude Code".
Root cause (confirmed against the TCC database on macOS 26.5 / Darwin 25.5.0)
- macOS TCC keys a bare Mach-O CLI binary by absolute path (
client_type=1). - The native installer writes every release to a new path:
~/.local/share/claude/versions/<version>, then repoints the~/.local/bin/claudesymlink. - Each update is therefore a brand-new TCC client with zero inherited grants → full re-prompt cycle.
- The version number appears in the prompt because the installer ships a bare executable with no app bundle / Info.plist, so macOS falls back to the filename for the client display name.
Evidence
- Signature-keyed TCC rows (
client_type=0,com.anthropic.claude-code) were written and survive updates, but macOS never consults them for a non-bundled binary: versions 2.1.216, 2.1.217, and 2.1.218 each still minted a fresh path-keyed client and re-prompted. - Related open issues: #51911, #53703, #60211, #66216, #76615.
Impact
Users granting Full Disk / Files-and-Folders / cross-app access must re-approve multiple prompts per day. Some users disable the auto-updater (DISABLE_AUTOUPDATER=1) solely to stop the prompts, forfeiting security updates.
Requested fix
Install the executing binary at a stable path (e.g. ~/.local/share/claude/current/claude, updated atomically in place or via a stable hard link that TCC resolves consistently), and/or ship a minimal app bundle with an Info.plist + stable code-signing identity so TCC keys grants by signature rather than by per-version path. Either makes grants survive updates and fixes the display name.
Environment
macOS 26.5 (Darwin 25.5.0), Apple Silicon; Claude Code native installer, auto-update enabled; observed across 2.1.216 → 2.1.218.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗