Safeguard
Developer Tools•

What is an Apple provisioning profile and what does it authorize?

A provisioning profile tells Apple devices who may sign an app, which app, where and when it runs, and which entitlements it gets. Here is how to read one.

Safeguard Security Team
4 min read

A provisioning profile is a signed file from Apple that authorizes your app to run on Apple devices. It ties together who may sign, which app, where it can run, when it can run, and which entitlements it may claim. Except on macOS, devices will not run third-party code without one.

Definition

Apple's technote on provisioning profiles explains the idea. Apple platforms, except macOS, do not run arbitrary third-party code. Execution has to be authorized by Apple, and the authorization is a profile. The profile answers five questions:

QuestionWhere the answer lives in the profile
Who is allowed to sign code?The developer certificates list
What apps may they sign?The App ID, which can include a wildcard
Where can those apps run?The provisioned devices list, absent for store profiles
When can those apps run?The expiration date
How can those apps be entitled?The entitlements allowlist

You create profiles on the Apple Developer website, directly or through Xcode. The site signs the profile cryptographically, and a device checks that signature before it checks that the app meets the profile's criteria.

How to read one

Apple shows that a profile is a property list wrapped in a Cryptographic Message Syntax signature. You can remove the wrapper with the security tool to view the contents:

security cms -D -i MyApp.mobileprovision -o payload.plist

Apple adds a caution. The format is not documented and could change, so use these techniques to understand and debug, not to build a product on. It also notes that the plain property list view is no longer the source of truth on modern systems.

The entitlements allowlist

This is the part with a security effect. The entitlements in a profile are an allowlist, which is different from the entitlements your app claims. To use an entitlement, you include it in the app's code signature. Every entitlement the app claims must appear in the profile's allowlist, but the profile may list extras.

Wildcards can appear in the profile, such as a keychain access group with a prefix. Apple says wildcards make no sense in the app's own signature.

For debugging, dump what the app claims with the code signing tool's entitlements display, and compare it to the profile.

Device scope by profile type

Apple's technote says store distribution profiles have no device list because you cannot run a store-signed app locally. Developer ID and in-house profiles have no device list either, in the sense that they apply to all devices. Development profiles list specific devices.

macOS is different

On macOS a profile is not needed to run third-party code. Apple adds that restricted entitlements must still be authorized by a profile, which means other developers cannot impersonate your app to steal its keychain items. A Mac app that uses no restricted entitlements does not need a profile, with TestFlight as the exception.

Practical habits

  1. Store profiles with the same care as certificates, and track their expiry.
  2. After a build, compare claimed entitlements to the profile allowlist.
  3. Avoid broad wildcard App IDs for production apps where you can.
  4. Re-create profiles when a certificate changes.

Where Safeguard fits

A profile limits what your own signed app can do. It does not describe the libraries inside. Safeguard offers dependency scanning and SBOMs for that, with a free scan at gold.safeguard.sh/scan.

Quick check

Does every Apple platform need a provisioning profile?

Apple says macOS does not require one to run third-party code. Other Apple platforms do.

Can my app claim an entitlement that is not in the profile?

No. Every entitlement the app claims must be in the profile's allowlist. The reverse is fine.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.