[BUG] Claude Desktop's built-in terminal can never get Apple Events (Automation) permission

Status Fixed / completed
Reported on v2.1.209
Maintainer reply None cached
Activity 1 comment · opened Jul 17, 2026 · closed Aug 7, 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?

Running a command from Claude Desktop's built-in terminal that sends an Apple Event to another app (for example, BBEdit's bbdiff/bbedit CLI tools controlling BBEdit.app) always fails with macOS error -1743 ("not permitted to send Apple Events"). No permission dialog ever appears, and no entry for Claude ever appears under System Settings > Privacy & Security > Automation, so there is no way to grant the permission by hand either.

What Should Happen?

macOS should show a one-time consent dialog ("claude wants to control BBEdit"). Accepting it should let future calls proceed, with the grant then visible and toggleable under System Settings > Privacy & Security > Automation.

Error Messages/Logs

% bbedit pyproject.toml
You must allow the application which is running `bbedit` to send events to the BBEdit application.
Please make appropriate changes in your Security & Privacy system preferences,
or contact your terminal/IDE application's developer for assistance.
bbedit: error: -1743

Steps to Reproduce

  1. Configure a tool that sends Apple Events to another app from the command line, for example BBEdit's bbdiff: git config --global difftool.bbdiff.cmd 'bbdiff --wait --resume $REMOTE $LOCAL'
  2. Open Claude Desktop's built-in terminal.
  3. Run bbedit some-file.txt or git difftool -t bbdiff.
  4. Observe the immediate -1743 failure, with no permission dialog and no entry created under Automation settings.

Claude Model

Sonnet (default)

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

Claude Desktop 1.22209.0 (bundles claude-code 2.1.209)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other

Additional Information

macOS's unified log (log show --predicate 'process == "tccd"') shows the request being denied by policy before any prompt is shown:

tccd: [com.apple.TCC:access] AccessRequestIndirect: Policy disallows prompt for com.anthropic.claudefordesktop; access to kTCCServiceAppleEvents denied

Comparing entitlements confirms why. The top-level /Applications/Claude.app (com.anthropic.claudefordesktop) has neither an NSAppleEventsUsageDescription key in its Info.plist nor the com.apple.security.automation.apple-events entitlement:

$ /usr/libexec/PlistBuddy -c "Print :NSAppleEventsUsageDescription" /Applications/Claude.app/Contents/Info.plist
Print: Entry, ":NSAppleEventsUsageDescription", Does Not Exist

$ codesign -d --entitlements :- /Applications/Claude.app
... (com.apple.security.automation.apple-events absent)

The nested helper bundle at ~/Library/Application Support/Claude/claude-code/<version>/claude.app (com.anthropic.claude-code) has both, and Apple Events sent under that identity work correctly once approved, including after restarting Claude Desktop and on cold invocations with no prior priming — confirming the entitlement is the actual gate, not something environmental.

Related issues

Neither of these is a duplicate but both are instances of the same underlying pattern (a Hardened Runtime bundle missing an Apple Events entitlement) on different bundles:

  • #52712 (closed, auto-stale) — same missing-entitlement pattern, but on com.anthropic.claude-code (the nested CLI helper), not the top-level app. Appears fixed for that bundle in current versions, though closed by the stale-bot rather than a maintainer confirming a fix.
  • #77081 (open) — a different mechanism (the standalone CLI installer's unbundled binary changing path on every update, causing repeated re-prompts) on a third bundle (the standalone CLI, not the Desktop app).

Suggested fix

Either add NSAppleEventsUsageDescription and the com.apple.security.automation.apple-events entitlement to the top-level Claude.app bundle, or route the built-in terminal's subprocess spawning through the already-entitled claude-code helper's identity instead of the top-level app's.

View original on GitHub ↗

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