Guide

FSKit: how apps add file systems to macOS

For decades, a new kind of drive on a Mac meant code inside the kernel. FSKit lets an ordinary app do it instead, and macOS 26 widened what that app can mount.

FSKit is Apple's framework for file systems built by apps. An app ships a small extension, the extension runs in user space like any other process, and macOS mounts what it provides as a volume in Finder. Before FSKit, a third-party file system meant a kernel extension, which on an Apple silicon Mac also meant lowering the Mac's security settings in Recovery.

FSKit arrived in macOS Sequoia 15.4, in March 2025, for file systems that live on a disk. macOS 26 added two new kinds of source, a path and a URL, so a file system can now come from a folder, a server or a device at the end of a cable. For you, using one comes down to a single switch in System Settings: General > Login Items & Extensions > File System Extensions.

What a file system does

Every volume on a Mac has a file system behind it. When Finder lists a folder, or an app opens a file, macOS asks that file system for names, sizes, dates and bytes, and the file system answers from wherever the data lives: a partition on an SSD for APFS, a memory card for exFAT, a server for SMB.

An FSKit module is that answering part, packaged as an app extension inside an app. Apple's documentation calls it an FSModule and describes three ideas: a resource, where the data comes from; a container, which turns a resource into volumes; and the volume itself, the folders and files you see. FSKit connects the module to the parts of macOS that already handle disks and mounts, including Disk Arbitration and the mount command. For now FSKit supports only the simple design, one resource giving one volume, which Apple notes is the pattern most of the Mac's own file systems follow.

Before FSKit: kernel extensions and macFUSE

A kernel extension runs inside the kernel, the core of macOS, with full access to the machine. A bug in one can take the whole Mac down. Apple no longer recommends them, and on a Mac with Apple silicon every third-party kernel extension is blocked by default. Allowing one means shutting down, starting up in Recovery, opening Startup Security Utility, choosing Reduced Security and ticking Allow user management of kernel extensions from identified developers, then approving the extension and restarting again.

macFUSE grew up around that. It is a single kernel extension that lets many file systems run as ordinary programs on top of it, which is how many third-party file systems reached the Mac for years. Its kernel extension is still its default. Since version 5, macFUSE also offers an FSKit backend that needs no kernel extension and no change in Recovery. Its own documentation lists what that backend cannot do yet, mount points outside /Volumes among them, and says its FSKit volumes do not perform as well as its kernel ones.

Apple has been moving its own file systems the same way. In macOS Sonoma it moved exFAT and FAT out of the kernel and into services that run in user space.

Kernel extensionFSKit module
Where the code runsInside the kernelIn user space, as an app extension
A bug can take the whole Mac downYesNo, but a stuck module can block mounts until a restart
Recovery and Reduced Security on Apple siliconRequiredNot needed
Sold through the Mac App StoreNoAllowed
Switched on inOn Apple silicon, Recovery, then System Settings, then a restartSystem Settings, once per user account
Available sinceThe first Mac OS XmacOS 15.4, with paths and URLs from macOS 26
The two ways a third-party file system can reach a Mac today.

What macOS 26 added

In macOS 15.4, the resource FSKit handed a module was a disk partition, FSBlockDeviceResource. That suits a file system for a drive format, such as ext4 or NTFS on a USB disk, and that was its focus.

macOS 26 added two more resource types. FSPathURLResource represents a path on the Mac, a folder or a file, and FSKit carries a security-scoped URL intact from the app that asks for the mount to the module. FSGenericURLResource represents any URL at all. The module declares the URL schemes it understands in its Info.plist, and FSKit leaves the meaning of the URL entirely to the module. Apple's own examples are a hardware locator and a network address for a remote file system.

That second type is what makes a phone possible. SideMount's module is mounted from an adb:// URL that names the phone, and it reaches the phone over the cable with the adb protocol, the one Android's developer tools use. There is no disk anywhere in that chain, which is why SideMount needs macOS 26 or later.

Turning an FSKit extension on

macOS will not run a file system extension until you say so. Each FSKit app asks for this once:

  1. Open System Settings > General > Login Items & Extensions.
  2. Scroll down to Extensions and switch the list to By Category. In the By App view there is no File System Extensions row, which is where most people get stuck.
  3. Open File System Extensions and turn the app's extension on.

The switch belongs to your user account. An Apple engineer has explained that FSKit is built on app extensions and app extensions are scoped to a user, so on a shared Mac each account turns it on separately. The same switch turns it off again. The SideMount setup guide shows these steps with pictures.

What it means when you use one

An FSKit volume behaves like any other drive. It appears in Finder, has a path that Terminal and scripts can use, and every app can open, save and copy files on it. That is the difference from apps that show files in a window of their own, as most MTP apps do, and the reason a phone mounted this way works with rsync, Photoshop or VLC. Using an Android phone as an external drive covers what that looks like in practice.

One habit matters. Eject an FSKit volume the normal way, from Finder or the app, rather than forcing it. macOS's FSKit daemon, fskitd, can get stuck after a forced unmount, and then only a restart of the Mac clears it. FSKit is also young: some things a kernel file system can do are not in the framework yet, so each app's own notes are worth a look.

Questions

Which version of macOS does FSKit need?

The framework exists from macOS Sequoia 15.4. File systems that read from a path or a URL rather than a disk, such as one that reaches a phone or a server, need macOS 26, because those resource types arrived there. Each app states its own minimum.

Why can I not find File System Extensions in System Settings?

The Extensions list in General > Login Items & Extensions has two views. File System Extensions appears only in the By Category view, so switch to it and the row is there.

Is FSKit the same as File Provider?

No. File Provider is the framework cloud storage apps use to show remote files in Finder and download them when needed. FSKit mounts a real volume, with a path that every app and Terminal can use.

Is it safe to turn on a file system extension?

An FSKit extension runs in user space as part of a signed app, without the kernel access a kernel extension has, and needs no change to the Mac's startup security. Turn on only the ones from apps you trust; the same switch in System Settings turns each one off again.

Your Android phone, in Finder.

Free for seven days, no card. macOS 26 or later.

Download for macOS