Claude desktop app (com.anthropic.claudefordesktop) missing NSScreenCaptureUsageDescription/NSAppleEventsUsageDescription — blocks Screen Recording/Automation grants
Summary
When running shell commands via a Claude Code session hosted inside the Claude
desktop app on macOS, screencapture and AppleScript calls to System Events
fail with permission errors — and the app never appears as a grantable option
in System Settings → Privacy & Security → Screen Recording or → Automation,
so there's no way to fix it from the Settings UI.
Root cause
com.anthropic.claudefordesktop's own Info.plist has neitherNSScreenCaptureUsageDescription nor NSAppleEventsUsageDescription declared.
Without these usage-description keys, macOS TCC won't offer a consent prompt
or a listable entry for either permission — it just silently denies instead
of asking.
Reproduction
- In a Claude Code session running under the Claude desktop app, run:
screencapture -x -R 0,0,100,100 -t png /tmp/test.png
→ fails with "could not create image from rect"
- Run:
osascript -e 'tell application "System Events" to name of first application process whose frontmost is true'
→ fails with "Not authorized to send Apple events to System Events. (-1743)"
- Check System Settings → Privacy & Security → Screen Recording and →
Automation — the app is absent from both lists, so there's nothing to
toggle on.
- Confirmed via the bundle itself:
codesign -dv Claude.app → Identifier=com.anthropic.claudefordesktop
/usr/libexec/PlistBuddy -c "Print :NSScreenCaptureUsageDescription" Claude.app/Contents/Info.plist
→ Does Not Exist (same for NSAppleEventsUsageDescription)
Workaround
Running the identical commands from a plain Terminal.app window (outside the
Claude desktop app) works, since Terminal already declares these usage
descriptions.
Impact
Any workflow that needs a Claude Code session (run via the desktop app,
specifically) to actually invoke screencapture or send Apple Events is
silently blocked, with no path to grant permission through normal Settings
UI, since the app never gets the chance to be listed or request it.
Suggested fix
Add NSScreenCaptureUsageDescription and NSAppleEventsUsageDescription
(with a real user-facing explanation string) to the desktop app'sInfo.plist so macOS can prompt for and list these permissions normally.
Environment note
Reproduced on an instance of Claude.app run from a mounted disk image
(/Volumes/Claude/Claude.app) rather than an /Applications-installed copy.
Info.plist content shouldn't depend on install location, but noting this in
case it turns out to matter.