FSKit: two extension processes after mount, one survives unmount — expected behavior?

Hi,

I'm developing an FSKit extension and noticed a consistent process lifecycle that also reproduces with Apple's official passthrough sample.

Environment:

  • macOS: [26.5.2]
  • Xcode: [26.6]

Observed behavior:

  • After a successful mount, Activity Monitor shows two processes with the same executable path (the embedded .appex inside the host app).
  • After umount, one process exits; one remains.
  • A subsequent mount again results in two active processes (one lingering + one new mount-serving instance, depending on timing).

What I've ruled out:

  1. Not caused by Instruments / lldb attach (reproduces after reboot, with no debugger attached).

  2. Not specific to our project: Apple's official passthrough FSKit demo shows the same pattern.

  3. Not duplicate pluginkit registrations at different paths — both processes report the same .appex executable path.

  4. Not requiring the host app to be running — reproduces with command-line mount only (UDrive app and Xcode quit).

Questions:

  1. Is this the intended FSKit lifecycle?
  2. After umount, is it expected that one extension process remains idle rather than exiting completely?

Thanks!

Based on what I've seen via a debugger, the process spawned to probe resources is separate from the process(es) spawned to manage each container you mount.

I've just been treating those idle processes similar to how I would an idle on-demand launch agent or launch daemon which is able to terminate when it's inactive. That is, I ignore it since the system should manage their lifecycle and the process should use very little resources on idle, but I don't depend on them staying alive for any specific period of time (as maybe the behavior could change in some OS update). Maybe an Apple employee can give a more definitive answer, but I'd be surprised if this weren't intentional, as if a user mounts many volumes in close succession, there would be worse performance for no reason if the probing process had to constantly be relaunched and initialized again for each request.

In any case, on my own system, I've definitely used my FSKit extension since I last rebooted my machine, but I no longer see any running processes related to that extension. So it does seem that the process is going to terminate on its own eventually, although I don't know the exact criteria for that.

FSKit: two extension processes after mount, one survives unmount — expected behavior?
 
 
Q