System Extensions
Install and manage user space code that extends the capabilities of macOS.
Mentioned in
Overview
Extend the capabilities of macOS by installing and managing system extensions—drivers and other low-level code—in user space rather than in the kernel. By running in user space, system extensions can’t compromise the security or stability of macOS. The system grants these extensions a high level of privilege, so they can perform the kinds of tasks previously reserved for kernel extensions (KEXTs).
You use frameworks like DriverKit, Endpoint Security, and Network Extension to write your system extension, and you package the extension in your app bundle. At runtime, use the SystemExtensions framework to install or update the extension on the user’s system. Once installed, an extension remains available for all users on the system. Users can disable the extension by deleting the app, which deletes the extension.
Configure the system extension and the host app
To successfully activate your extension, you must adhere to the following rules:
The extension must match your bundle identifier, excluding file extension. For example, a DriverKit extension with bundle identifier
com.example.usbdrivermust use the filenamecom.example.usbdriver.dext. Similarly, a NetworkExtension extension with bundle identifiercom.example.networkextensionmust use the filenamecom.example.networkextension.systemextension.You must use the same Team ID when signing the extension that you use for signing your app, unless the extension has the
com.apple.developer.system-extension.redistributableentitlement.You must either distribute your app and extension through the Mac App Store, or notarize them. See Notarizing macOS software before distribution to learn more about notarization.
Topics
Essentials
Implementing drivers, system extensions, and kextsDebugging and testing system extensionsSystem Extension Entitlement
Usage descriptions
Extension activation and deactivation
Installing System Extensions and DriversOSSystemExtensionManagerOSSystemExtensionRequestSystem Extension Redistributable Entitlement