Hi Apple Developer Support / community,
I am seeing a URL filter startup failure only in TestFlight builds. The same code path works in development and Ad Hoc builds.
App setup:
- Host app bundle id: com.expleo.protectus.filter.main
- URL filter control extension bundle id: com.expleo.protectus.filter.main.buf
- Extension point: com.apple.networkextension.url-filter-control
- Using NEURLFilterManager / NEURLFilterControlProvider on iOS 26.x
- App Group and network extension entitlements are configured on host + extension
Observed behavior:
- Extension process starts successfully (pid created)
- Status changes to starting
- Then updatePrefilterWithCompletionHandler runs
- Immediately after, plugin transitions to stopping with error 3
- System retries in a loop
Key logs:
- Error Domain=NEAgentURLFilterErrorDomain Code=3
- Failed to startFilter <Error Domain=NEMembershipCheckerErrorDomain Code=3>
- NEPIRChecker start block reports:
- Error Domain=com.apple.CipherML Code=1100
- Underlying Error Domain=com.apple.CipherML Code=1800
- Message says details are redacted
Example sequence:
- NEURLFilterPlugin ... started with pid ...
- status changed to starting
- updatePrefilterWithCompletionHandler enter
- acceptAgentClients enter
- setStatus:error ... NEAgentURLFilterErrorDomain Code=3
- status changed to stopping with error 3
- extension disposed / teardown
- repeats
Important detail:
- This failure is reproducible in TestFlight only.
- Same code and configuration works in development and Ad Hoc builds.
What we already checked:
- Extension launches and is discovered correctly by neagent
- App/extension bundle identifiers are correct
- App group and network extension entitlements are present in source and archive checks
- We tested startup gating around local bloom/prefilter readiness
- We still get NEMembershipCheckerErrorDomain Code=3 with CipherML 1100/1800 in TestFlight
Questions:
- Is NEMembershipCheckerErrorDomain Code=3 in this startup path known to indicate PIR membership/status validation failure in distribution context?
- Are there TestFlight-specific prerequisites or server-side requirements for PIR/CipherML path that differ from development/Ad Hoc?
- Is there any supported way to get non-redacted diagnostic details for CipherML 1100/1800 (beyond sysdiagnose submission)?
- Are there recommended fail-open/fail-closed startup patterns when PIR status is temporarily unavailable?
If needed, I can provide:
- Full sysdiagnose timestamped bundle
- Exact iOS version and device model
- Repro steps from clean install
- Full log stream around NEPIRChecker and NEURLFilterPlugin transitions
Thanks in advance.
So does it take time to onboard … ?
Yes.
The approval process has two phases here:
- First, the approval folks check that your server setup is working.
- Once that’s done, they kick off the onboarding process.
It seems that you’ve passed step 1, and now you have to wait for step 2 to complete.
even if this onboarding is pending still we can distribute the app to the test flight ?
I suspect you’re missing a “not” in this sentence, so lemme answer it with a statement: Onboarding must be complete for your app to work in TestFlight.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"