We are developing an MDM agent app that uses FamilyControls with .individual authorization to enforce Screen Time restrictions (app blocking, domain blocking via ManagedSettingsStore and DeviceActivityCenter).
The Problem
We are actively subscribing to AuthorizationCenter.shared.$authorizationStatus to detect authorization changes. However, when the user revokes the app's FamilyControls authorization through Settings (either via Settings > Screen Time > Apps With Screen Time Access, or Settings > Apps > [Our App]), the publisher does not emit any value. All ManagedSettingsStore restrictions are lifted immediately by the system, but our app receives no notification of this change.
The only scenario where the publisher reliably emits is when a debugger is attached (i.e., running directly from Xcode). Without the debugger, the publisher is completely silent — even when the app returns to foreground.
Code Example
We tried subscribing directly to AuthorizationCenter.shared.$authorizationStatus with no intermediary, exactly as shown in the documentation:
AuthorizationCenter.shared.$authorizationStatus
.sink { status in
print("[DIRECT] authorizationStatus emitted: \(status)")
}
.store(in: &cancellables)
This subscription is set up at app launch and stored in cancellables. The result is the same — the publisher does not emit when the user revokes authorization in Settings without a debugger attached.
Documentation Reference
The documentation for authorizationStatus states:
"The status may change due to external events, such as a child graduating to an adult account, or a parent or guardian changing the status in Settings."
And:
"The system sets this property only after a call to requestAuthorization(for:) succeeds. It then updates the property until a call to revokeAuthorization(completionHandler:) succeeds or your app exits."
This suggests the publisher should emit when the status is changed via Settings, but in our testing it does not — unless a debugger is attached.
What We Verified
We tested with a development-signed build (which includes the com.apple.developer.family-controls entitlement), launched from Xcode, then disconnected the debugger, killed the app, and relaunched from the home screen.
Scenario
Publisher emits on revocation?
Running from Xcode (debugger attached)
Yes, immediately
Development-signed build (no debugger)
No — silent even on foreground return
We also confirmed:
MDM configuration profiles can disable Screen Time entirely, but cannot restrict the per-app authorization toggle — the user can always freely revoke the app's Screen Time access
The Security Gap
This creates a significant gap for parental controls use cases:
User leaves the app (app goes to background)
User goes to Settings and disables Screen Time access for the app
All restrictions are immediately lifted
User uses the device freely
User re-enables Screen Time access and opens the app
Everything syncs back to normal — administrator never knows
Questions
Is there any supported mechanism to receive a notification (background or foreground) when FamilyControls individual authorization is revoked? We are subscribing to AuthorizationCenter.shared.$authorizationStatus but it does not emit.
Is the $authorizationStatus publisher expected to work only when a debugger is attached? Is this a known limitation or a bug?
Can DeviceActivityMonitor extension detect authorization revocation? Based on documentation it appears limited to schedule/threshold events, but we haven't confirmed this.
Is there a planned API improvement to address this gap?
Environment
iOS 26.2
Xcode 26.3
Swift 6.2.4
FamilyControls .individual authorization
Related Threads
Screen time API can be disabled easily
Changing Screen Time Passcode does not protect apps