NEFilterManager saveToPreferences returns NEFilterErrorDomain code 5 in TestFlight despite content-filter-provider entitlement

I’m building an iOS app that uses a Network Extension Content Filter provider.

The app works when installed directly on a physical device from Xcode/development builds, but the same flow fails in TestFlight/App Store distribution builds.

Main app bundle ID: com.project.betcontrolMain

Network extension bundle ID: com.project.betcontrolMain.DNSFilterExtension

Team ID: 74YN2U5NR9

The extension is embedded at: Runner.app/PlugIns/DNSFilterExtension.appex

Both the containing app and extension are signed with:

com.apple.developer.networking.networkextension = content-filter-provider

The app also has Family Controls Distribution enabled.

At runtime, enabling the content filter with NEFilterManager fails in TestFlight with:

NEFilterErrorDomain code 5 - permission denied

The same code path works when installed locally from Xcode.

The code roughly does:

NEFilterManager.shared().loadFromPreferences { error in let manager = NEFilterManager.shared() let providerConfiguration = NEFilterProviderConfiguration() providerConfiguration.filterBrowsers = true providerConfiguration.filterSockets = true providerConfiguration.vendorConfiguration = [:]

manager.localizedDescription = "BetControl Website Shield"
manager.providerConfiguration
NEFilterManager saveToPreferences returns NEFilterErrorDomain code 5 in TestFlight despite content-filter-provider entitlement
 
 
Q