Post

Replies

Boosts

Views

Activity

Reply to MCRestrictionsPayload (allowListedAppBundleIDs) breaks Apple Watch native app enumeration — `nanotimekitcompaniond` reports "Missing .app from directory: /Watch/"
Update — the SiriExtensions workaround does NOT scale. There is no fix inside allowListedAppBundleIDs. Retracting the workaround above. After testing across more devices and iOS versions, no whitelist composition resolves this. Posting an update so other admins stop chasing a dead end. What broke the original "fix" The SiriExtensions pattern (<app> + <app>.SiriExtension + <app>.*Extension) worked on iPhone 16 / iOS 26.4.2 + Apple Watch Series 3 / watchOS 6.3.1. It does not generalize. Reproduced on a second pairing (iPhone 15 / iOS 18.6.2 + modern Watch): Profile Bundle IDs PayloadScope Result Watch-focused (Nano*, Carousel*, .watchapp, SiriExtensions, complications) 451 System All Watch apps disappear Phone-focused superset (third-party + Apple essentials) 481 User All Watch apps disappear Both lists installed cleanly. Both removed every native Watch app within ~30s. Ruled out this round Other payloads in the profile triggering propagation — no, an isolated profile with only applicationaccess + allowListedAppBundleIDs reproduces it PayloadScope: User — no, both User and System reproduce List size or content (Watch-aware vs phone-aware) — no, both fail identically Per-key supportedOS metadata override — no, schema metadata only Wildcard com.apple.* — not a supported value; only com.apple.webapp is documented (Web Clips only) Switching to blockedAppBundleIDs — not viable for kiosk-style allowlists (cannot enumerate "everything except these few") Root cause (reconfirmed) lsd: Sending uninstalledNotifications for ( pluginID=com.apple.MobileSMS.MessagesAssistantExtension pluginID=com.apple.tincan.SiriExtension ... ) Carousel: com.apple.MobileSMS: terminateApplication - uninstalling app (user initiated quit) Carousel: com.apple.tincan: terminateApplication - uninstalling app (user initiated quit) Carousel: com.apple.NanoNowPlaying: terminateApplication - uninstalling app (user initiated quit) The Watch's lsd reads the inherited allowListedAppBundleIDs, marks every PluginKit extension not in the list as "uninstalled," and Carousel cascades by terminating the parent apps — disguised as user initiated quit. Meanwhile Apple's own profiled logs MCRestrictionsPayloadHandler not supported on any Watch version at the same moment the propagation happens. The system acknowledges the incompatibility while still executing the propagation. That's the bug. Why an "exhaustive whitelist" cannot work The Watch enumerates private extensions (*.notifications, *.appex, daemons, transient extension IDs) that aren't documented. New ones ship with each minor release. The check happens on the Watch side, against the inherited list, so any extension you don't anticipate is nuked at install time. It's not a matter of finding the right N bundle IDs — the check shouldn't be running on the Watch at all. The only viable fix: DDM com.apple.configuration.watch.enrollment Declarative Device Management (iOS 16+) lets the MDM server send the Watch its own declarations independent of the iPhone's. The Watch stops inheriting iPhone-side restrictions. For anyone with control over their MDM backend, this is the path. For anyone on a hosted MDM, push your vendor to ship DDM support. TL;DR for admins arriving from search Confirmed bug in how watchOS handles the inherited restriction. Apple's logs label it unsupported on Watch yet still apply it. No working whitelist composition. Don't extend the list — I tried up to 481 entries with SiriExtensions, widgets, complications, watchkit apps, private extensions. Still broken. Removing the profile restores Watch apps after the iPhone re-syncs. Real fix: DDM Watch Enrollment from the MDM server side. No client-side workaround. Environment: iPhone 15 / iOS 18.6.2 (unsupervised), profile installed locally via Safari + Settings. Independent of any MDM server — reproduces with any local .mobileconfig containing allowListedAppBundleIDs.
May ’26
Reply to MCRestrictionsPayload (allowListedAppBundleIDs) breaks Apple Watch native app enumeration — `nanotimekitcompaniond` reports "Missing .app from directory: /Watch/"
Update — root cause found and a working workaround I cracked it. Posting the solution here so other admins can stop trying random bundle IDs. Root cause (confirmed via watchOS sysdiagnose) When you install a profile with com.apple.applicationaccess + allowListedAppBundleIDs, lsd on the paired Apple Watch immediately sends "uninstalledNotifications" for every PluginKit extension whose bundle ID is NOT in the whitelist. The watch's Carousel then cascades by terminating the parent apps that own those extensions, disguising the action as user initiated quit. Captured from watchOS sysdiagnose at the moment of profile install: 17:22:56 lsd: Sending uninstalledNotifications for ( pluginID=com.apple.MobileSMS.MessagesAssistantExtension pluginID=com.apple.tincan.SiriExtension pluginID=com.apple.SessionTrackerApp.SessionTrackerSiriExtension ) 17:23:13 Carousel: com.apple.MobileSMS: terminateApplication - uninstalling app (user initiated quit) 17:23:13 Carousel: com.apple.tincan: terminateApplication - uninstalling app (user initiated quit) 17:23:13 Carousel: com.apple.NanoNowPlaying: terminateApplication - uninstalling app (user initiated quit) 17:23:13 Carousel: com.apple.SessionTrackerApp:terminateApplication - uninstalling app (user initiated quit) 17:23:13 Carousel: com.apple.HeartRate: terminateApplication - uninstalling app (user initiated quit) 17:23:13 Carousel: com.apple.DeepBreathing: terminateApplication - uninstalling app (user initiated quit) This is why adding more parent-app bundle IDs to the whitelist never helped — the whitelist filter is being applied at the PluginKit level, not the application level. The workaround You must whitelist the SiriKit extension bundle IDs of every Apple Watch native app, in addition to the parent bundle ID. Pattern: com.apple.<app> # parent (likely already there) com.apple.<app>.SiriExtension # the missing piece com.apple.<app>.*Extension # any other PluginKit plugins the app ships Confirmed critical extensions For the three apps in my repro: App Parent bundle ID Required extension bundle ID Walkie‑Talkie com.apple.tincan com.apple.tincan.SiriExtension Messages com.apple.MobileSMS com.apple.MobileSMS.MessagesAssistantExtension Workout com.apple.SessionTrackerApp com.apple.SessionTrackerApp.SessionTrackerSiriExtension Validation Two independent install/remove cycles of a profile containing the above (308 bundle IDs total): Cycle 1 (install v3): 0 Watch-side extensions in uninstalledNotifications. Walkie-Talkie, Messages, Find My all stayed visible. Cycle 2 (remove v3 → reinstall v3): same result. Before the fix, the same plugins were uninstalled on every profile install. How to discover the extensions for your deployment The extension bundle IDs can be enumerated directly from the watchOS sysdiagnose. Trigger a sysdiagnose, extract it, then: # inside the extracted Watch sysdiagnose folder: log show --info --debug --last 24h \ --predicate 'eventMessage CONTAINS "pluginID="' \ system_logs.logarchive \ | grep -oE 'pluginID=com\.apple\.[a-zA-Z0-9._-]+' | sort -u Whatever shows up that you care about — add to allowListedAppBundleIDs. What is still a bug (Apple-side) The fact that you have to whitelist watchOS-side extensions through an iOS payload that profiled itself logs as "not supported on any Watch version" is the underlying bug. The workaround above is just rerouting around it. I will keep the FB open and update the OP if Apple responds. For now: shipping this so others stop chasing the parent bundle IDs. Environment: iPhone 16 / iOS 26.4.2 (23E261), Apple Watch on watchOS 6.3.1 (build 17U208), supervised iPhone, profile installed locally via Apple Configurator (no MDM server needed to reproduce).
May ’26
Reply to iOS 18 - Unable to receive files using AirDrop when "allowListedAppBundleIDs" restriction key is used
add these bundle ids to your allowlist "com.apple.Sharing.AirDropUI","com.apple.sharingd.AirDrop","com.apple.datausage.airdrop","com.apple.sharingd", "com.apple.AirDrop", "com.apple.bluetoothd", "com.apple.CommCenter", "com.apple.wifi", "com.apple.NetworkExtension","com.apple.Bluetooth" Apple should really give a list of all the bundles needed for each feature after enabling allowListedAppBundleIDs
Jul ’25
Reply to Identifying Essential Apple Bundle ID for Apple Watch-iPhone Connectivity in MDM Environment
I’m managing an Apple Watch (WatchOS 10.1) paired with an iPhone 14 Pro (iOS 17.1) using a custom MDM configuration. Certain Watch apps and services, including Weather, Health, and Notifications, are failing to function correctly. Logs show errors related to missing app bundle IDs and connectivity issues. Examples of Errors: com.apple.NanoTimeKit error 16:01:03.451560-0600 NTKFaceSnapshotService Error. Missing .app from directory: file:///Applications/MobilePhone.app/Watch/ com.apple.wcd error 16:00:56.978471-0600 wcd Error getting iOS app bundle ID for watch app bundle ID com.apple.private.NanoTimer (ACXErrorDomain:19) - This error repeats for com.apple.Weather and com.apple.HealthKit. default 16:00:56.907741-0600 nanoprefsyncd [NPSPrefPlistProtectedUtil isPlistProtectedAtPath:]: Protection Class for file://.../NanoDomains/... is -1 default 16:00:40.484105-0600 Bridge Error: MCUI Watch manager failed to install profile with error: Error Domain=com.apple.identityservices.error Code=23 Steps Taken: Updated the MDM profile to include relevant Bundle IDs. Verified Bluetooth and Wi-Fi connections. Re-paired the Apple Watch with the iPhone. Questions: What are the required Bundle IDs for Watch apps and their iOS counterparts to ensure proper syncing? How can I resolve errors like Error getting iOS app bundle ID or Missing .app from directory? Are there additional permissions or configurations needed to fix these issues?
Topic: App & System Services SubTopic: General Tags:
Dec ’24
Reply to Native applications bundle ids in watchOS
Here is a list I took from the apple watch logs of the native bundle id's com.apple.AppStore com.apple.NanoStopwatch com.apple.SessionTrackerApp com.apple.clockface com.apple.chrono.WidgetRenderer-Default com.apple.NanoCalendar com.apple.ActivityMonitorApp com.apple.weather.watchapp com.apple.NanoNowPlaying com.apple.NanoAlarm com.apple.Mind com.apple.NanoCompass.watchkitapp com.apple.NanoCalculator.watchkitapp com.apple.NanoSettings com.apple.NanoTips com.apple.NanoContacts com.apple.NanoCamera com.apple.NanoMenstrualCycles com.apple.findmy.finddevices com.apple.findmy.findpeople com.apple.NanoPhotos com.apple.HeartRate com.apple.NanoMail com.apple.NanoMaps com.apple.NanoMedications com.apple.watchmemojieditor com.apple.MobileSMS com.apple.NanoRemote com.apple.Noise com.apple.NanoSleep.watchkitapp com.apple.NanoPhone com.apple.private.NanoTimer com.apple.NanoPassbook com.apple.findmy.finditems com.apple.Carousel I am still missing the bundle id's app that gets the watch connected to the iPhone, If you have those id's please share them
Topic: App & System Services SubTopic: Core OS Tags:
Jan ’24
Reply to MCRestrictionsPayload (allowListedAppBundleIDs) breaks Apple Watch native app enumeration — `nanotimekitcompaniond` reports "Missing .app from directory: /Watch/"
Update — the SiriExtensions workaround does NOT scale. There is no fix inside allowListedAppBundleIDs. Retracting the workaround above. After testing across more devices and iOS versions, no whitelist composition resolves this. Posting an update so other admins stop chasing a dead end. What broke the original "fix" The SiriExtensions pattern (<app> + <app>.SiriExtension + <app>.*Extension) worked on iPhone 16 / iOS 26.4.2 + Apple Watch Series 3 / watchOS 6.3.1. It does not generalize. Reproduced on a second pairing (iPhone 15 / iOS 18.6.2 + modern Watch): Profile Bundle IDs PayloadScope Result Watch-focused (Nano*, Carousel*, .watchapp, SiriExtensions, complications) 451 System All Watch apps disappear Phone-focused superset (third-party + Apple essentials) 481 User All Watch apps disappear Both lists installed cleanly. Both removed every native Watch app within ~30s. Ruled out this round Other payloads in the profile triggering propagation — no, an isolated profile with only applicationaccess + allowListedAppBundleIDs reproduces it PayloadScope: User — no, both User and System reproduce List size or content (Watch-aware vs phone-aware) — no, both fail identically Per-key supportedOS metadata override — no, schema metadata only Wildcard com.apple.* — not a supported value; only com.apple.webapp is documented (Web Clips only) Switching to blockedAppBundleIDs — not viable for kiosk-style allowlists (cannot enumerate "everything except these few") Root cause (reconfirmed) lsd: Sending uninstalledNotifications for ( pluginID=com.apple.MobileSMS.MessagesAssistantExtension pluginID=com.apple.tincan.SiriExtension ... ) Carousel: com.apple.MobileSMS: terminateApplication - uninstalling app (user initiated quit) Carousel: com.apple.tincan: terminateApplication - uninstalling app (user initiated quit) Carousel: com.apple.NanoNowPlaying: terminateApplication - uninstalling app (user initiated quit) The Watch's lsd reads the inherited allowListedAppBundleIDs, marks every PluginKit extension not in the list as "uninstalled," and Carousel cascades by terminating the parent apps — disguised as user initiated quit. Meanwhile Apple's own profiled logs MCRestrictionsPayloadHandler not supported on any Watch version at the same moment the propagation happens. The system acknowledges the incompatibility while still executing the propagation. That's the bug. Why an "exhaustive whitelist" cannot work The Watch enumerates private extensions (*.notifications, *.appex, daemons, transient extension IDs) that aren't documented. New ones ship with each minor release. The check happens on the Watch side, against the inherited list, so any extension you don't anticipate is nuked at install time. It's not a matter of finding the right N bundle IDs — the check shouldn't be running on the Watch at all. The only viable fix: DDM com.apple.configuration.watch.enrollment Declarative Device Management (iOS 16+) lets the MDM server send the Watch its own declarations independent of the iPhone's. The Watch stops inheriting iPhone-side restrictions. For anyone with control over their MDM backend, this is the path. For anyone on a hosted MDM, push your vendor to ship DDM support. TL;DR for admins arriving from search Confirmed bug in how watchOS handles the inherited restriction. Apple's logs label it unsupported on Watch yet still apply it. No working whitelist composition. Don't extend the list — I tried up to 481 entries with SiriExtensions, widgets, complications, watchkit apps, private extensions. Still broken. Removing the profile restores Watch apps after the iPhone re-syncs. Real fix: DDM Watch Enrollment from the MDM server side. No client-side workaround. Environment: iPhone 15 / iOS 18.6.2 (unsupervised), profile installed locally via Safari + Settings. Independent of any MDM server — reproduces with any local .mobileconfig containing allowListedAppBundleIDs.
Replies
Boosts
Views
Activity
May ’26
Reply to Unexpected Removal of Apple Watch Apps When Using allowListedAppBundleIDs in iOS Configuration Profile
https://developer.apple.com/forums/thread/826194?answerId=887670022#887670022. answer
Replies
Boosts
Views
Activity
May ’26
Reply to MCRestrictionsPayload (allowListedAppBundleIDs) breaks Apple Watch native app enumeration — `nanotimekitcompaniond` reports "Missing .app from directory: /Watch/"
Update — root cause found and a working workaround I cracked it. Posting the solution here so other admins can stop trying random bundle IDs. Root cause (confirmed via watchOS sysdiagnose) When you install a profile with com.apple.applicationaccess + allowListedAppBundleIDs, lsd on the paired Apple Watch immediately sends "uninstalledNotifications" for every PluginKit extension whose bundle ID is NOT in the whitelist. The watch's Carousel then cascades by terminating the parent apps that own those extensions, disguising the action as user initiated quit. Captured from watchOS sysdiagnose at the moment of profile install: 17:22:56 lsd: Sending uninstalledNotifications for ( pluginID=com.apple.MobileSMS.MessagesAssistantExtension pluginID=com.apple.tincan.SiriExtension pluginID=com.apple.SessionTrackerApp.SessionTrackerSiriExtension ) 17:23:13 Carousel: com.apple.MobileSMS: terminateApplication - uninstalling app (user initiated quit) 17:23:13 Carousel: com.apple.tincan: terminateApplication - uninstalling app (user initiated quit) 17:23:13 Carousel: com.apple.NanoNowPlaying: terminateApplication - uninstalling app (user initiated quit) 17:23:13 Carousel: com.apple.SessionTrackerApp:terminateApplication - uninstalling app (user initiated quit) 17:23:13 Carousel: com.apple.HeartRate: terminateApplication - uninstalling app (user initiated quit) 17:23:13 Carousel: com.apple.DeepBreathing: terminateApplication - uninstalling app (user initiated quit) This is why adding more parent-app bundle IDs to the whitelist never helped — the whitelist filter is being applied at the PluginKit level, not the application level. The workaround You must whitelist the SiriKit extension bundle IDs of every Apple Watch native app, in addition to the parent bundle ID. Pattern: com.apple.<app> # parent (likely already there) com.apple.<app>.SiriExtension # the missing piece com.apple.<app>.*Extension # any other PluginKit plugins the app ships Confirmed critical extensions For the three apps in my repro: App Parent bundle ID Required extension bundle ID Walkie‑Talkie com.apple.tincan com.apple.tincan.SiriExtension Messages com.apple.MobileSMS com.apple.MobileSMS.MessagesAssistantExtension Workout com.apple.SessionTrackerApp com.apple.SessionTrackerApp.SessionTrackerSiriExtension Validation Two independent install/remove cycles of a profile containing the above (308 bundle IDs total): Cycle 1 (install v3): 0 Watch-side extensions in uninstalledNotifications. Walkie-Talkie, Messages, Find My all stayed visible. Cycle 2 (remove v3 → reinstall v3): same result. Before the fix, the same plugins were uninstalled on every profile install. How to discover the extensions for your deployment The extension bundle IDs can be enumerated directly from the watchOS sysdiagnose. Trigger a sysdiagnose, extract it, then: # inside the extracted Watch sysdiagnose folder: log show --info --debug --last 24h \ --predicate 'eventMessage CONTAINS "pluginID="' \ system_logs.logarchive \ | grep -oE 'pluginID=com\.apple\.[a-zA-Z0-9._-]+' | sort -u Whatever shows up that you care about — add to allowListedAppBundleIDs. What is still a bug (Apple-side) The fact that you have to whitelist watchOS-side extensions through an iOS payload that profiled itself logs as "not supported on any Watch version" is the underlying bug. The workaround above is just rerouting around it. I will keep the FB open and update the OP if Apple responds. For now: shipping this so others stop chasing the parent bundle IDs. Environment: iPhone 16 / iOS 26.4.2 (23E261), Apple Watch on watchOS 6.3.1 (build 17U208), supervised iPhone, profile installed locally via Apple Configurator (no MDM server needed to reproduce).
Replies
Boosts
Views
Activity
May ’26
Reply to MCRestrictionsPayload (allowListedAppBundleIDs) breaks Apple Watch native app enumeration — `nanotimekitcompaniond` reports "Missing .app from directory: /Watch/"
forum-post-v2-evidence.log
Replies
Boosts
Views
Activity
May ’26
Reply to iOS 18 - Unable to receive files using AirDrop when "allowListedAppBundleIDs" restriction key is used
add these bundle ids to your allowlist "com.apple.Sharing.AirDropUI","com.apple.sharingd.AirDrop","com.apple.datausage.airdrop","com.apple.sharingd", "com.apple.AirDrop", "com.apple.bluetoothd", "com.apple.CommCenter", "com.apple.wifi", "com.apple.NetworkExtension","com.apple.Bluetooth" Apple should really give a list of all the bundles needed for each feature after enabling allowListedAppBundleIDs
Replies
Boosts
Views
Activity
Jul ’25
Reply to Identifying Essential Apple Bundle ID for Apple Watch-iPhone Connectivity in MDM Environment
I’m managing an Apple Watch (WatchOS 10.1) paired with an iPhone 14 Pro (iOS 17.1) using a custom MDM configuration. Certain Watch apps and services, including Weather, Health, and Notifications, are failing to function correctly. Logs show errors related to missing app bundle IDs and connectivity issues. Examples of Errors: com.apple.NanoTimeKit error 16:01:03.451560-0600 NTKFaceSnapshotService Error. Missing .app from directory: file:///Applications/MobilePhone.app/Watch/ com.apple.wcd error 16:00:56.978471-0600 wcd Error getting iOS app bundle ID for watch app bundle ID com.apple.private.NanoTimer (ACXErrorDomain:19) - This error repeats for com.apple.Weather and com.apple.HealthKit. default 16:00:56.907741-0600 nanoprefsyncd [NPSPrefPlistProtectedUtil isPlistProtectedAtPath:]: Protection Class for file://.../NanoDomains/... is -1 default 16:00:40.484105-0600 Bridge Error: MCUI Watch manager failed to install profile with error: Error Domain=com.apple.identityservices.error Code=23 Steps Taken: Updated the MDM profile to include relevant Bundle IDs. Verified Bluetooth and Wi-Fi connections. Re-paired the Apple Watch with the iPhone. Questions: What are the required Bundle IDs for Watch apps and their iOS counterparts to ensure proper syncing? How can I resolve errors like Error getting iOS app bundle ID or Missing .app from directory? Are there additional permissions or configurations needed to fix these issues?
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Dec ’24
Reply to VPN restriction not working as outlined in documentation
Seems like apple patched it on ios 18
Replies
Boosts
Views
Activity
Aug ’24
Reply to App whitelist profile working on supervised iPhone, but not on paired Watch
Hi im haveing the same issue, I ve already tested with more then 100 bundles and dependecies to get the watch apps to come back and no luck. please if you found a solution post it here. Im also having another issue with the watch that it gets randomly disconnected from the iphone if my iphone is supervised with mdm
Replies
Boosts
Views
Activity
Aug ’24
Reply to Native applications bundle ids in watchOS
Here is a list I took from the apple watch logs of the native bundle id's com.apple.AppStore com.apple.NanoStopwatch com.apple.SessionTrackerApp com.apple.clockface com.apple.chrono.WidgetRenderer-Default com.apple.NanoCalendar com.apple.ActivityMonitorApp com.apple.weather.watchapp com.apple.NanoNowPlaying com.apple.NanoAlarm com.apple.Mind com.apple.NanoCompass.watchkitapp com.apple.NanoCalculator.watchkitapp com.apple.NanoSettings com.apple.NanoTips com.apple.NanoContacts com.apple.NanoCamera com.apple.NanoMenstrualCycles com.apple.findmy.finddevices com.apple.findmy.findpeople com.apple.NanoPhotos com.apple.HeartRate com.apple.NanoMail com.apple.NanoMaps com.apple.NanoMedications com.apple.watchmemojieditor com.apple.MobileSMS com.apple.NanoRemote com.apple.Noise com.apple.NanoSleep.watchkitapp com.apple.NanoPhone com.apple.private.NanoTimer com.apple.NanoPassbook com.apple.findmy.finditems com.apple.Carousel I am still missing the bundle id's app that gets the watch connected to the iPhone, If you have those id's please share them
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Jan ’24