macOS: Every version update creates a new TCC pasteboard permission entry, prompting user repeatedly

Resolved 💬 2 comments Opened Jun 5, 2026 by dp-2009 Closed Jun 8, 2026

Summary

Every time Claude Code updates, macOS treats the new binary as a completely different app and creates a new TCC (Transparency, Consent, Control) permission entry. This means users receive a repeated system dialog:

"2.1.163" would like to access data from other apps.

...on every update, every day. Clicking Allow only silences it until the next update.

Evidence

After a handful of weeks of normal use, Privacy & Security → Pasteboard shows this:

  • 2.1.143 (disabled)
  • 2.1.146 (disabled)
  • 2.1.148 (disabled)
  • 2.1.150 (disabled)
  • 2.1.153 (disabled)
  • 2.1.154 (disabled)
  • 2.1.156 (disabled)
  • 2.1.158 (disabled)
  • 2.1.159 (disabled)
  • 2.1.160 (disabled)
  • 2.1.161 (disabled)
  • 2.1.162 (disabled)
  • 2.1.163 (disabled)

Each entry is a separate Claude Code version. Each triggered its own permission dialog.

Root Cause

Claude Code's binary is not signed with a stable hardened runtime identity across versions. macOS TCC tracks permissions per code signature — so each new binary is treated as an entirely new app, with no memory of previous grants.

Well-behaved macOS apps (Chrome, VS Code, etc.) use a stable Apple Developer team certificate so that updates don't create new TCC entries.

Impact

  • Users cannot permanently allow pasteboard access — it resets on every update
  • Granting the permission to Terminal.app (the parent process) does not help — macOS evaluates child process pasteboard access independently
  • The only workaround is manually running sudo sqlite3 against the TCC database after each update, which is not acceptable for end users

Expected Behaviour

A single TCC entry for Claude Code that persists across updates, consistent with how other regularly-updated macOS apps behave.

Fix

Sign the binary with a stable hardened runtime identity (consistent Apple Developer team ID + bundle identifier) so macOS recognises it as the same app across version updates. Alternatively, evaluate whether pasteboard access on startup is necessary at all.

Environment

  • macOS Sequoia 15.x
  • Claude Code versions 2.1.143 – 2.1.163 (confirmed across multiple weeks)
  • Shell: zsh / tmux inside Terminal.app

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗