macOS TCC popup still recurring on v2.1.153 — "2.1.153" would like to access data from other apps
Status Open
Reported on v2.1.153
Maintainer reply None cached
Workaround ✓ Mentioned in thread ↓
Activity 5 comments · opened May 28, 2026
Description
The macOS TCC permission dialog keeps appearing with the message:
"2.1.153" would like to access data from other apps.
This is still happening on v2.1.153 running macOS Sequoia 15.4 (Darwin 25.2.0, arm64).
Current permissions already granted
- Privacy & Security > Automation:
claude→ System Events ✅ (toggled on) - Privacy & Security > Files & Folders:
claude→ Full Disk Access listed
Despite these permissions being granted, the popup keeps appearing.
Root cause
The CLI binary lives at ~/.local/share/claude/versions/2.1.153 and the symlink at ~/.local/bin/claude points to it. Since the binary path changes with every version update, macOS treats each version as a new, unrecognized binary and:
- Shows the version number ("2.1.153") instead of a human-readable name like "Claude Code"
- Invalidates previously granted TCC permissions
Prior issues (all closed/locked)
- #27322
- #36675
- #36832
- #41297
Suggested fix
- Wrap the CLI in a proper
.appbundle withCFBundleName/CFBundleDisplayName, or - Use a stable binary path that doesn't change per version (let the symlink be the canonical identity), or
- Code-sign the binary with a consistent team identity so macOS recognizes it across versions
Environment
- Claude Code: 2.1.153
- macOS: Sequoia 15.4 (Darwin 25.2.0)
- Architecture: arm64
Showing cached comments. Read the full discussion on GitHub ↗
4 Comments
This is really two bugs and I see both (mac tahoe 26.5) every time my Claude tries to run a hook which backs up my ~/.claude/ to my Gdrive via a script that uses rclone:
Steps to reproduce:
Expected behaviour: Prompt should read "Claude Code wants access to…" and should only request the permissions actually
needed.
Still reproducing on v2.1.175 (macOS, Apple Silicon).
The Privacy & Security list now shows multiple orphaned entries named by
version number (e.g. 2.1.173, 2.1.175) alongside
claude/Claude,each needing Full Disk Access re-granted after every update. Granting FDA
to the terminal app (iTerm) does not stop it, since the responsible
process is the per-version
claudebinary.The root cause and suggested fixes in the original report still apply.
A stable binary path (or a properly signed .app bundle with a consistent
identity) so macOS can persist the TCC grant across versions would solve this.
+1 / would appreciate this being prioritized.
Summary
macOS ties a TCC grant to the resolved path of the requesting executable. Claude Code installs each version under a version-specific directory:
~/.local/share/claude/versions/<version>/~/Library/Application Support/Claude/claude-code/<version>/claudeBecause that path changes on every update, macOS treats each new version as a new, unrecognized binary. The consequences:
Separately, the embedded CLI inside Claude Desktop is code-signed with a different identity (
com.anthropic.claude-code) than the desktop app (com.anthropic.claudefordesktop), so it does not inherit the Full Disk Access grant given to Claude.app — the user must grant access to the embedded binary separately, and that grant is then invalidated on the next Desktop update (per the version-path problem above).This is especially visible when a skill/agent reads files that live inside another app's sandbox container (e.g., a NotePlan vault under
~/Library/Containers/co.noteplan.NotePlan3/Data/…), which is precisely the access that triggers the macOS "access data from other apps" dialog.Steps to reproduce
~/Library/Containers/co.noteplan.NotePlan3/Data/….Expected results
Actual results
Suggested fixes
.appbundle withCFBundleName/CFBundleDisplayNameso the consent dialog shows a readable name.Related reports
Workaround that eliminates the prompts entirely until this is fixed properly.
Key observation: Anthropic signs every build with the same identity (
com.anthropic.claude-code, teamQ6L2SF6YDW), so the code-signing requirement (csreq) stored in existing TCC rows still matches each new binary. Only the path-keyed lookup fails. That means you can clone your existing grants to the new version path in the user-levelTCC.dband macOS accepts them without re-prompting.Script (needs a shell with Full Disk Access; I run it as a Claude Code
SessionStarthook so it fires before anything can prompt):Notes:
accesstable schema on macOS 26.x; adjust viaPRAGMA table_info(access)on other versions.TCC.dbis unsupported by Apple. Worst case it silently stops working and you see one prompt per update again, i.e. the status quo.Obviously the real fix belongs in the installer (stable path or proper .app bundle identity, as the OP suggests). Until then this makes updates silent.