I've developed a Mac app distributed through the App Store that uses NSAppleScript to control Spotify and Apple Music. I'm experiencing inconsistent behavior with automation permission prompts that's affecting user experience.
Expected Behavior:
When my app first attempts to send Apple Events to Spotify or Apple Music, macOS should display the automation permission prompt, and upon user approval, the app should appear in System Preferences > Security & Privacy > Privacy > Automation.
Actual Behavior:
Initial permission prompts work correctly when both apps are actively used after my app download. If a user hasn't launched Spotify/Apple Music for an extended period, the permission prompt fails to appear when they later open the music app. The music app doesn't appear in the Automation privacy pane too. Once this happens, permission prompts never trigger again for that app
Steps to Reproduce:
Fresh install of my app
Don't use Spotify for several days/weeks
Launch Spotify
Trigger Apple Events from my app to Spotify
No permission prompt appears, app doesn't show in Automation settings
If you're using Apple Music during this time it runs without any problems.
Troubleshooting Attempted:
Used tccutil reset AppleEvents [bundle-identifier] - no effect
Verified target apps are fully launched before sending Apple Events
Tried different AppleScript commands to trigger permissions
Problem occurs inconsistently across different Macs
Technical Details:
macOS 13+ support
Using standard NSAppleScript with simple commands like "tell application 'Spotify' to playpause"
App Store distribution (no private APIs)
Issue affects both Spotify and Apple Music but seems more prevalent with Apple Music
Questions:
Is there a reliable way to programmatically trigger the automation permission prompt?
Are there timing dependencies for when macOS decides to show permission prompts?
Could app priority/usage patterns affect permission prompt behavior?
I use MediaManager to run the functions and initialize it on AppDidFinishLaunching method and start monitoring there.
Any insights or workarounds would be greatly appreciated. This inconsistency is affecting user onboarding and app functionality.
Entitlements
RSS for tagEntitlements allow specific capabilities or security permissions for your apps.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hello Everyone,
I am currently building an app using React Native with Swift bridging, integrating VoIP functionality using Twilio, PushKit, and CallKit. I am encountering the following issue during development:
"The current provisioning profile doesn't include the com.apple.developer.voip-push-notification entitlement."
What I’ve Done So Far:
VoIP Certificate: I have created a valid VoIP Services certificate in the Apple Developer portal.
Bundle Identifier and Provisioning Profile: A new Bundle ID was created specifically for this app. I created a provisioning profile for this Bundle ID and downloaded it for use in Xcode.
Xcode Capabilities
Push Notifications: Enabled
Background Modes: Voice over IP: Enabled, Remote notifications: Enabled
Entitlements File
I have an entitlements file named VoiceCallDemoProjectRelease.entitlements with the following content:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.voip-push-notification</key>
<true/>
</dict>
</plist>
This entitlements file is properly linked in the project’s build settings.
Project Setup
I have integrated PushKit for VoIP push handling and CallKit for incoming call UI and control.
Problem:
In the Apple Developer portal under my App ID settings, I only see an option to enable Push Notifications.
There is no option available to enable Voice over IP, and therefore the provisioning profile generated does not include the com.apple.developer.voip-push-notification entitlement.
Despite enabling VoIP background mode in Xcode, adding the entitlement in my project, and using a valid VoIP certificate, the profile does not include the required entitlement.
Additional Information:
I am using an Individual Apple Developer Account, not an Organization account.
I have already attempted re-downloading the provisioning profile, restarting Xcode, and cleaning the build folder.
Question:
What steps should I take to resolve this and ensure that the com.apple.developer.voip-push-notification entitlement is included in my provisioning profile?
Is this limitation due to the type of developer account (individual vs. organization), and do I need to upgrade to an Organization account to access this entitlement?
Is there any way to request for 'com.appple.developer.voip-push-notification' entitlement to Apple Team ?
Any clarification would be appreciated.
Thank you.
Hi
I am building obs studio using cmake and Xcode.
I used
cmake --preset macos -DOBS_CODESIGN_IDENTITY="" to generate the build folder
and inside X code used Provisioning Profile with Developer ID Application certification.
The build was generated successfully but when I tried to turn on the virtual camera I see missing Missing entitlement com.apple.developer.system-extension.install error.
(My Provisioning profile has System Extension Capability checked on apple developer portal)
If I use this flow instead:
cmake --preset macos -DOBS_CODESIGN_TEAM=63B5A5WDNG
Build using Xcode with Automatic manage signing with Apple Developer Certificate.
Obs studio builds successfully and Virtual camera extension also works fine.
My primary goal is to notarise my app which contains OBS studio and Blackhole Audio driver for distribution outside app store.
If I try to sign my obs app generated in second step
codesign --deep --force --timestamp --verify --verbose \
--options runtime
--sign "Developer ID Application:***"
"OBS.app"
The obs app fails to launch due to some errors.
Can anyone please guide me which step I might be doing wrong,
Much Appreciated.
Thanks
Two months ago we got approval for using the Notification Filtering entitlement. We rushed out to implement it in our app, only to find out that the permission was set for the wrong bundle identifier.
We expected to get the permission for the notification extension's bundle identifier, yet it is added for the main app's bundle identifier.
Per the official docs, the entitlement permission should be in the notification service extension target:
After you receive permission to use the entitlement, add com.apple.developer.usernotifications.filtering to the entitlements file in the Notification Service Extension target.
However, this fails to get signed when compiling for non-simulator targets because of the bundle mismatch issue. Simulator perfectly filters notifications.
Adding the entitlement to the main app does compile, but filtering does not work (as expected).
We reached out to Apple twice (Case-ID: 14330583) but we have yet to receive any response.
Could there be something else wrong instead of the identifier mismatch?
Topic:
Code Signing
SubTopic:
Entitlements
Tags:
Entitlements
Code Signing
App ID
User Notifications
Hello,
Unable to see the App Sandbox entitlement while creating a new App ID. Have tried to recreate APP ID multiple times. Don't see the option in Developer portal.
I have an app that runs as a status bar app, mostly. I have set the following in the info.plist file for the app:
<key>Application is agent (UIElement)</key>
<true/>
However, I get a compile error:
Provisioning profile Mac Team Provisioning Profile: yout.Drive doesn't include the Application is agent (UIElement) entitlement.
Checking the entitlements, I do not see this entitlement anywhere. Where and how do I set this?
Good afternoon,
Our team is currently developing a mobile application that includes video call functionality, and we are seeking the optimal approach to enable incoming calls on iOS devices.
Ideally, we would like calls to be delivered even when the app is completely closed or after the device is restarted. As I understand it, this may require obtaining VoIP permissions; otherwise, calls may only work when the app is open or running in the background.
I would appreciate it if you could confirm my understanding and advise me on the steps or requirements for obtaining the appropriate permissions.
Currently, when I try to launch the app in XCode, I see an error (screenshot).
Hi Apple Developer Community,
I'm experiencing an issue with Family Controls entitlements for my iOS app that I'd like to discuss and see if others have encountered similar problems.
Background:
My app (BrightStart) uses Family Controls to help users build healthy morning routines by temporarily blocking distracting apps until they complete a sunlight exposure session. The core functionality relies on automatic time-based blocking (e.g., block social media apps from 6-8am daily).
The Problem:
I have Family Controls working perfectly in development builds, but I'm blocked from distributing via TestFlight due to entitlement issues with my Device Activity Monitor extension.
Technical Details:
Main app bundle ID: app.brightstart.app
✅ Has both "Family Controls (Development)" and "Family Controls (Distribution)" options available
Extension bundle ID: app.brightstart.app.BrightStartMonitorExtension
❌ Only shows "Family Controls (Development)" - no Distribution option
Error when archiving for TestFlight:
❌ Provisioning profile failed qualification
Profile doesn't support Family Controls (Development).
Family Controls (Development) feature is for development only.
Please use Family Controls (Distribution) for distribution.
Impact:
Cannot upload to TestFlight for beta testing
Native FamilyActivityPicker falls back to mock UI in distributed builds
Automatic scheduled app blocking (via DeviceActivityMonitor) doesn't function in production
Questions for the community:
Has anyone successfully gotten "Family Controls (Distribution)" enabled for a Device Activity Monitor extension?
Is this a known limitation, or should I expect this option to be available?
Are there alternative approaches for time-based automatic app blocking that work in distribution builds?
Should I contact Apple Support directly about enabling this entitlement for the extension?
Btw, Cursor wrote this summary above, so it could be just hallucinating the issue? Would really appreciate anyone's thoughts here.
Hello everyone,
I'm hoping to find a solution for a critical issue that is blocking my app's submission to the App Store.
My app uses the Screen Time API and therefore has a main app and a DeviceActivityMonitor extension.
The main app has been successfully granted the Family Controls (Distribution) entitlement. However, the DeviceActivityMonitor extension is stuck with only the Family Controls (Development) entitlement.
This mismatch causes my build to fail during the archive/distribution process with the error:
"Provisioning profile failed qualification. Profile doesn't support Family Controls (Development)."
This is a hard blocker, as the extension is a mandatory part of the API. I have already filled out the entitlement request form and also contacted Developer Support (Case #102666581576), who confirmed they could not assist and directed me here.
My question is:
What is the correct procedure to escalate or resolve the issue of a required extension not receiving the distribution-level Family Controls entitlement after the main app has already been approved?
Has anyone else encountered this specific "Development" vs. "Distribution" mismatch and found a definitive way to resolve it? Any guidance would be greatly appreciated.
Thank you!
The capability associated with "FAMILY_CONTROLS" could not be determined. Please file a bug report at https://feedbackassistant.apple.com and include the Update Signing report from the Report navigator.
Topic:
Code Signing
SubTopic:
Entitlements
Hi Apple DTS & community folks,
I’m reaching out regarding an issue we’ve encountered with the com.apple.developer.mail-client capability for our app (bundle identifier: so.notion.Mail).
We were granted this entitlement last week to allow the app to be set as a default Mail client. While everything works as expected when archiving and distributing builds locally in Xcode, we’re running into a problem when using Xcode Cloud. Specifically, Xcode Cloud attempts to archive and distribute an Ad-Hoc build, but the Ad-Hoc provisioning profile does not include this special entitlement. Since we’re using Xcode-managed profiles, we don’t have the ability to create or adjust an explicit profile ourselves.
This issue only arises in Xcode Cloud—local distribution works unless we explicitly attempt an Ad-Hoc build (which is not our intent). I’ve included a screenshot of the error for reference.
We found this forum post describing the same issue, where the resolution was Apple enabling the entitlement for Ad-Hoc builds.
We’d like to request that Apple enable this capability for Ad-Hoc builds for the Notion Mail application so that Xcode Cloud distribution functions correctly.
Thank you for your help!
Hello,
We have a working application with several entitlements - com.apple.developer.endpoint-security.client and com.apple.developer.team-identifier.
Recently, the Developer ID signing certificate expired and we created a new one according to the instructions on the website. Also the provisioning profile for those entitlements expired so we edited it to use the new certificate.
We built using xcodebuild in a script and signed with codesign, We supply the certificate id and the entitlement in a plist file like this :
codesign --timestamp --force --sign "${application_signature}" --options=runtime "${obj}" --entitlements "${SR_ENTITLEMENT_PATH}"
(those env vars hold the correct values for the cert id and plist path as far as we checked).
The signing works and looks ok with "codesign -dvvv":
(XXXX replaces the real file name for privacy)
Signature size=9050
Authority=Developer ID Application: XXXXXX. (XXXXX)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=16 Oct 2025 at 11:09:53 AM
Info.plist=not bound
TeamIdentifier=XXXXX
Runtime Version=14.5.0
Sealed Resources=none
Internal requirements count=1 size=184
[Dict]
[Key] com.apple.application-identifier
[Value]
[String] XXXXX.com.XXXX.XXXX
[Key] com.apple.developer.endpoint-security.client
[Value]
[Bool] true
[Key] com.apple.developer.team-identifier
[Value]
[String] XXXXXX`
But when the app need to run it is killed and the console shows the following:
amfid: /private/tmp/XXXXX not valid: Error Domain=AppleMobileFileIntegrityError Code=-420 "The signature on the file is invalid" UserInfo={NSURL=file:///private/tmp/XXXXX, NSLocalizedDescription=The signature on the file is invalid} kernel: mac_vnode_check_signature: /private/tmp/CybereasonSensor: code signature validation failed fatally: When validating /private/tmp/XXXXX: Code has restricted entitlements, but the validation of its code signature failed.
We didn't change any code or build differently (it's done by a CI jenkins job.
So if the file is signed and the and has the entitlements why does it fail? what should be done?
Thanks,
Boaz
Topic:
Code Signing
SubTopic:
Entitlements
I'm trying to add keychain-access-groups capability to my app for MacOs devices and I'm getting an error while signing the code.
If I add this capability to an app for iOS devices, this does not happen and it works correctly. Are there any limitations to using this capability on MacOS devices?
My entitlement file is the following:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.cqesolutions</string>
</array>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
<key>com.apple.security.smartcard</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.cqesolutions.desktopDNIe</string>
<!--<string>$(AppIdentifierPrefix)com.apple.token</string>-->
<string>com.apple.token</string>
</array>
</dict>
</plist>
Topic:
Code Signing
SubTopic:
Entitlements
Hi,
At work, we've done some development on an Apple Vision Pro. On the project, we used object tracking to track an object in 3D and found the default tracking refresh rate (I believe 5Hz)to be too slow so we applied for enterprise APIs so we could change it.
At some point, in the capabilities (as a beginner to Swift and the Apple development environment) I noticed that's where you enable the Object Tracking Parameter Adjustment API and I did so, before hearing back about whether we got access to the enterprise API's and the license file that comes with it. So I setup the re-fresh rate to 30Hz and logged the settings of the ObjectTrackingProvider, showing it was set at 30Hz and felt like it was better than the default when we ran our app. In the Xcode runtime logs, there was no warning or error saying that the license file for the enterprise API was not found (and I don't think we heard back from Apple if they had granted our request or not - even if they did I think the license would be expired by now).
Fast forward to today, I was running the sample code of the Main Camera access for VisionOS linked in the official developer documentation and when I ran the project in Xcode, I noticed in the logs that it wanted an enterprise license and that's why it wasn't running as expected in the immersive space. We've since applied for the Enterprise API for Main Camera Access.
I'm now confused - did I mistakenly believe the object tracking refresh rate was set to 30Hz but it actually wasn't due to the lack of a license file/being granted access to the enterprise APIs? It seemed to be running as expected without a license file. Is Object tracking Parameter Adjustment API handled with different permissions than Main Camera Access API even though they are both enterprise APIs?
This is all for internal development and not planning on distributing an app but I find the behaviour to be confusing between the different enterprise API? Does anyone have more insight as I find the developer notes on the enterprise APIs to be a bit sparse.
Hello,
I went through the verification process to get the Tap to Pay on iPhone entitlement, and after a couple of corrections I was finally assured that I was granted the entitlement for production use.
However, in App Store Connect, I can only see "Development" for "Provisioning Support" of the entitlement, and I'm not able to publish the app to Testflight because the profile doesn't support the entitlement (I'm using automatic code signing with XCode).
Where is this going wrong? The Tap to Pay support assured me they granted the right entitlement and pointed me to the developer support.
Thank you,
Johannes
We've been trying to get the CarPlay Navigation Entitlement for a couple years now without much luck.
Did you have a similar experience? How did you succeed getting the entitlement?
Part of the form requires us to submit Screenshots. Did you provide screenshots of your on-device experience or wireframe for CarPlay?
How was your experience?
Hi All,
Like many others I'm a little confused with gaining access to the family controls capability.
Our app is ready to push to testflight, and we sent the request to apple last week. However only learning today that we need to request for the shield extension as well.
I wanted to ask what the expected timeline is for being approved?
I've seen posts here saying less than a week, and some people having to wait longer than 6 weeks.
Any advise or guidance on getting approved smoothly & swiftly would be highly appreciated
This issue keeps cropping up on the forums and so I decided to write up a single post with all the details. If you have questions or comments:
If you were referred here from an existing thread, reply on that thread.
If not, feel free to start a new thread. Use whatever topic and subtopic is appropriate for your question, but also add the Entitlements tag so that I see it.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
Determining if an entitlement is real
In recent months there’s been a spate of forums threads involving ‘hallucinated’ entitlements. This typically pans out as follows:
The developer, or an agent working on behalf of the developer, changes their .entitlements file to claim an entitlement that’s not real. That is, the entitlement key is a value that is not, and never has been, supported in any way.
Xcode’s code signing machinery tries to find or create a provisioning profile to authorise this claim.
That’s impossible, because the entitlement isn’t a real entitlement. Xcode reports this as a code signing error.
The developer misinterprets that error [1] in one of two ways:
As a generic Xcode code signing failure, and so they start a forums thread asking about how to fix that problem.
As an indication that the entitlement is managed — that is, requires authorisation from Apple to use — and so they start a forums thread asking how to request such authorisation.
The fundamental problem is step 1. Once you start claiming entitlements that aren’t real, you’re on a path to confusion.
Note If you’re curious about how provisioning profiles authorise entitlement claims, read TN3125 Inside Code Signing: Provisioning Profiles.
There are a couple of ways to check whether an entitlement is real. My preferred option is to create a new test project and use Xcode’s Signing & Capabilities editor to add the corresponding capability to it. Then look at what Xcode did. You might find that Xcode claimed a different entitlement, or added an Info.plist key, or did nothing at all.
IMPORTANT If you can’t find the correct capability in the Signing & Capabilities editor, it’s likely that this feature is available to all apps, that is, it’s not gated by an entitlement or anything else.
Another thing you can do is search the documentation. The vast majority of real entitlements are documented in Bundle Resources > Entitlements.
IMPORTANT When you search for documentation, focus on the Apple documentation. If, for example, you search the Apple Developer Forums, you might be mislead by other folks who are similarly confused.
If you find that you’re mistakenly trying to claim a hallucinated entitlement, the fix is trivial:
Remove it from your .entitlements file so that your app starts to build again.
Then add the capability using Xcode’s Signing & Capabilities editor. This will do the right thing.
If you continue to have problems, feel free to ask for help here on the forums. See the top of this post for advice on how to do that.
[1] It’d be nice if the Xcode errors were more clear in this case (r. 155327166).
Commonly Hallucinated Entitlements
This section lists some of the more commonly hallucinated entitlements:
com.apple.developer.push-notifications — The correct entitlement is aps-environment (com.apple.developer.aps-environment on macOS), documented here. There’s also the remote-notification value in the UIBackgroundModes property.
com.apple.developer.in-app-purchase — There’s no entitlement for in-app purchase. Rather, in-app purchase is available to all apps with an explicit App ID (as opposed to a wildcard App ID).
com.apple.InAppPurchase — Likewise.
com.apple.developer.storekit — Likewise.
com.apple.developer.in-app-purchase.non-consumable — Likewise.
com.apple.developer.in-app-purchase.subscription — Likewise.
com.apple.developer.app-groups — The correct entitlement is com.apple.security.application-groups, documented here. And if you’re working on the Mac, see App Groups: macOS vs iOS: Working Towards Harmony.
com.apple.developer.background-modes — Background modes are controlled by the UIBackgroundModes key in your Info.plist, documented here.
UIBackgroundModes — See the previous point.
com.apple.developer.voip-push-notification — There’s no entitlement for this. VoIP is gated by the voip value in the UIBackgroundModes property.
com.apple.developer.family-controls.user-authorization — The correct entitlement is com.apple.developer.family-controls, documented here.
IMPORTANT As explained in the docs, this entitlement is available to all developers during development but you must request authorisation for distribution.
com.apple.developer.device-activity — The DeviceActivity framework has the same restrictions as Family Controls.
com.apple.developer.managed-settings — If you’re trying to use the ManagedSettings framework, that has the same restrictions as Family Controls. If you’re trying to use the ManagedApp framework, that’s not gated by an entitlement.
com.apple.developer.callkit.call-directory — There’s no entitlement for the Call Directory app extension feature.
com.apple.developer.nearby-interaction — There’s no entitlement for the Nearby interaction framework.
com.apple.developer.secure-enclave — On iOS and its child platforms, there’s no entitlement required to use the Secure Enclave. For macOS specifically, any program that has access to the data protection keychain also has access to the Secure Enclave [1]. See TN3137 On Mac keychain APIs and implementations for more about the data protection keychain.
com.apple.developer.networking.configuration — If you’re trying to configure the Wi-Fi network on iOS, the correct entitlement is com.apple.developer.networking.HotspotConfiguration, documented here.
com.apple.developer.musickit — There is no MusicKit capability. Rather, enable MusicKit via the App Services column in the App ID editor, accessible from Developer > Certificates, Identifiers, and Profiles > Identifiers.
com.apple.mail.extension — Creating an app extension based on the MailKit framework does not require any specific entitlement.
com.apple.security.accessibility — There’s no entitlement that gates access to the Accessibility APIs on macOS. Rather, this is controlled by the user in System Settings > Privacy & Security. Note that sandboxed apps can’t use these APIs. See the Review functionality that is incompatible with App Sandbox section of Protecting user data with App Sandbox.
com.apple.developer.adservices — Using the AdServices framework does not require any specific entitlement.
[1] While technically these are different features, they are closely associated and it turns out that, if you have access to the data protection keychain, you also have access to the SE.
Revision History
2025-11-03 Added com.apple.developer.adservices to the common hallucinations list.
2025-10-30 Added com.apple.security.accessibility to the common hallucinations list.
2025-10-22 Added com.apple.mail.extension to the common hallucinations list. Also added two new in-app purchase hallucinations.
2025-09-26 Added com.apple.developer.musickit to the common hallucinations list.
2025-09-22 Added com.apple.developer.storekit to the common hallucinations list.
2025-09-05 Added com.apple.developer.device-activity to the common hallucinations list.
2025-09-02 First posted.