Announcing macFUSE 5.5.0 Posted on 17 Oct 2026
Release Notes
General
-
Update the build process to use Xcode 27.1 (macOS 27.0 SDK)
-
Build user-space components for
arm64ein addition toarm64andx86_64to support Xcode’s enhanced security build settings
FSModule (FSKit Backend)
-
Fix Disk Arbitration integration for volumes mounted with the
localoption so they appear as local volumes in Finder and can be unmounted through Finder -
Fix mounting on paths containing spaces and other non-ASCII characters. This addresses macfuse/macfuse#1198.
-
Add support for read-only mounts on macOS 26.4 and later. This addresses macfuse/macfuse#1208.
-
Add support for file preallocation through
FUSE_FALLOCATE, using the same allocation flags as the kernel backend -
Fix extended attribute removal by sending
FUSE_REMOVEXATTRinstead of setting the attribute to an empty value. This addresses macfuse/macfuse#1213. -
Send
FUSE_FLUSHwhen closing a file. This addresses macfuse/macfuse#1214.FSKitdoes not expose a per-filefsync(2)callback. On macOS 27, its close callback cannot return errors, so flush failures are logged but cannot be reported to the application throughclose(2). -
Mitigate a data corruption issue in
FSKiton macOS 26 and 27 by rejecting emptyFUSE_READreplies withEIOand clearing unused buffer tails after short readsThis workaround can cause read errors when a file’s size changes remotely. This addresses macfuse/macfuse#1188.
-
Add support for the
daemon_timeoutoption and improve request cancellation by trackingFUSE_INTERRUPTrequests, retrying interrupts afterEAGAIN, and disconnecting unresponsive file system servers when interruption times out -
Improve item reclamation on macOS 27 by protecting items until FSKit has registered returned references, coordinating reclamation with concurrent lookups, and balancing lookup references and file handles on error paths
-
Improve stability by validating incoming FUSE and XPC messages, checking buffer alignment, preventing request identifier collisions, and fixing races in request completion, cancellation, and timeout handling
-
Improve concurrency and add fast paths for uncontended locks and semaphores
-
Avoid repeated requests for access checks, flushes, preallocation, and file or directory synchronization when the file system server does not implement the corresponding callbacks
-
Keep named pipes metadata-only and reject stream operations, size changes, and preallocation locally
-
Fix a crash when mounting volumes using unsigned file system binaries on Intel Macs. This addresses macfuse/macfuse#1205.
Kernel Extension (Kernel Backend)
-
Update the kernel extension version to 5.5.0
-
Add support for remote POSIX and BSD advisory locking, allowing file system servers to coordinate
fcntl(2)andflock(2)locks across clientsPOSIX and BSD locking are negotiated independently. Local advisory locking remains available when neither capability is enabled. If only one family is enabled, requests for the other return
ENOTSUP. Timed locks and PID-filtered lock queries are unsupported when remote locking is enabled.File system servers must track lock ownership using
fi->lock_ownerindependently offi->fh, because multiple lock owners can share a FUSE file handle. Close-time unlocks are sent explicitly instead of being inferred from flush or release requests. -
Add native I/O support for named pipes and character and block devices through macOS
fifofsandspecfs, while retaining FUSE namespace and metadata handling. This addresses macfuse/macfuse#1212 -
Default kernel backend mounts to
nodevto disable device accessMounting with
-o devrequires root privileges. Named pipes are unaffected bynodev. -
Harden extended attribute reply handling by validating reply sizes before allocation and enforcing the advertised extended attribute size limit
-
Validate file types, sizes, block counts, timestamps, and cache timeouts before updating vnode state
-
Prevent duplicate request identifiers during concurrent allocation
-
Preserve request timeout deadlines across signal interruptions so repeated signals cannot extend waits indefinitely, and protect the
FUSE_INIThandshake from signal interruption -
Improve node locking by making attribute-refresh waits consistently uninterruptible
MFMount.framework
-
Verify the mount service’s code signature when processing its reply and authenticate the FSKit channel peer before decoding its first message
-
Reject additional XPC channel connections to prevent other peers from injecting requests into the receive queue or invalidating the active channel
-
Improve XPC mount connection cleanup and cancel connections after mount requests complete
-
Avoid logging expected
ENOENTerrors when replies arrive after their requests have been interrupted or the volume has been unmounted -
Please note that parts of the public
MFMount.frameworkAPI may still change in future releases.
libfuse
-
Preserve POSIX lock ownership by skipping synthetic unlocks during
FUSE_FLUSHon macOS, where close-time unlocks are sent explicitly -
Forward BSD advisory locking through the
threadidandvoliconmodules so stacking these modules preserves the underlying file system’s locking support -
Fix source builds with newer Autoconf and Gettext versions by allowing
autopointto installconfig.rpathon macOS
libfuse3
-
Update
libfuse3to version 3.18.3 -
Preserve POSIX lock ownership by skipping synthetic unlocks during
FUSE_FLUSHon macOS, where close-time unlocks are sent explicitly -
Include upstream fixes for multithreaded loop teardown, allocation failure handling, resource leaks, and
iconvinitialization -
Disable
fuse_session_custom_io()by default as part of the upstream security changesThe function returns
-ENOTSUPunless the library is built with-Denable-custom-io=true. Custom I/O peers must validate protocol messages because libfuse relies on validation normally performed by the kernel.
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.


