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!

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