Kernel Extension
Introduction to KEXTs for macOS
KEXTs (Kernel Extensions) are modules that integrate deeply into the macOS operating system to extend its functionality or support specific hardware and system requirements. They operate at the kernel level — the “nervous system” of the operating system — and therefore provide access to resources and functions that are not directly accessible in user space.
Why are KEXTs needed?
- Support for non-native hardware such as specific graphics cards, network adapters, or external storage devices.
- Implementation of file systems (e.g., NTFS, FUSE) that are not available by default in macOS.
- Extension of network functionality, e.g., for VPN protocols or virtual network interfaces.
- Integration of security solutions and checks at the kernel level.
- Development of virtualization platforms and their interaction with the kernel.
Advantages of KEXTs:
- Deep system access: They enable features that would otherwise not be possible without direct kernel access.
- Hardware compatibility: Devices and features not natively supported by macOS can be fully integrated through KEXTs.
- Flexible expandability: Developers can create custom solutions for specific requirements.
Configuration and Application of the Policy
General
The following configuration options are available in the policy:
[ ] Allow users without administrator privileges to approve kernel extensions in Security & Privacy settings
[ ] User can approve additional kernel extensions
[ ] Allow all kernel extensions signed with these team identifiers
In general, all KEXTs with the same team identifier can be allowed. Alternatively, explicit extensions can be defined in the next section using a team identifier.
Allowed Kernel Extensions
| Team Identifier | Bundle ID |
|---|---|
| 3T5GSNBU6W | com.github.osxfuse.filesystems.osxfuse |

Reading Team Identifier and Bundle ID
The Team Identifier can be extracted from the downloaded macfuse-5.1.1.dmg using the following command:
codesign -d --verbose=2 macfuse-5.1.1.dmg 2>&1 | grep -i teamidentifier
Output:
TeamIdentifier=3T5GSNBU6W
The Bundle ID can be obtained from a manually installed KEXT (example: macFUSE) as follows:
kextstat | grep -i fuse
Output:
Executing: /usr/bin/kmutil showloaded
No variant specified, falling back to release
265 0 0 0x1830 0x1830 io.macfuse.filesystems.macfuse.25 (5.1.1) 67A4F7E1-82FE-30A4-A3B3-B6E8722C287A <9 7 6 5 3>
Thus, io.macfuse.filesystems.macfuse.25 is our required Bundle ID.
Note
Under Allowed Kernel Extensions, multiple Bundle IDs can be added for one team identifier — either when adding a new entry or when editing an existing one via the three-dot menu.