I'm building a macOS network monitor using NEFilterDataProvider as a system extension, distributed with Developer ID signing. On macOS 26.3 (Tahoe), sysextd consistently rejects the activation request with "no policy, cannot allow apps outside /Applications" — despite the app being in /Applications and passing every verification check.
I'm aware of the known Xcode NE signing bug (r. 108838909) and have followed the manual signing process from Exporting a Developer ID Network Extension. I've also tried both xcodebuild build and xcodebuild archive workflows — identical failure.
Environment
| macOS | 26.3 (25D125), SIP enabled |
| Xcode | 26.3 (17C529) |
| Hardware | Apple M2 Pro |
| Certificate | Developer ID Application (issued Jan 30, 2026 — 27 days old) |
| MDM/Profiles | None installed |
Signing & Verification (all pass)
$ spctl -a -vv /Applications/Chakshu.app
/Applications/Chakshu.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: ROBIN SHARMA (R65679C4F3)
$ codesign --verify --deep --strict -vv /Applications/Chakshu.app
/Applications/Chakshu.app: valid on disk
/Applications/Chakshu.app: satisfies its Designated Requirement
$ xcrun stapler validate /Applications/Chakshu.app
The validate action worked!
App signing:
Authority=Developer ID Application: ROBIN SHARMA (R65679C4F3)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
TeamIdentifier=R65679C4F3
Runtime Version=26.2.0
Notarization Ticket=stapled
App entitlements:
com.apple.application-identifier = R65679C4F3.dev.indrasvat.chakshu
com.apple.developer.team-identifier = R65679C4F3
com.apple.developer.system-extension.install = true
com.apple.developer.networking.networkextension = [content-filter-provider-systemextension]
keychain-access-groups = [R65679C4F3.*]
Extension signing: Same Developer ID authority, same team, same timestamp. Extension entitlements match (minus system-extension.install). Developer ID provisioning profiles are embedded in both app and extension.
What sysextd logs
Captured Feb 26, 2026 from log stream --predicate 'process == "sysextd"':
sysextd [com.apple.sx:XPC] client activation request for dev.indrasvat.chakshu.filter
sysextd attempting to realize extension with identifier dev.indrasvat.chakshu.filter
sysextd (Security) SecKeyVerifySignature ← pass (×2)
sysextd (Security) SecTrustEvaluateIfNecessary ← pass (×2)
sysextd [com.apple.xpc:connection] activating connection: name=com.apple.CodeSigningHelper
sysextd [com.apple.xpc:connection] invalidated after the last release
sysextd no policy, cannot allow apps outside /Applications
sysextd [com.apple.sx:XPC] client connection invalidated
Signature and trust evaluation pass. CodeSigningHelper completes. Then the policy check fails. The app receives OSSystemExtensionError code 4 (extensionNotFound).
What I've tried and ruled out
Build process:
xcodebuild build -configuration Release + manual re-sign | Same failure |
xcodebuild archive + export from archive + manual re-sign (per thread/737894) | Same failure |
| Minimal hand-crafted Xcode project (no xcodegen, trivial code) | Same failure |
Both workflows follow Quinn's process exactly: build with Apple Development → copy app → embed Developer ID provisioning profiles → re-sign inside-out (extension first, then app) with -systemextension suffix entitlements → notarize → staple → install to /Applications.
System-level checks:
- Rebooting — no change
- Killing
sysextd— no change - Removing
com.apple.quarantinexattr — no change chown root:wheelon app bundle — no changelsregister -r(reset Launch Services) — no change- Waiting 27 days for certificate propagation — no change
- Reinstalling via Finder drag-to-Applications — no change
- No MDM or configuration profiles installed
/Library/SystemExtensions/db.plistshowsextensionPolicies: [](empty)
Key observation
Pre-existing network extensions activated before macOS 26 work fine on this machine. For example, Tailscale's NEPacketTunnelProvider shows state: activated_enabled in the system extensions database — it was activated on a prior macOS version and is still running. Only new system extension activations fail.
I've seen similar Tahoe-specific reports from LuLu (same NEFilterDataProvider type, Developer ID distribution):
Questions
- Is this a known regression in macOS 26's
sysextdpolicy evaluation for new Developer ID system extension activations? sysextd's policy check fails after all signature and trust evaluation succeeds. Is there a separate trust/policy path thatsysextdconsults beyond whatspctl,codesign, andCodeSigningHelperverify?- Is there anything else I should be checking?
I have a sysdiagnose captured immediately after the failure, a minimal reproducer project, and full raw sysextd logs available on request.
The no policy, cannot allow apps outside /Applications log entry is a red herring. It’s being emitted by the code that determines the current activation policy. The log entry indicates that there is no policy, and thus the default policy applies, which means that the container app must be in the Applications folder.
Notably, the code that logs this is a function that isn’t passed any information about your app, and thus it’s literally impossible for it to change behaviour based on whether your app is or isn’t in the Applications folder. This is normal.
The next log entry, client connection invalidated, is more of a concern. It suggests that sysextd was using XPC to talk to some helper service and that helper service went away. I’ve seen issues like that before, where the structure of your sysex causes a helper service to crash (well, trap).
See this thread, starting at this post, but also see this thread. And also check for any NE-related crash reports.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"