NEURLFilterManager Error 9 with SimpleURLFilter Sample - Filter Status Changes from 'starting' to 'stopped'

I'm working with Apple's SimpleURLFilter sample project and consistently encountering an error when trying to implement the URL filter.

Here are the details: Setup:

  • Downloaded the official SimpleURLFilter sample project from Apple
  • Set the developer team for both targets (main app and extension)
  • Built and ran the PIR server on my laptop using Docker as per the sample instructions
  • Built the iOS project on my iPhone running iOS 26.0.1
  • Server is accessible at my Mac's IP address on port 8080

Configuration:

  • PIR Server URL: http://[my-mac-ip]:8080
  • Authentication Token: AAAA (as specified in service-config.json)
  • Privacy Pass Issuer URL: (left empty)
  • Fail Closed: enabled

Code Changes: The only modifications I made were:

  1. Updated bundle identifiers to include my team identifier
  2. Updated PIR server's service-config.json to match: com.example.apple-samplecode.SimpleURLFilter[TEAM_ID].url.filtering
  3. Modified URLFilterControlProvider.swift:
    • Added existingPrefilterTag: String? parameter to fetchPrefilter() method
    • Added tag: "bloom_filter" parameter to NEURLFilterPrefilter initializer

Issue: After configuring the filter and entering my passcode in Settings, I consistently see: Received filter status change: <FilterStatus: 'starting'> Received filter status change: <FilterStatus: 'stopped' errorMessage: 'The operation couldn't be completed. (NetworkExtension.NEURLFilterManager.Error error 9.)'> Questions:

  1. What does NEURLFilterManager.Error error 9 specifically indicate?
  2. Could the URLFilterControlProvider modifications be causing this issue?
  3. Are there debugging steps to get more detailed error information?

Any guidance would be appreciated!

Answered by DTS Engineer in 862991022
What does NEURLFilterManager.Error error 9 specifically indicate?

That’d be .serverSetupIncomplete.

print(NEURLFilterManager.Error.serverSetupIncomplete.rawValue)
// -> 9

That error has a bunch of potential causes. I’d expect to find more details about the specific problem in the system log. Look for log entries in the com.apple.networkextension subsystem. It’s possible you’ll need to install the VPN (Network Extension) debug profile to see the entry. Download that from our Bug Reporting > Profiles and Logs page.

For lots of hints and tips on how to use the system log effectively, see Your Friend the System Log.

Share and Enjoy

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

What does NEURLFilterManager.Error error 9 specifically indicate?

That’d be .serverSetupIncomplete.

print(NEURLFilterManager.Error.serverSetupIncomplete.rawValue)
// -> 9

That error has a bunch of potential causes. I’d expect to find more details about the specific problem in the system log. Look for log entries in the com.apple.networkextension subsystem. It’s possible you’ll need to install the VPN (Network Extension) debug profile to see the entry. Download that from our Bug Reporting > Profiles and Logs page.

For lots of hints and tips on how to use the system log effectively, see Your Friend the System Log.

Share and Enjoy

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

NEURLFilterManager Error 9 with SimpleURLFilter Sample - Filter Status Changes from 'starting' to 'stopped'
 
 
Q