[BUG] Desktop bundle missing `NSRemindersUsageDescription` (and likely Calendars/Contacts) — TCC silently denies all Reminders MCP calls

Resolved 💬 1 comment Opened May 3, 2026 by obueno Closed Jun 1, 2026

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

  1. On macOS, install Claude Code Desktop 2.1.121.
  2. Configure an MCP server that reads Reminders (e.g. apple-reminders).
  3. Ask Claude to list reminder lists.
  4. 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

  1. On macOS, install Claude Code Desktop 2.1.121.
  2. Configure an MCP server that reads Reminders (e.g. apple-reminders).
  3. Ask Claude to list reminder lists.
  4. 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:

  • NSRemindersUsageDescription
  • NSCalendarsUsageDescription (the apple-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.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗