[BUG] Desktop bundle missing `NSRemindersUsageDescription` (and likely Calendars/Contacts) — TCC silently denies all Reminders MCP calls
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
he Claude Code Desktop app bundle does not declare NSRemindersUsageDescription in its Info.plist. As a result, any MCP server that calls EventKit for Reminders (e.g. apple-reminders) is silently denied by TCC — the OS never shows a permission prompt, and there is no entry in System Settings → Privacy & Security → Reminders for the user to enable. The CLI version of Claude Code is unaffected, presumably because it ships with the right key.
What Should Happen?
Claude Code Desktop app bundle should declare NSRemindersUsageDescription in its Info.plist
Inspecting the bundle confirms only one usage-description key is present:
$ /usr/libexec/PlistBuddy -c "Print" \
"/Users/<me>/Library/Application Support/Claude/claude-code/2.1.121/claude.app/Contents/Info.plist" \
| grep -i usage
NSMicrophoneUsageDescription = Claude Code uses the microphone for voice dictation.
Error Messages/Logs
tccd: [com.apple.TCC:access] AUTHREQ_PROMPTING: msgID=…, service=kTCCServiceReminders,
subject=Sub:{com.anthropic.claude-code}Resp:{TCCDProcess: identifier=com.anthropic.claude-code,
…binary_path=/Users/<me>/Library/Application Support/Claude/claude-code/2.1.121/claude.app/Contents/MacOS/claude}
tccd: [com.apple.TCC:access] Refusing authorization request for service kTCCServiceReminders
and subject Sub:{com.anthropic.claude-code} … without NSRemindersUsageDescription key
Steps to Reproduce
Reproduction
- On macOS, install Claude Code Desktop 2.1.121.
- Configure an MCP server that reads Reminders (e.g.
apple-reminders). - Ask Claude to list reminder lists.
- The MCP call returns
Reminder permission denied. No system prompt appears, and the app never shows up in Settings → Privacy → Reminders.
Evidence
/usr/bin/log show --predicate 'subsystem == "com.apple.TCC"' --info shows:
tccd: [com.apple.TCC:access] AUTHREQ_PROMPTING: msgID=…, service=kTCCServiceReminders,
subject=Sub:{com.anthropic.claude-code}Resp:{TCCDProcess: identifier=com.anthropic.claude-code,
…binary_path=/Users/<me>/Library/Application Support/Claude/claude-code/2.1.121/claude.app/Contents/MacOS/claude}
tccd: [com.apple.TCC:access] Refusing authorization request for service kTCCServiceReminders
and subject Sub:{com.anthropic.claude-code} … without NSRemindersUsageDescription key
Inspecting the bundle confirms only one usage-description key is present:
$ /usr/libexec/PlistBuddy -c "Print" \
"/Users/<me>/Library/Application Support/Claude/claude-code/2.1.121/claude.app/Contents/Info.plist" \
| grep -i usage
NSMicrophoneUsageDescription = Claude Code uses the microphone for voice dictation.
Claude Model
Not sure / Multiple models
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude Code Desktop 2.1.121 (macOS)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
Title: Desktop bundle missing NSRemindersUsageDescription (and likely Calendars/Contacts) — TCC silently denies all Reminders MCP calls
Version: Claude Code Desktop 2.1.121 (macOS)
Summary
The Claude Code Desktop app bundle does not declare NSRemindersUsageDescription in its Info.plist. As a result, any MCP server that calls EventKit for Reminders (e.g. apple-reminders) is silently denied by TCC — the OS never shows a permission prompt, and there is no entry in System Settings → Privacy & Security → Reminders for the user to enable. The CLI version of Claude Code is unaffected, presumably because it ships with the right key.
Reproduction
- On macOS, install Claude Code Desktop 2.1.121.
- Configure an MCP server that reads Reminders (e.g.
apple-reminders). - Ask Claude to list reminder lists.
- The MCP call returns
Reminder permission denied. No system prompt appears, and the app never shows up in Settings → Privacy → Reminders.
Evidence
/usr/bin/log show --predicate 'subsystem == "com.apple.TCC"' --info shows:
tccd: [com.apple.TCC:access] AUTHREQ_PROMPTING: msgID=…, service=kTCCServiceReminders,
subject=Sub:{com.anthropic.claude-code}Resp:{TCCDProcess: identifier=com.anthropic.claude-code,
…binary_path=/Users/<me>/Library/Application Support/Claude/claude-code/2.1.121/claude.app/Contents/MacOS/claude}
tccd: [com.apple.TCC:access] Refusing authorization request for service kTCCServiceReminders
and subject Sub:{com.anthropic.claude-code} … without NSRemindersUsageDescription key
Inspecting the bundle confirms only one usage-description key is present:
$ /usr/libexec/PlistBuddy -c "Print" \
"/Users/<me>/Library/Application Support/Claude/claude-code/2.1.121/claude.app/Contents/Info.plist" \
| grep -i usage
NSMicrophoneUsageDescription = Claude Code uses the microphone for voice dictation.
Suggested fix
Add the missing usage-description keys to the desktop bundle's Info.plist so TCC will prompt and so the app appears in Settings:
NSRemindersUsageDescriptionNSCalendarsUsageDescription(theapple-calendar/mcp__apple-…__calendar_*tools will hit the same wall)NSContactsUsageDescription(same, for any contacts-touching MCP)- Worth auditing the rest of the TCC-gated services (Photos, Full Disk Access, Documents folder, etc.) for any MCPs that may also reach them.
Workaround
Use the CLI version of Claude Code for any work that touches Reminders / Calendar / Contacts.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗