# macfuse changelog > File system integration - Vendor: macfuse - Category: System Utilities - Official site: https://macfuse.github.io/ - Tracked by: What's New (https://whatsnew.fyi/product/macfuse) - Harvested from: GitHub (macfuse/macfuse) - Entries below: 11 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### macfuse-5.4.0 — macFUSE 5.4.0 - Date: 2026-09-07 - Version: macfuse-5.4.0 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.4.0 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.4.0 - **changed** — Update the build process for the FSKit backend to use Xcode 27.0 (macOS 27 SDK) - **changed** — Improve mount failure reporting and daemonization behavior for file systems using libfuse and libfuse3 - **changed** — Avoid following symbolic links when changing ownership of newly created mount points in /Volumes - **added** — Add support for the new macOS 27 FSKit volume operation APIs while retaining compatibility with earlier macOS releases - **added** — Forward the caller's effective user and group IDs to the file system server on macOS 27 - **added** — Add item attribute caching based on the validity timeouts returned by the file system server - **fixed** — Fix a bug that could cause small write requests to deliver zero-filled data to the file system server - **fixed** — Fix a crash when the file system server returns an empty FUSE_READ reply - **added** — Support reads without a preceding open call by opening a read-capable file handle on demand - **changed** — Improve directory enumeration by validating cookies and verifiers and cleaning up remaining file and directory handles during close, reclaim, and item deactivation - **fixed** — Fix parent directory handling for hard-linked files and improve overwrite-rename behavior - **added** — Fall back to FUSE_MKNOD when the file system server does not implement FUSE_CREATE - **changed** — Improve stability by fixing item lock ordering and lock state tracking, validating file system replies, and releasing lookup references and file handles on error paths - **changed** — Create missing mount points in the requesting user's security context - **changed** — Include fatal error messages in crash reports to improve diagnostics - **changed** — Harden ioctl reply handling by validating response sizes and copying only the data returned by the file system server - **fixed** — Fix a rare use-after-free when allocating a request buffer fails, and fix request ticket leaks when handling attributes, extended attributes, and inode invalidation notifications - **changed** — Prevent unexpected replies to FUSE_MONITOR requests from being matched to later requests - **added** — Add MFMountResultCreatingMountPointFailed to report that the requested mount point could not be created - **changed** — Wait for pending mount attempts to finish before the daemonizing parent process exits ###### General * Update the build process for the FSKit backend to use Xcode 27.0 (macOS 27 SDK). The remaining components are built with Xcode 26.6 (macOS 26.5 SDK) * Improve mount failure reporting and daemonization behavior for file systems using `libfuse` and `libfuse3` * Avoid following symbolic links when changing ownership of newly created mount points in `/Volumes` ###### `FSModule` (`FSKit` Backend) * Add support for the new macOS 27 FSKit volume operation APIs while retaining compatibility with earlier macOS releases * Forward the caller's effective user and group IDs to the file system server on macOS 27 * Add item attribute caching based on the validity timeouts returned by the file system server Refresh or invalidate cached attributes when operations change them, and avoid unnecessary `FUSE_SETATTR` requests when no supported attributes remain to be applied. * Fix a bug that could cause small write requests to deliver zero-filled data to the file system server. This addresses macfuse/macfuse#1187. * Fix a crash when the file system server returns an empty `FUSE_READ` reply, for example when reading past the end of a file. This addresses macfuse/macfuse#1188. * Support reads without a preceding open call by opening a read-capable file handle on demand Reuse existing handles when their access modes are sufficient, and replace them with handles supporting the combined access modes when necessary. This addresses macfuse/macfuse#1181. * Improve directory enumeration by validating cookies and verifiers and cleaning up remaining file and directory handles during close, reclaim, and item deactivation * Fix parent directory handling for hard-linked files and improve overwrite-rename behavior Avoid unsupported swap renames and use `RENAME_EXCL` only when extended rename support has been negotiated with the file system server. This addresses macfuse/macfuse#1191. * Fall back to `FUSE_MKNOD` when the file system server does not implement `FUSE_CREATE` * Improve stability by fixing item lock ordering and lock state tracking, validating file system replies, and releasing lookup references and file handles on error paths * Create missing mount points in the requesting user's security context Only the final path component is created. Direct children of `/Volumes` are created by the daemon and then assigned to the requesting user. * Include fatal error messages in crash reports to improve diagnostics ###### Kernel Extension (Kernel Backend) * Update the kernel extension version to 5.4.0 * Harden `ioctl` reply handling by validating response sizes and copying only the data returned by the file system server to prevent a potential kernel memory disclosure. * Fix a rare use-after-free when allocating a request buffer fails, and fix request ticket leaks when handling attributes, extended attributes, and inode invalidation notifications * Improve locking during mounting and connection teardown and validate request ticket state before processing replies * Prevent unexpected replies to `FUSE_MONITOR` requests from being matched to later requests. This addresses macfuse/macfuse#1190. * Harden notification handling by validating protocol versions, session state, payload sizes, and names Improve directory entry invalidation and deletion handling, including clearing negative name cache entries and preserving open files after deletion notifications. Improve inode range invalidation to preserve dirty cached data and prevent range overflow. * Return `ENOSYS` for the recognized but unimplemented `POLL`, `STORE`, and `RETRIEVE` notifications * Restore normal mount state after an unsuccessful unmount attempt so file system operations and notifications can resume * Bound file system type and volume name validation to their input buffers, and update volume capability reporting for recent macOS versions ###### `MFMount.framework` * Add `MFMou _[Truncated at 4000 characters — full notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.4.0]_ ### macfuse-5.3.3 — macFUSE 5.3.3 - Date: 2026-07-04 - Version: macfuse-5.3.3 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.3.3 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.3.3 - **changed** — Update build process to use Xcode 26.6 (macOS 26.5 SDK) - **changed** — Improve daemonization compatibility for file systems using the FSKit backend through libfuse and libfuse3 - **changed** — Update the kernel extension version to 5.3.3 - **added** — Add support for interrupting readers blocked on the FUSE device - **added** — Add function MFChannelInterrupt() to interrupt threads blocked in MFChannelCopyNextMessage() and MFChannelWaitForNextMessage() without closing the channel - **changed** — Make channel receives interruptible by SIGHUP, SIGINT, SIGTERM, and SIGPIPE - **added** — Add a cancel-safe C trampoline for Swift API entry points - **changed** — Use XPC lightweight code requirements on macOS 14.4 and later when verifying the mount service - **changed** — Defer the actual macOS mount process until first session use in libfuse - **changed** — Avoid forking in fuse_daemonize() after the macOS mount process has started in libfuse - **changed** — Improve signal handling on macOS in libfuse by requesting an interrupt from the signal handler and performing the actual unmount from regular library code - **changed** — Improve multithreaded loop teardown in libfuse by interrupting the MFChannel after cancelling worker threads - **changed** — Replace dispatch_semaphore_t with a pthread-based fallback and use timed waits where signal responsiveness is required in libfuse - **changed** — Defer the actual macOS mount process until first session use in libfuse3 - **changed** — Avoid forking in fuse_daemonize() after the macOS mount process has started in libfuse3 - **changed** — Improve signal handling on macOS in libfuse3 by routing interrupts through the normal unmount path - **changed** — Improve multithreaded loop teardown in libfuse3 by interrupting the MFChannel after cancelling worker threads - **changed** — Replace dispatch_semaphore_t with a pthread-based fallback and use timed waits where signal responsiveness is required in libfuse3 ###### General * Update build process to use Xcode 26.6 (macOS 26.5 SDK) * Improve daemonization compatibility for file systems using the `FSKit` backend through `libfuse` and `libfuse3` ###### Kernel Extension (Kernel Backend) * Update the kernel extension version to 5.3.3 * Add support for interrupting readers blocked on the FUSE device This is used by `MFMount.framework` to wake worker threads during teardown. ###### `MFMount.framework` * Add function `MFChannelInterrupt()` This allows callers to interrupt threads blocked in `MFChannelCopyNextMessage()` and `MFChannelWaitForNextMessage()` without closing the channel. When interrupted, both functions return an error and set `errno` to `EINTR`. * Make channel receives interruptible by `SIGHUP`, `SIGINT`, `SIGTERM`, and `SIGPIPE` * Add a cancel-safe C trampoline for Swift API entry points Swift code now runs with `pthread` cancellation disabled. Pending cancellation is delivered after returning from Swift to the C trampoline in the framework. * Use XPC lightweight code requirements on macOS 14.4 and later when verifying the mount service * Please note that parts of the `MFMount.framework` API may still change in future releases. ###### `libfuse` * Defer the actual macOS mount process until first session use This prevents XPC, `DiskArbitration`, `CoreFoundation`, and `MFMount` state from being created before daemonization in the normal `fuse_main()` flow. * Avoid forking in `fuse_daemonize()` after the macOS mount process has started * Improve signal handling on macOS by requesting an interrupt from the signal handler and performing the actual unmount from regular library code * Improve multithreaded loop teardown by interrupting the `MFChannel` after cancelling worker threads * Replace `dispatch_semaphore_t` with a `pthread`-based fallback and use timed waits where signal responsiveness is required ###### `libfuse3` * Defer the actual macOS mount process until first session use This prevents XPC, `DiskArbitration`, `CoreFoundation`, and `MFMount` state from being created before daemonization in the normal `fuse_main()` flow. * Avoid forking in `fuse_daemonize()` after the macOS mount process has started * Improve signal handling on macOS by routing interrupts through the normal unmount path For `custom_io` sessions, interrupts fall back to the regular session-exit behavior because `libfuse3` does not own the mount lifecycle. * Improve multithreaded loop teardown by interrupting the `MFChannel` after cancelling worker threads * Replace `dispatch_semaphore_t` with a `pthread`-based fallback and use timed waits where signal responsiveness is required ###### Sponsor * Your support is important to sustaining the future development of this project. If macFUSE makes your life easier, consider sponsoring the project through [GitHub Sponsors](https://github.com/sponsors/macfuse). ### macfuse-5.3.2 — macFUSE 5.3.2 - Date: 2026-06-17 - Version: macfuse-5.3.2 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.3.2 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.3.2 - Labels: Pre-release - **added** — Include Swift compatibility library in FSModule for macOS 15 - **added** — Include Swift compatibility library in MFMount.framework for macOS 15 and earlier - **changed** — Update the swift-collections package from version 1.4.1 to 1.6.0 ###### `FSModule` (`FSKit` Backend) * Include Swift compatibility library The file system extension requires `libswiftCompatibilitySpan.dylib` on macOS 15. ###### `MFMount.framework` * Include Swift compatibility library The `swift-collections` package requires `libswiftCompatibilitySpan.dylib` on macOS 15 and earlier. This addresses macfuse/macfuse#1176. * Update the `swift-collections` package from version 1.4.1 to 1.6.0 * Please note that parts of the `MFMount.framework` API may still change in future releases. ###### Sponsor * Your support is important to sustaining the future development of this project. If macFUSE makes your life easier, consider sponsoring the project through [GitHub Sponsors](https://github.com/sponsors/macfuse). ### macfuse-5.3.1 — macFUSE 5.3.1 - Date: 2026-06-13 - Version: macfuse-5.3.1 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.3.1 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.3.1 - Labels: Pre-release - **added** — Add initial support for macOS 27 - **added** — Add initial support for Xcode 27 - **changed** — Use the node identifier and generation as the authoritative handle for file system items instead of the inode number, performing FUSE_LOOKUP to get authoritative handle of directory entries returned by FUSE_READDIR - **fixed** — Fix a bug in open file handle management in FSModule - **changed** — Improve performance when preparing messages sent to the file system server - **changed** — Improve performance when enumerating directories by using FUSE_BATCH_FORGET - **changed** — Update the kernel extension version to 5.3.1 - **fixed** — Remove the file system item from the name cache when handling FUSE_NOTIFY_INVAL_ENTRY to ensure the next lookup triggers a FUSE_LOOKUP request - **fixed** — Address an incompatibility with the macOS 27 SDK included in Xcode 27.0 beta 1 - **deprecated** — Turn MFChannelCreateWithDeviceFileDescriptor() into a weak import as this function will be removed once MFMount() supports mounting volumes using the kernel backend - **fixed** — Fix a path deadlock in the high level API when using VNOP_MONITOR by adding the missing free_path() call in fuse_lib_monitor() in libfuse - **fixed** — Fix a path deadlock in the high level API when using VNOP_MONITOR by adding the missing free_path() call in fuse_lib_monitor() in libfuse3 ###### General * Add initial support for macOS 27 * Add initial support for Xcode 27 ###### `FSModule` (`FSKit` Backend) * Use the node identifier and generation as the authoritative handle for file system items instead of the inode number. Perform `FUSE_LOOKUP` to get authoritative handle of directory entries returned by `FUSE_READDIR` Previous releases assumed that the node identifier and inode number were identical, as is the case when using the high level libfuse API without `use_ino`. This change removes that shortcut and resolves macfuse/macfuse#1166 and macfuse/macfuse#1167. * Improve stability by fixing a bug in open file handle management * Improve performance when preparing messages sent to the file system server * Improve performance when enumerating directories by using `FUSE_BATCH_FORGET` ###### Kernel Extension (Kernel Backend) * Update the kernel extension version to 5.3.1 * Remove the file system item from the name cache when handling `FUSE_NOTIFY_INVAL_ENTRY` This ensures that the next lookup triggers a `FUSE_LOOKUP` request and resolves macfuse/macfuse#1160. * Address an incompatibility with the macOS 27 SDK included in Xcode 27.0 beta 1 ###### `MFMount.framework` * Turn `MFChannelCreateWithDeviceFileDescriptor()` into a weak import This function will be removed once `MFMount()` supports mounting volumes using the kernel backend. Check that the symbol is available before calling it. * Please note that parts of the `MFMount.framework` API may still change in future releases. ###### `libfuse` * Fix a path deadlock in the high level API when using `VNOP_MONITOR`. This adds the missing `free_path()` call in `fuse_lib_monitor()` and resolves macfuse/macfuse#1168. ###### `libfuse3` * Fix a path deadlock in the high level API when using `VNOP_MONITOR`. This adds the missing `free_path()` call in `fuse_lib_monitor()` and resolves macfuse/macfuse#1168. ###### Sponsor * Your support is important to sustaining the future development of this project. If macFUSE makes your life easier, consider sponsoring the project through [GitHub Sponsors](https://github.com/sponsors/macfuse). ### macfuse-5.3.0 — macFUSE 5.3.0 - Date: 2026-06-07 - Version: macfuse-5.3.0 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.3.0 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.3.0 - Labels: Pre-release - **changed** — Update build process to use Xcode 26.5 (macOS 26.5 SDK) - **added** — Introduce a new channel API for exchanging FUSE messages with FUSE backends that significantly improves I/O performance for volumes mounted using the FSKit backend - **added** — Add support for the new channel API provided by MFMount.framework in FSModule (FSKit Backend) - **added** — Add support for the new FUSE_INIT flags FUSE_DARWIN_REPLY_BUF and FUSE_DARWIN_PAYLOAD_BUF to allow for zero-copy reads and writes - **changed** — Substantially improve I/O performance with reading files up to 15 times faster than in previous releases - **fixed** — Improve stability by addressing a race condition when accessing cached volume statistics that could cause the file system extension to crash - **added** — Add MFChannelRef for message-oriented communication with a backend - **added** — Add MFMessageRef for inspecting received FUSE messages - **added** — Add support for transport-provided reply buffers, allowing read replies to be written directly into the destination buffer - **added** — Add blocking, non-blocking, and polling-style receive APIs in MFMount.framework - **added** — Add support for the new channel API provided by MFMount.framework in libfuse - **added** — Add support for the new channel API provided by MFMount.framework in libfuse3 ###### General * Update build process to use Xcode 26.5 (macOS 26.5 SDK) * Introduce a new channel API for exchanging FUSE messages with FUSE backends. The new API significantly improves I/O performance for volumes mounted using the `FSKit` backend. ###### `FSModule` (`FSKit` Backend) * Add support for the new channel API provided by `MFMount.framework` * Add support for the new `FUSE_INIT` flags `FUSE_DARWIN_REPLY_BUF` and `FUSE_DARWIN_PAYLOAD_BUF`. The flags allow for zero-copy reads and writes. * Substantially improve I/O performance. Tests with the `LoopbackFS` reference file system show that reading files is up to 15 times faster than in previous releases. * Improve stability by addressing a race condition when accessing cached volume statistics that could cause the file system extension to crash. ###### `MFMount.framework` * Introduce a new channel API for exchanging FUSE messages with the `FSKit` Backend and the Kernel Backend. `MFMount.framework` is intended for developers porting FUSE user-space libraries to macOS, or adapting existing libraries to support mounting volumes using the `FSKit` backend. The framework handles the mount operation and provides a C API for communicating with the backend. The new channel API exposes FUSE messages as borrowed buffers instead of requiring callers to copy each message into a single contiguous buffer. This allows for zero-copy reads and writes for large payloads when using the `FSKit` backend. * Add `MFChannelRef` for message-oriented communication with a backend. A channel is associated with a volume when the volume is mounted. * Add `MFMessageRef` for inspecting received FUSE messages * Add support for transport-provided reply buffers, allowing read replies to be written directly into the destination buffer * Add blocking, non-blocking, and polling-style receive APIs Please note that parts of the `MFMount.framework` API may still change in future releases. ###### `libfuse` * Add support for the new channel API provided by `MFMount.framework` ###### `libfuse3` * Add support for the new channel API provided by `MFMount.framework` ###### Sponsors * Your support is important to sustaining the future development of this project. If macFUSE makes your life easier, consider sponsoring the project through [GitHub Sponsors](https://github.com/sponsors/macfuse). ### macfuse-5.2.0 — macFUSE 5.2.0 - Date: 2026-04-09 - Version: macfuse-5.2.0 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.2.0 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.2.0 - **changed** — Update build process to use Xcode 26.4 (macOS 26.4 SDK) - **added** — Introduce a new open source API for mounting volumes using the FSKit backend that enables fully sandboxed file systems - **changed** — FSKit backend mount operation is now performed over XPC instead of relying on fork()/exec() - **added** — Add support for a file system item's allocation size in FSModule FSKit backend - **fixed** — Add a workaround for an FSKit/PluginKit issue that could prevent macFUSE volumes from being mounted after re-registering an already registered file system extension - **removed** — Remove the obsolete broker launch daemon io.macfuse.app.launchservice.broker - **changed** — Improve the built-in log command to detect whether the output destination supports colored output - **changed** — Improve the built-in install command to support selecting which components to install with privileged-helpers, file-system-extensions, and all options - **changed** — Update libfuse3 to version 3.18.2 - **fixed** — Fix a bug when handling FUSE_RENAME messages with FUSE_DARWIN_CAP_RENAME_EXT enabled that could cause the source and destination file names to be parsed incorrectly ###### General * Update build process to use Xcode 26.4 (macOS 26.4 SDK) * Introduce a new open source API for mounting volumes using the `FSKit` backend. The new API enables fully sandboxed file systems, which was not previously possible. * The actual mount operation is performed over XPC. This means the `FSKit` backend does no longer rely on `fork()`/`exec()` to mount volumes. * The new API is already used by `libfuse` and `libfuse3` * When sandboxing your file system server, add a Mach lookup exception for the `io.macfuse.mount` service * The new `MFMount.framework` is located in `/Library/Filesystems/macfuse.fs/Contents/Frameworks` * Please note that the new API may change in future releases ###### `FSModule` (`FSKit` Backend) * Add support for a file system item's allocation size. Sparse files are not currently supported, so the value of this attribute is the item's size. * Add a workaround for an `FSKit`/`PluginKit` issue that could prevent macFUSE volumes from being mounted after re-registering an already registered file system extension, requiring a restart of the `FSKit` subsystem. * Remove the obsolete broker launch daemon `io.macfuse.app.launchservice.broker`, which was previously used to establish a connection between the file system extension and the file system server. * Improve the built-in `log` command to detect whether the output destination supports colored output. This is useful when piping log output to a file. ``` % /Library/Filesystems/macfuse.fs/Contents/Resources/macfuse.app/Contents/MacOS/macfuse log stream Executing /usr/bin/log stream --debug --info --predicate "subsystem in { 'com.apple.FSKit', 'com.apple.LiveFS', 'io.macfuse' }" --color always Filtering the log data using "subsystem IN {"com.apple.FSKit", "com.apple.LiveFS", "io.macfuse"}" ... ``` * Improve the built-in `install` command to support selecting which components to install. Supported options are `privileged-helpers`, `file-system-extensions`, and `all`. Omitting the component is equivalent to specifying `all`. ``` % /Library/Filesystems/macfuse.fs/Contents/Resources/macfuse.app/Contents/MacOS/macfuse install --help USAGE: macfuse install [--components ...] [--force] OPTIONS: -c, --components Components to install (default: all) -f, --force -h, --help Show help information. ``` * Introduce foundational changes in preparation for new features in macFUSE 5.3 ###### `libfuse` * Use new mount API `MFMount.framework` for mounting volumes using the `FSKit` backend ###### `libfuse3` * Update `libfuse3` to version 3.18.2 * Use new mount API `MFMount.framework` for mounting volumes using the `FSKit` backend * Fix a bug when handling `FUSE_RENAME` messages with `FUSE_DARWIN_CAP_RENAME_EXT` enabled that could cause the source and destination file names to be parsed incorrectly. ###### Sponsor * Work on this release has been sponsored by [uint24](https://github.com/uint24) and others * Your support is important to sustaining the future development of this project. If macFUSE makes your life easier, consider sponsoring the project through [GitHub Sponsors](https://github.com/sponsors/macfuse). ### macfuse-5.1.3 — macFUSE 5.1.3 - Date: 2025-12-23 - Version: macfuse-5.1.3 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.1.3 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.1.3 - **changed** — Update build process to use Xcode 26.2 (macOS 26.2 SDK) - **changed** — Update kernel extension to version 5.1.3 - **fixed** — Add special handling for the O_EXEC open flag to prevent a kernel panic by treating it internally as O_RDONLY - **changed** — Introduce foundational changes in FSModule (FSKit Backend) in preparation for new features in macFUSE 5.2 - **fixed** — Fix an issue where the extended attribute name passed to the setxattr handler was always an empty string by accounting for the additional position field and padding in FUSE_COMPAT_SETXATTR_IN_SIZE ###### General * Update build process to use Xcode 26.2 (macOS 26.2 SDK) ###### Kernel Extension (Kernel Backend) * Update kernel extension to version 5.1.3 * Add special handling for the `O_EXEC` open flag to prevent a kernel panic. Internally, `O_EXEC` is treated as `O_RDONLY`, meaning a readable file descriptor will be requested from the file system server. For details, see macfuse/macfuse#1130. ###### `FSModule` (`FSKit` Backend) * Introduce foundational changes in preparation for new features in macFUSE 5.2 ###### `libfuse3` * Fix an issue that resulted in the extended attribute name passed to the `setxattr` handler always being an empty string. On macOS, `FUSE_COMPAT_SETXATTR_IN_SIZE` needs to account for the additional `position` field and its associated padding. For details, see macfuse/macfuse#1134. ### macfuse-5.1.2 — macFUSE 5.1.2 - Date: 2025-11-20 - Version: macfuse-5.1.2 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.1.2 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.1.2 - **changed** — Improve automatic file system extension registration with support for manual registration using the install subcommand and a --force flag to remove duplicate extensions - **added** — Add support for streaming logs using the log subcommand - **fixed** — Resolve compatibility issues with legacy versions of macOS by removing the io.macfuse.app.launchservice.broker launch service on unsupported versions ###### `FSModule` (`FSKit` Backend) * Improve automatic file system extension registration The file system extensions are registered automatically before mounting a volume and can be registered manually using the `install` subcommand. The `--force` flag removes any duplicate extensions before registering the current set. ``` /Library/Filesystems/macfuse.fs/Contents/Resources/macfuse.app/Contents/MacOS/macfuse install --force ``` * Add support for streaming logs using the `log` subcommand ``` /Library/Filesystems/macfuse.fs/Contents/Resources/macfuse.app/Contents/MacOS/macfuse log stream ``` * Resolve compatibility issues with legacy versions of macOS Previous releases installed the `io.macfuse.app.launchservice.broker` launch service on unsupported versions of macOS, which could result in the service crashing and the installer hanging. This release removes the service on unsupported versions of macOS. ### macfuse-5.1.1 — macFUSE 5.1.1 - Date: 2025-11-08 - Version: macfuse-5.1.1 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.1.1 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.1.1 - **changed** — Update kernel extension to version 5.1.1 - **changed** — Disable VNOP_MONITOR support on macOS 15 to maintain compatibility with macOS versions before 15.4 ###### Kernel Extension (Kernel Backend) * Update kernel extension to version 5.1.1 * Disable `VNOP_MONITOR` support on macOS 15. `VNOP_MONITOR` was introduced in macOS 15.4. Disable the feature on macOS 15 to maintain compatibility with macOS versions before 15.4. ### macfuse-5.1.0 — macFUSE 5.1.0 - Date: 2025-10-30 - Version: macfuse-5.1.0 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.1.0 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.1.0 - Labels: Pre-release - **changed** — Update build process to use Xcode 26.1 (macOS 26.1 SDK) - **changed** — Update LoopbackFS demo file systems and add a libfuse3 variant (LoopbackFS-libfuse3-C) - **added** — Add new HelloFS demo file system (HelloFS-Framework-Swift) as a minimal Hello World example in 40 lines of code - **changed** — Update kernel extension to version 5.1.0 - **added** — Add support for the VNOP_MONITOR file system callback, available since macOS 15, which notifies file systems when the number of watchers for a file system item changes - **added** — Send FUSE_MONITOR message to the file system server when VNOP_MONITOR callback is invoked, with FUSE_MONITOR_BEGIN flag for new watchers and FUSE_MONITOR_END flag when watchers stop monitoring - **fixed** — Fix a bug in VNOP_LINK that can cause a deadlock when a file system uses the same nodeid to represent both the original file system item and its link - **fixed** — Fix a bug in VNOP_MNOMAP that can cause a deadlock when VNOP_WRITE callback calls VNOP_MNOMAP - **fixed** — Fix f_mntfromname (fsname mount option) being truncated at 90 bytes; now supports names of up to 1024 bytes including the terminating null character - **added** — Add support for mounting non-local volumes (typically distributed file systems) on macOS 26 via FSModule (FSKit Backend) - **added** — Add support for mount option local to treat volumes as local (typically physically attached storage), supported on macOS 15.4 and later - **added** — Add support for mount option volname=NAME to specify a name for the volume being mounted - **added** — Add new monitor callback handler in libfuse and implement support for the FUSE_MONITOR message - **added** — Add support for mounting file systems using the FSKit backend via libfuse3 with mount option -o backend=fskit - **added** — Add new monitor callback handler in libfuse3 and implement support for the FUSE_MONITOR message - **added** — Add utimens API extension for macOS in libfuse3 that calls the utimens handler with three time stamps (access, modification, and backup) when FUSE_DARWIN_ENABLE_EXTENSIONS is set to 1 - **fixed** — Fix a bug in the statfs API extension for macOS in libfuse3 and add missing fuse_lib_statfs$DARWIN() handler - **fixed** — Fix a bug in the threadid module in libfuse3 that prevented several file system callback handlers from being invoked - **changed** — Adapt fuse_clone_chan_fd_default() for macOS to not associate new FUSE device file descriptors with the original ones - **changed** — Rename crtime (creation time) to btime (birth time) in libfuse3 macOS API extensions - **changed** — Enable Clang module support in Framework to improve interoperability with Swift - **changed** — Drop the GM type name prefix in Framework Swift support - **changed** — Make UserFileSystem.MoveOptions more idiomatic for Swift - **added** — Add FileAttributeKey extension in Framework defining additional framework-specific attribute keys - **changed** — Turn NSObject categories UserFileSystemLifecycle, UserFileSystemOperations, and UserFileSystemResourceForks into actual protocols - **removed** — Remove unsupported exchangedata() callback handler which has been superseded by renamex_np() and unsupported since macOS 11 - **deprecated** — Deprecate the exchangeDataOfItemAtPath:withItemAtPath:error: delegate method - **fixed** — Fix a layout bug on macOS 26 and modernize layout in System Settings ###### General * Update build process to use Xcode 26.1 (macOS 26.1 SDK) * Update demo file systems * Update `LoopbackFS` demo file systems and add a `libfuse3` variant (`LoopbackFS-libfuse3-C`) * Add new `HelloFS` demo file system (`HelloFS-Framework-Swift`). It serves as a minimal "Hello World" example — in just 40 lines of code. * For more information, see the [demo](https://github.com/macfuse/demo) repository. ###### Kernel Extension (Kernel Backend) * Update kernel extension to version 5.1.0 * Add support for the `VNOP_MONITOR` file system callback The `VNOP_MONITOR` callback is available since macOS 15 and notifies file systems when the number of watchers for a file system item changes. This allows distributed file systems to subscribe only to events for items that are actively being watched, improving efficiency and reducing unnecessary event handling. * When the `VNOP_MONITOR` callback is invoked, the kernel extension sends a `FUSE_MONITOR` message (`struct fuse_monitor_in`) to the file system server running in user space * The `FUSE_MONITOR_BEGIN` flag is set when a new watcher starts monitoring the item * The `FUSE_MONITOR_END` flag is set when a watcher stops monitoring the item * Fix a bug in `VNOP_LINK` that can cause a deadlock in case a file system uses the same `nodeid` to represent both the original file system item and its link. In this case, trying to lock the link in `VNOP_LINK` resulted in a deadlock. For more information, see macfuse/macfuse#1120. * Fix a bug in `VNOP_MNOMAP` that can cause a deadlock. The `VNOP_WRITE` callback might end up calling the `VNOP_MNOMAP` callback. Attempting to lock the already locked file system item in the `VNOP_MNOMAP` callback caused the deadlock. * Fix `f_mntfromname` (`fsname` mount option) being truncated at 90 bytes. `f_mntfromname` supports names of up to 1024 bytes (including the terminating `\0` character). For more information, see macfuse/macfuse#1123. ###### `FSModule` (`FSKit` Backend) * Add support for mounting "non-local" volumes (typically distributed file systems) on macOS 26. Mounting "local" volumes (typically physically attached storage) is supported on macOS 15.4 and later macOS versions. * Add support for mount option `local`. macOS is more aggressive in dealing with "local" volumes. Treat this option as experimental. * Add support for mount option `volname=NAME`, where `NAME` is a string. You can use the `volname` option to specify a name for the volume being mounted. ###### `libfuse` * Add new `monitor` callback handler and implement support for the new `FUSE_MONITOR` message. For more information, see "Kernel Extension". ###### `libfuse3` * Add support for mounting file systems using the `FSKit` backend. By default, the kernel backend is used to mount volumes. When specifying the mount option `-o backend=fskit`, `libfuse3` will use the `FSKit` backend to mount the file system. For more information, see [FUSE Backends](https://github.com/macfuse/macfuse/wiki/FUSE-Backends). * Add new `monitor` callback handler and implement support for the new `FUSE_MONITOR` message. For more information, see "Kernel Extension". * Add `utimens` API extension for macOS. When `FUSE_DARWIN_ENABLE_EXTENSIONS` is set to 1 , the `utimens` handler is called with three time stamps — the file's access, modification, and backup time stamps. By default, the handler is called with the file's access and modification time stamps. * Fix a bug in the `statfs` API extension for macOS and add missing `fuse_lib_statfs$DARWIN()` handler * Fix a bug in the `threadid` module that prevented several file system callback handlers from being invoked when using the module * Adapt `fuse_clone_chan_fd_default()` for macOS. On macOS, there is no need to associate new FUSE device file descriptors with the original ones. * Rename `crtime` (creation time) `btime` (birth time). This change does not affect _[Truncated at 4000 characters — full notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.1.0]_ ### macfuse-5.0.7 — macFUSE 5.0.7 - Date: 2025-09-30 - Version: macfuse-5.0.7 - Original notes: https://github.com/macfuse/macfuse/releases/tag/macfuse-5.0.7 - Permalink: https://whatsnew.fyi/product/macfuse/releases/macfuse-5.0.7 - **changed** — Update build process to use Xcode 26.0.1 (macOS 26.0 SDK) - **changed** — Update Installer package to use absolute paths when invoking command line tools in the postinstall script - **removed** — Drop compatibility code for macOS 11 and earlier - **fixed** — Fix license file formatting for QuickLook rendering on macOS 26 - **changed** — Update kernel extension to version 5.0.7 - **fixed** — Preserve a vnode's identity when marking it as dangling to fix fchmod(2) system call failures - **fixed** — Resolve symbolic links in the kernel extension path before attempting to load the kernel extension - **changed** — Improve support for macOS 26 in FSModule with FSClient now providing information about installed third party file system extensions - **added** — Add support for creating a mount point in /Volumes automatically when mounting a volume - **changed** — Introduce foundational changes in preparation for new FSKit features in macFUSE 5.1 - **changed** — Replace typeof with the __typeof__ builtin in libfuse3 headers for C23 compatibility ###### General * Update build process to use Xcode 26.0.1 (macOS 26.0 SDK) * Update Installer package to use absolute paths when invoking command line tools in the `postinstall` script * Drop compatibility code for macOS 11 and earlier. macFUSE 5 supports macOS 12 through macOS 26. * Fix license file formatting. On macOS 26, QuickLook fails to render lists correctly if they are placed inside table cells in rich text documents. ###### Kernel Extension (Kernel Backend) * Update kernel extension to version 5.0.7 * Preserve a vnode's identity when marking it as dangling. Resetting the identity causes the `fchmod(2)` system call to fail. This addresses macfuse/macfuse#1112. * Resolve symbolic links in the kernel extension path before attempting to load the kernel extension ###### `FSModule` (`FSKit` Backend) * Improve support for macOS 26. `FSClient` now provides information about installed third party file system extensions, enabling more reliable detection of whether a file system extension has been enabled by the user. * Add support for creating a mount point in `/Volumes` automatically when mounting a volume * Introduce foundational changes in preparation for new FSKit features in macFUSE 5.1 ###### `libfuse3` * Replace `typeof` with the `__typeof__` builtin in headers. The `typeof` keyword is part of the C23 ISO standard, but is not officially supported in older C ISO standards.