claude-code - 💡(How to fix) Fix [BUG] Desktop bundle missing `NSRemindersUsageDescription` (and likely Calendars/Contacts) — TCC silently denies all Reminders MCP calls [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#55692Fetched 2026-05-03 04:46:58
View on GitHub
Comments
0
Participants
1
Timeline
5
Reactions
0
Author
Participants
Timeline (top)
labeled ×5

Error Message

Error Messages/Logs

Root Cause

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.

Fix Action

Fix / Workaround

Workaround

Code Example

$ /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.

---

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

---

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

---

$ /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.

---

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

---

$ /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.
RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • 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.

extent analysis

TL;DR

Add the missing NSRemindersUsageDescription key to the Claude Code Desktop app bundle's Info.plist to enable TCC permission prompts for Reminders.

Guidance

  • Verify the absence of the NSRemindersUsageDescription key in the Info.plist file using PlistBuddy, as shown in the issue description.
  • Add the NSRemindersUsageDescription key to the Info.plist file with a suitable description, e.g., "Claude Code uses Reminders to manage your tasks."
  • Consider adding other missing usage-description keys, such as NSCalendarsUsageDescription and NSContactsUsageDescription, to avoid similar issues with other services.
  • Test the updated app to ensure that TCC permission prompts appear as expected for Reminders and other services.

Example

<key>NSRemindersUsageDescription</key>
<string>Claude Code uses Reminders to manage your tasks.</string>

Add this snippet to the Info.plist file to declare the NSRemindersUsageDescription key.

Notes

The issue only affects the Claude Code Desktop app bundle, while the CLI version is unaffected. The fix should be applied to the desktop bundle's Info.plist file.

Recommendation

Apply the workaround by adding the missing usage-description keys to the desktop bundle's Info.plist file, as this will enable TCC permission prompts and allow the app to function as expected.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix [BUG] Desktop bundle missing `NSRemindersUsageDescription` (and likely Calendars/Contacts) — TCC silently denies all Reminders MCP calls [1 participants]