claude-code - 💡(How to fix) Fix [BUG] claude binary re-registers as new app in macOS Privacy & Security on every version update (versioned install path, not code signing) [3 comments, 3 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#49282Fetched 2026-04-17 08:45:40
View on GitHub
Comments
3
Participants
3
Timeline
7
Reactions
1
Author
Timeline (top)
commented ×3labeled ×3cross-referenced ×1

Every Claude Code update forces re-authorization of macOS privacy permissions (Full Disk Access, Automation, etc.) because each version installs to a unique versioned path. macOS TCC resolves symlinks to the real executable path and treats each version as a distinct application.

Error Message

Error Messages/Logs

Root Cause

macOS TCC tracks permissions by resolved executable path, not bundle identifier. Each update installs to ~/.local/share/claude/versions/<version>/, so every release is a new path = new app to TCC.

Code Example

Executable=/Users/<user>/.local/share/claude/versions/2.1.111
Identifier=com.anthropic.claude-code
Authority=Developer ID Application: Anthropic PBC (Q6L2SF6YDW)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
TeamIdentifier=Q6L2SF6YDW
RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • I am using the latest version of Claude Code

What's Wrong?

Summary

Every Claude Code update forces re-authorization of macOS privacy permissions (Full Disk Access, Automation, etc.) because each version installs to a unique versioned path. macOS TCC resolves symlinks to the real executable path and treats each version as a distinct application.

Evidence

Full Disk Access in System Settings shows each version as a separate, unrecognized app:

<img width="500" height="333" alt="Image" src="https://github.com/user-attachments/assets/d5d9f8e5-cf10-443c-b049-e80e20f49ec6" />

By contrast, Claude Desktop appears as a single stable "Claude" entry and does not exhibit this behavior.

codesign output (2.1.111)

Executable=/Users/<user>/.local/share/claude/versions/2.1.111 Identifier=com.anthropic.claude-code Authority=Developer ID Application: Anthropic PBC (Q6L2SF6YDW) Authority=Developer ID Certification Authority Authority=Apple Root CA TeamIdentifier=Q6L2SF6YDW

The signing identity is stable and correct — this is NOT a code signing issue.

Root Cause

macOS TCC tracks permissions by resolved executable path, not bundle identifier. Each update installs to ~/.local/share/claude/versions/<version>/, so every release is a new path = new app to TCC.

Impact

  • Re-authorization required after every update
  • Orphaned permission entries accumulate in System Settings
  • Particularly disruptive for integrations requiring Full Disk Access (e.g., iMessage plugin)

Suggested Fix

Register a stable, non-versioned symlink path (e.g., ~/.local/share/claude/current) with TCC instead of the versioned path — and ensure the symlink is what macOS tracks. This is a standard pattern for versioned Electron/CLI app installs.

Environment

  • macOS 26.3.1
  • Claude Code 2.1.111 (affects all versions observed: 2.1.97+)
  • Installed via native installer

What Should Happen?

New versions of Claude should not require re-authorizing full-disk access.

Error Messages/Logs

Executable=/Users/<user>/.local/share/claude/versions/2.1.111
Identifier=com.anthropic.claude-code
Authority=Developer ID Application: Anthropic PBC (Q6L2SF6YDW)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
TeamIdentifier=Q6L2SF6YDW

Steps to Reproduce

Steps to Reproduce

  1. Install Claude Code and grant Full Disk Access when prompted
  2. Open System Settings → Privacy & Security → Full Disk Access
  3. Confirm claude appears in the list with the toggle enabled
  4. Install any Claude Code update (version increment, any size)
  5. Attempt to use a feature requiring Full Disk Access (e.g., iMessage plugin)
  6. Observe: macOS prompts for Full Disk Access again
  7. Return to System Settings → Privacy & Security → Full Disk Access
  8. Observe: the new version appears as a separate entry; the previous version entry remains, toggle off

Expected Result

Claude Code retains Full Disk Access permission across updates — single entry persists in System Settings.

Actual Result

Each version creates a new entry named after its version number (e.g., 2.1.110, 2.1.111). Previous entries remain as orphaned, disabled entries. Permissions must be re-granted after every update.

Claude Model

Sonnet (default)

Is this a regression?

I don't know

Last Working Version

No response

Claude Code Version

2.1.110

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

iTerm2

Additional Information

No response

extent analysis

TL;DR

Registering a stable, non-versioned symlink path with TCC instead of the versioned path may resolve the issue of requiring re-authorization after every update.

Guidance

  • The root cause is identified as macOS TCC tracking permissions by resolved executable path, not bundle identifier, resulting in each update being treated as a new app.
  • To verify the issue, check the System Settings → Privacy & Security → Full Disk Access list for multiple entries of Claude Code with different version numbers.
  • A potential workaround is to manually remove the orphaned permission entries in System Settings → Privacy & Security → Full Disk Access.
  • Consider implementing the suggested fix of registering a stable, non-versioned symlink path (e.g., ~/.local/share/claude/current) with TCC.

Example

No code snippet is provided as the issue is related to the installation and permission handling of the application.

Notes

The suggested fix requires changes to the installation process of Claude Code, which may involve modifying the installer or the application's configuration. It is essential to test and verify the fix to ensure it resolves the issue without introducing new problems.

Recommendation

Apply the suggested fix of registering a stable, non-versioned symlink path with TCC, as it addresses the root cause of the issue and provides a standard pattern for versioned Electron/CLI app installs.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING