NetworkExtension URL Filter stops during startup only in TestFlight (NEAgentURLFilterErrorDomain Code=3, NEMembershipCheckerErrorDomain Code=3)

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:

  1. Is NEMembershipCheckerErrorDomain Code=3 in this startup path known to indicate PIR membership/status validation failure in distribution context?
  2. Are there TestFlight-specific prerequisites or server-side requirements for PIR/CipherML path that differ from development/Ad Hoc?
  3. Is there any supported way to get non-redacted diagnostic details for CipherML 1100/1800 (beyond sysdiagnose submission)?
  4. 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.

Answered by DTS Engineer in 901010022
So does it take time to onboard … ?

Yes.

The approval process has two phases here:

  1. First, the approval folks check that your server setup is working.
  2. 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"

one more important thing

I got an approval for Network Extension but apple is mentioning about onboarding ** Your configuration [NE URL Filter] has been approved and is pending onboarding. It has passed all required validation and review steps and will proceed to the onboarding process.**

So does it take time to onboard and even if this onboarding is pending still we can distribute the app to the test flight ?

So does it take time to onboard … ?

Yes.

The approval process has two phases here:

  1. First, the approval folks check that your server setup is working.
  2. 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"

@DTS Engineer Thank you for your prompt response. So we will be notified through email only once onboarding process is done by the team ?

So we will be notified through email only once onboarding process is done by the team?

IIUC whether you get an email depends on how you have your notification settings configured. If you go to the Identity & Trust page in the CloudKit Console, it shows the state of your request and there’s a Settings item (under your avatar at the top right) that lets you configure notifications.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Oh, one more thing…

This new onboard process uses a UUID as the request ID. Do you have one of those? If so, can you post it here?

IMPORTANT Please don’t interpret this as an indication that something is wrong. Rather, I’m trying to get a better understanding of this new onboarding process from Apple’s side, and it’d be good to have a real request ID to ‘play’ with.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

@DTS Engineer UUID: cdafa575-948a-474b-9d5e-ee2719538d46 is a Network Extension URL Filter that is approved and is pending onboarding. Thanks!

@DTS Engineer If you are talking about my request configuration ID then it is d297f734-d414-444e-99ad-04911b1f8b7b

Thank you both. Using those request IDs I was able to confirm my understanding of how this works internally. Specifically, I confirmed that I wasn’t tell any lies in my earlier reply. Which is a relief (-:

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

@DTS Engineer So everything looks good and pending onboarding? Is there any other way to observe status changes or just wait for an email?

Thank you for all your help and everything you do :)

Is there any other way to observe status changes … ?

The status should change in the CloudKit Console, and how you’re notified of that depends on your settings in the console.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

@DTS Engineer Can you tell us how long this usually takes? CloudKit states "Your configuration is initially approved and pending onboarding."

It would be helpful to have more fine grained status updates such as the steps of onboarding or an ETA.

Phase 1 "Your Configuration has been approved" was 7 days ago. Is this a manual process where an Apple engineer has to onboard new configurations by hand?

Can you tell us how long this usually takes?

No, sorry. I don’t have detailed insight into the onboarding process and, even if I did, I don’t want to be making promises on behalf of other people.

Usually I can get a handle on how long these things take based on reports I see from developers here on the forums. In this case, however, I haven’t seen enough folks run through the new process to do that.

You might want to have a look for folks who’ve recently done this for Live Caller ID Lookup. The onboard process is the same for both technologies, and there are more folks working with that tech than with NE URL filters.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

@DTS Engineer any update on our request** d297f734-d414-444e-99ad-04911b1f8b7b**
because we can still status as Approved on the Request Dashborad https://icloud.developer.apple.com/. So is there going to be any changes in this Status ?

@appasauraus do you have any updates for your request ?

Unfortunately not. I searched the forums for Live Caller ID Lookup, onboarding time can take anywhere from 4-6 months. It's a black box, so we don't know what's going on until it's done onboarding. If there are errors, I guess the process starts all over again, so it could take 1+ year to get an App Store release.

NetworkExtension URL Filter stops during startup only in TestFlight (NEAgentURLFilterErrorDomain Code=3, NEMembershipCheckerErrorDomain Code=3)
 
 
Q