Block apps with a configuration profile (.mobileconfig)
A .mobileconfig file can hide hundreds of apps on supervised iPhones and iPads in one go, through any MDM or Apple Configurator. This guide covers the exact keys, which need supervision, a full working example, and how to build, sign, deploy and test the profile.
<key>PayloadType</key> <string>com.apple.applicationaccess</string> <key>blockedAppBundleIDs</key> <array> <string>com.zhiliaoapp.musically</string> <string>com.toyopagroup.picaboo</string> <string>ca.psiphon.Psiphon</string> </array>
What is a mobileconfig file?
A .mobileconfig is an Apple configuration profile: a plain XML property list with one or more payloads inside. Names like ios.mobileconfig or app.mobileconfig are just file names; what matters is the payloads.
XML property list
Keys and values in Apple's plist format. You can read and edit it in any text editor.
Payloads
Each payload configures one area: Wi-Fi, VPN, certificates or Restrictions, which is where app blocking lives.
Signed or unsigned
Signing shows the device who made the profile and that nobody changed it. MDMs often handle this for you.
Three ways in
Upload to an MDM, install with Apple Configurator on a Mac, or open it on the device by hand.
Restrictions payload keys that block and allow apps
App rules sit in the Restrictions payload, whose PayloadType is com.apple.applicationaccess. These are the keys that matter, as listed in Apple's device management reference.
| Key | What it does | Supervised | iOS | Status |
|---|---|---|---|---|
| blockedAppBundleIDs | Array of bundle IDs. Listed apps cannot be shown or launched. | Required | 15 and later | Current, marked deprecated from iOS 27 |
| allowListedAppBundleIDs | Array of bundle IDs. Only listed apps can be shown or launched. | Required | 15 and later | Current, marked deprecated from iOS 27 |
| blacklistedAppBundleIDs | Older name for the block list. | Required | 9.3 to 14 | Deprecated in iOS 15 |
| whitelistedAppBundleIDs | Older name for the allow list. | Required | 9.3 to 14 | Deprecated in iOS 15 |
| allowAppInstallation | False turns off the App Store and blocks every user install and update. MDM installs still work. | Required since iOS 13 | All current | Current |
| allowUIAppInstallation | False hides the App Store only. Local installs remain possible. | Required | 9 and later | Current |
| allowAppRemoval | False stops users deleting apps. | Required | 4.2.1 and later | Current |
| allowUIConfigurationProfileInstallation | False stops users installing their own profiles and certificates. | Required | 6 and later | Current |
| ratingApps | Highest App Store age rating allowed, as a number such as 300 for 12+. | Not yet; Apple says it will be | All current | Current |
Anatomy of a blocklist profile
Here is a complete, minimal profile that hides six apps. Replace the identifier and both UUIDs before you use it; every profile and payload needs its own UUID.
<?xml version="1.0" encoding="UTF-8"?> <plist version="1.0"> <dict> 1<key>PayloadContent</key> <array> <dict> 2<key>PayloadType</key> <string>com.apple.applicationaccess</string> <key>PayloadIdentifier</key> <string>org.yourdistrict.blocklist.restrictions</string> <key>PayloadUUID</key> <string>PASTE-NEW-UUID-1</string> <key>PayloadVersion</key> <integer>1</integer> 3<key>blockedAppBundleIDs</key> <array> <string>com.zhiliaoapp.musically</string> <string>com.toyopagroup.picaboo</string> <string>com.roblox.robloxmobile</string> <string>com.nordvpn.NordVPN</string> <string>ca.psiphon.Psiphon</string> <string>com.deepseek.chat</string> </array> </dict> </array> 4<key>PayloadDisplayName</key> <string>App Blocklist</string> <key>PayloadIdentifier</key> <string>org.yourdistrict.blocklist</string> <key>PayloadUUID</key> <string>PASTE-NEW-UUID-2</string> 5<key>PayloadType</key> <string>Configuration</string> <key>PayloadVersion</key> <integer>1</integer> 6<key>PayloadRemovalDisallowed</key> <true/> </dict> </plist>
- 1PayloadContent is the array of payloads. This profile has one, the Restrictions payload.
- 2The Restrictions payload has its own type, identifier, UUID and version 1.
- 3blockedAppBundleIDs lists the apps to hide: TikTok, Snapchat, Roblox, NordVPN, Psiphon and DeepSeek.
- 4Top-level identity: the display name users see, plus an identifier that decides whether a new version replaces the old one.
- 5PayloadType must be Configuration and PayloadVersion must be 1 at the top level.
- 6PayloadRemovalDisallowed stops users removing a manually installed profile on supervised devices.
Apple's own tools also write a standard DOCTYPE line for property lists at the top. Devices read the file either way, but keep it if your editor adds it.
The allowlist variant for shared iPads
For a cart of iPads used by young pupils, an allowlist is often simpler than a blocklist. Swap the key and list only the apps that should be visible.
<key>allowListedAppBundleIDs</key> <array> <string>com.google.Classroom</string> <string>org.khanacademy.Khan-Academy</string> <string>com.duolingo.DuolingoMobile</string> <string>no.mobitroll.kahoot.controller</string> <string>me.see-saw.classroom</string> <string>com.overdrive.dewey</string> </array>
Before you switch to an allowlist
- The example shows Google Classroom, Khan Academy, Duolingo, Kahoot!, Seesaw and Libby.
- Add the built-in apps teachers expect, such as Camera and Safari, by their bundle IDs.
- Add your MDM's own app if it has one on the device.
- Never put an allowlist and a blocklist on the same device without testing.
Find any ID with the lookup further down, or browse popular app bundle IDs.
Build and check the file
You can write a profile by hand, start from Apple Configurator on a Mac (File > New Profile, then add the Restrictions payload), or begin from our ready file. Either way, run these checks before deploying.
Give it fresh UUIDs
Generate one UUID for the profile and one per payload. Reused UUIDs cause confusing install results.
Pick a stable identifier
Use a reverse-DNS name you own, such as your district's domain reversed. Keep it the same for every future version so updates replace the old profile.
Check the XML is valid
On a Mac, plutil reports syntax errors with a line number. A stray character in a long app list is the usual culprit.
Mind the size
Some MDMs cap custom profile size; Intune's limit is 1,000,000 bytes. Large category lists may need splitting into several profiles.
Sign the profile
Signing is optional when an MDM delivers the profile, since the MDM channel is already trusted. For profiles you hand out or install manually, a signature lets the device show who made it and proves the file was not changed.
Apple Configurator on a Mac
Open the profile, choose File > Sign Profile, pick your signing certificate and save. File > Unsign Profile removes the signature when you need to edit again.
macOS Terminal
Uses a signing identity from your keychain.
OpenSSL on any system
Uses a certificate, its private key and the intermediate chain as files.
Use a certificate whose chain the devices trust. A profile signed with an untrusted certificate shows as unverified, which worries users even though it may still install.
Deploy it: MDM, Apple Configurator or by hand
The bundle ID lists only work on supervised devices, so the route you pick should match how your devices are supervised.
Upload to your MDM
- Intune: an iOS/iPadOS custom profile from the Templates list, uploading the file.
- Jamf Pro: upload it as a mobile device configuration profile.
- Meraki: Add profile, then Upload custom Apple profile.
- Scope it to a test group first.
Apple Configurator
- Runs on a Mac and works over USB.
- Select the devices, then Add > Profiles.
- Devices supervised by Apple Configurator honour the block list.
- Good for a lab or a single cart.
Install by hand
- Open the file from Safari, Mail, Files or AirDrop.
- The device shows Profile Downloaded.
- Go to Settings > General > VPN & Device Management.
- Tap the profile, Install, enter the passcode.
How to use Apple Configurator for this job
Apple Configurator on a Mac is the quickest way to supervise a small set of iPads and load a profile in the same session. Labels may shift between versions, but the flow stays the same.
Install and connect
Get Apple Configurator from the Mac App Store, then connect the iPads by USB or a charging cart with data.
Prepare and supervise
Use Prepare to supervise the devices and, if you like, enrol them in your MDM or add them to Apple School Manager. Preparing erases the device.
Add the profile
Select the devices and choose Add > Profiles, then pick the .mobileconfig file. Many MDMs, Jamf Pro among them, also support enrolment through Apple Configurator, so the MDM can deliver later updates.
Block configuration profile changes
A blocklist is only useful if users cannot simply remove it or install a profile of their own. Three settings handle this on supervised devices.
| Setting | Effect | Notes |
|---|---|---|
| PayloadRemovalDisallowed | Users cannot remove the profile. | Supervised only. If the profile carries a removal password, users who know it can still remove it. |
| allowUIConfigurationProfileInstallation | Users cannot install profiles or certificates themselves. | Supervised only. Profiles from your MDM still install. |
| Intune: Block configuration profile changes | Prevents configuration profile changes on the device. | In the iOS/iPadOS device restrictions, General section, for automated device enrolment. |
| MDM-installed profiles | Users cannot remove profiles that the MDM installed on iOS. | Removing the MDM enrolment itself is controlled in your enrolment settings. |
How to edit the configuration profile later
Lists change every month, so plan for updates from day one. The rule is simple: same identifier, new content.
Updating
- Keep the top-level PayloadIdentifier exactly the same.
- Change the bundle ID list.
- Re-sign if you sign, then upload or install again.
- The device replaces the old version.
Starting fresh
- Use a new identifier only when you want a second, separate profile.
- Otherwise devices end up with two overlapping lists.
- Remove the old profile first if you change identifiers.
- Document which identifier means what.
How AppBlockList .mobileconfig files fit
Typing bundle IDs into a profile is where most blocklists go wrong: one typo and the app stays visible. Our files remove that step.
Pick categories
Choose AI tools, VPN and proxy, social media, gaming, gambling, dating and more, optionally with age ratings.
Get the profile
A Restrictions payload with every matching bundle ID, plus plain lists and a CSV with all columns.
Upload or sign
Upload it to your MDM as a custom profile, or sign it with your own certificate first if your process requires it.
Refresh monthly
Each month new apps are added and removed apps dropped. The identifier stays the same, so the update replaces the old one.
See the blocklist feed for all formats, or start from the AI apps list, the VPN and proxy apps list and the social media apps list. Questions about a custom set? Talk to us.
Check a bundle ID before you add it
Test the profile on one supervised device
- plutil reports the file as valid.
- The profile installs without errors on a supervised test iPad.
- Settings shows the profile with the right display name.
- A listed app vanishes from the Home Screen and search.
- An unlisted app still opens normally.
- The Remove button is missing if you disallowed removal.
- A second version with the same identifier replaces the first.
- An unsupervised test device installs it but hides nothing, as expected.
Common errors and fixes
The profile installs but apps are still visible
Profile installation failed
The profile shows as unverified
Intune rejects the upload
Two blocklists fight each other
Teachers lost built-in apps after an allowlist
Frequently asked questions
What is a mobileconfig file?
Which key blocks apps by bundle ID in a configuration profile?
How do I use a mobileconfig file on an iPhone?
Is there an Apple Configurator app for Windows or Android?
How do I edit a configuration profile that is already installed?
How do I stop users removing or adding configuration profiles?
Do I need Apple Configurator to make a mobileconfig file?
Hiding the store as well? Read block the App Store on supervised iPads, and see Apple School Manager app management for supervising school devices.
Ready-made .mobileconfig blocklists
Every category as a tested Restrictions payload, refreshed monthly, alongside bundle ID lists and CSV files. Product makers can license the full app database instead.
Apple, iPhone, iPad, Mac, macOS, iOS, Safari, AirDrop, Apple Configurator, Apple School Manager and Apple Business Manager are trademarks of Apple Inc.
Microsoft Intune is a trademark of Microsoft Corporation. Jamf Pro is a trademark of Jamf. Cisco Meraki is a trademark of Cisco Systems, Inc. Android and Google Classroom are trademarks of Google LLC.
TikTok is a trademark of ByteDance Ltd. Snapchat is a trademark of Snap Inc. Roblox is a trademark of Roblox Corporation. NordVPN, Psiphon, DeepSeek, Khan Academy, Duolingo, Kahoot!, Seesaw, Libby and OpenSSL are trademarks of their respective owners.
Names are used only to identify the products discussed. AppBlockList is not affiliated with, sponsored or endorsed by these companies.