macOS: FDA panel accumulates multiple versioned entries on auto-update; no cleanup on upgrade

Open 💬 0 comments Opened Jun 30, 2026 by jim-riley-earthscope

Summary

System Settings → Privacy & Security → Full Disk Access accumulates one entry per Claude Code version install (e.g. Claude Code 2.1.174, Claude Code 2.1.175, … Claude Code 2.1.195). Auto-update (either CLI npm self-updater or Desktop app updater) does not remove old entries. Over ~3 months a user can accumulate 20+ entries, none labeled clearly enough to know which to keep.

Environment

  • macOS 26.4.1 (Tahoe)
  • Claude Code CLI (npm-installed, ~/.local/bin/claude)
  • Claude Desktop app also installed (occasional use)
  • FDA panel shows entries from approximately 2.1.174 through 2.1.195

Behavior

Each time CC auto-updates:

  1. A new FDA entry is created named Claude Code <version>
  2. The old entry is not removed
  3. The user sees a growing list of versioned entries, all enabled
  4. There is no documentation on which entries are safe to delete or how many should exist

Attempting to add /bin/bash or /bin/zsh to FDA gives Error: Internal error: 1038 on macOS 26 Tahoe (Apple intentionally blocks interpreter binaries). This is a separate issue but compounds the confusing state of the FDA panel.

Related

Issue #58952 decoded the TCC csreq blob for a CC entry: it uses identifier "com.anthropic.claude-code" and anchor apple generic and certificate leaf[subject.OU] = "Q6L2SF6YDW" — i.e., Team ID binding, not CDHash. If the binding is stable across updates, it's unclear why new entries accumulate rather than updating the existing one. Possible causes:

  • Display name change (bundle CFBundleDisplayName includes the version string) causes macOS to treat it as a new app identity for UI purposes even though the csreq binding is stable
  • Desktop app and CLI are separate bundle identities, each registering separately
  • Auto-update path change (e.g., new npm install location) creates a second entry

Expected Behavior

One entry per CC identity (CLI / Desktop treated as separate is fine). Auto-update should either:

  • Update the existing entry in-place, OR
  • Remove the old entry after successful update, OR
  • At minimum, document the expected accumulation and which entries are safe to prune

Workaround

Old entries appear safe to delete. Keep only the most recent version entry (or one per identity — CLI vs Desktop). Re-enable the toggle after any manual cleanup if it was affected.

Impact

  • Privacy & Security panel becomes cluttered and confusing
  • Users may unnecessarily re-grant FDA after each update, or may not realize they should
  • Related to the launchd agent FDA issue: launchd agents cannot use the FDA grant at all on macOS 26 Tahoe due to TCC attribution chain failure (no bundle ID in launchd process tree), making this panel even more confusing — entries are present but some are structurally unreachable

cc: #58952

View original on GitHub ↗