XPC can't activate after app upgrade

I have an app with a system network extension. After app upgrade some customers experience broken XPC that they fix by restarting the computer. The app cannot recover by re-launching the tunnel or retrying xpc after 3 seconds.

I do OSSystemExtensionRequest.activationRequest on app start and actionForReplacingExtension has .replace. I haven't experienced this before and I don't think I've changed anything, so perhaps macOS 26 has changed xpc handling.

Current fix proposal is to deactivate&activate the sysext when vpn is connected, but xpc fails to connect. It's better than computer restart, but it's still not a nice user experience, because user action is required to reenable the sysext.

Do you have better ideas? The system logs below show failed xpc connection after upgrade

2026-05-21 12:09:43.017192-0700 0x5b640    Default     0x0                  1      0    launchd: [system:] service inactive: NetworkExtension.com.company.macos.stg.tunnelprovider.2026.124.124909
2026-05-21 12:09:43.132350-0700 0x5b7f5    Default     0x0                  1      0    launchd: [system/NetworkExtension.com.company.macos.stg.tunnelprovider.2026.124.124909 [78132]:] Successfully spawned com.company.macos.stg.tunnelprovider[78132] because xpc event
2026-05-21 12:09:43.192084-0700 0x5bd02    Default     0x0                  78132  0    com.company.macos.stg.tunnelprovider: (libxpc.dylib) [com.apple.xpc:connection] [0x103b01f70] activating connection: mach=true listener=true peer=false name=6GX8KVTR9H.com.company.stg.service
2026-05-21 12:09:43.195957-0700 0x5b640    Default     0x0                  1      0    launchd: [system:] failed lookup: name = com.apple.pasteboard.1, requestor = com.company.ma[78132], error = 3: No such process
2026-05-21 12:09:43.246588-0700 0x5b640    Default     0x0                  1      0    launchd: [system:] failed lookup: name = com.apple.securityd.xpc, requestor = com.company.ma[78132], error = 3: No such process
2026-05-21 12:09:43.994210-0700 0x5b47a    Default     0x0                  1      0    launchd: [gui/501 [100025]:] service inactive: application.com.company.macos.stg.155106945.155106951
2026-05-21 12:09:43.996937-0700 0x5b47a    Default     0x0                  1      0    launchd: [gui/501 [100025]:] removing service: application.com.company.macos.stg.155106945.155106951
2026-05-21 12:09:50.175890-0700 0x5be9d    Default     0x0                  78205  0    Company Stg: (libxpc.dylib) [com.apple.xpc:connection] [0xc32c92080] activating connection: mach=true listener=false peer=false name=com.company.macos.stg-spks
2026-05-21 12:09:50.175937-0700 0x5b7f5    Default     0x0                  1      0    launchd: [gui/501 [100025]:] failed lookup: name = com.company.macos.stg-spks, requestor = Company Stg[78205], error = 3: No such process
2026-05-21 12:09:50.602809-0700 0x5b7f5    Default     0x0                  1      0    launchd: [system/NetworkExtension.com.company.macos.stg.tunnelprovider.2026.140.125099:] The endpoint "6GX8KVTR9H.com.company.stg.service" defined in plist already exists and is owned by: NetworkExtension.com.company.macos.stg.tunnelprovider.2026.124.124909
2026-05-21 12:09:50.605301-0700 0x5b7f5    Default     0x0                  1      0    launchd: [system:] service inactive: NetworkExtension.com.company.macos.stg.tunnelprovider.2026.124.124909
2026-05-21 12:09:50.605302-0700 0x5b7f5    Default     0x0                  1      0    launchd: [system:] removing service: NetworkExtension.com.company.macos.stg.tunnelprovider.2026.124.124909
2026-05-21 12:09:50.662682-0700 0x5b47a    Default     0x0                  1      0    launchd: [system/NetworkExtension.com.company.macos.stg.tunnelprovider.2026.140.125099 [78238]:] Successfully spawned com.company.macos.stg.tunnelprovider[78238] because xpc event
2026-05-21 12:09:52.396190-0700 0x5bfd6    Default     0x0                  78238  0    com.company.macos.stg.tunnelprovider: (libxpc.dylib) [com.apple.xpc:connection] [0x103839c60] activating connection: mach=true listener=true peer=false name=6GX8KVTR9H.com.company.stg.service
2026-05-21 12:09:52.396217-0700 0x5bfcf    Default     0x0                  1      0    launchd: [system:] failed activation: name = 6GX8KVTR9H.com.company.stg.service, flags = 0x0, requestor = com.company.ma[78238], error = 1: Operation not permitted
2026-05-21 12:09:52.399064-0700 0x5b47a    Default     0x0                  1      0    launchd: [system:] failed lookup: name = com.apple.pasteboard.1, requestor = com.company.ma[78238], error = 3: No such process
2026-05-21 12:09:52.450706-0700 0x5bfcf    Default     0x0                  1      0    launchd: [system:] failed lookup: name = com.apple.securityd.xpc, requestor = com.company.ma[78238], error = 3: No such process
2026-05-21 12:09:52.607836-0700 0x5be9d    Default     0x0                  78205  0    Company Stg: (libxpc.dylib) [com.apple.xpc:connection] [0xc3295d7c0] activating connection: mach=true listener=false peer=false name=6GX8KVTR9H.com.company.stg.service
2026-05-21 12:09:52.607964-0700 0x5b47a    Default     0x0                  1      0    launchd: [system:] failed lookup: name = 6GX8KVTR9H.com.company.stg.service, flags = 0x8, requestor = Company Stg[78205], error = 3: No such process
2026-05-21 12:09:55.610528-0700 0x5be9d    Default     0x0                  78205  0    Company Stg: (libxpc.dylib) [com.apple.xpc:connection] [0xc3295de00] activating connection: mach=true listener=false peer=false name=6GX8KVTR9H.com.company.stg.service
2026-05-21 12:09:55.610694-0700 0x5b47a    Default     0x0                  1      0    launchd: [system:] failed lookup: name = 6GX8KVTR9H.com.company.stg.service, flags = 0x8, requestor = Company Stg[78205], error = 3: No such process
XPC can't activate after app upgrade
 
 
Q