Announcing macFUSE 5.4.0 Posted on 07 Sep 2026
Release Notes
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
libfuseandlibfuse3 -
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_SETATTRrequests 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_READreply, 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_EXCLonly when extended rename support has been negotiated with the file system server. This addresses macfuse/macfuse#1191. -
Fall back to
FUSE_MKNODwhen the file system server does not implementFUSE_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
/Volumesare 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
-
Prevent kernel memory disclosure when processing
ioctlreplies by validating response sizes and copying only the bytes returned by the file system server -
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_MONITORrequests 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
ENOSYSfor the recognized but unimplementedPOLL,STORE, andRETRIEVEnotifications -
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
MFMountResultCreatingMountPointFailedto report that the requested mount point could not be createdDisplay a localized alert with recovery guidance unless dialogs are suppressed by the caller
-
Close the channel before returning handled mount setup failures
-
Add Simplified Chinese, Japanese, French, Spanish, Korean, Brazilian Portuguese, Italian, and Traditional Chinese localizations
-
Remove the direct dependency on AppKit
-
Please note that parts of the MFMount.framework API may still change in future releases.
libfuse
-
Wait for pending mount attempts to finish before the daemonizing parent process exits
The parent now exits with a status reflecting whether mounting succeeded, allowing callers and scripts to detect mount failures. This addresses macfuse/macfuse#1178.
-
Keep standard streams open while mounting so startup diagnostics remain visible, and redirect them only after successful completion
-
Warn when a process that has previously created additional threads calls
fork(2), including calls made outsidefuse_daemonize().
libfuse3
-
Fix decoding of rename requests when
FUSE_DARWIN_CAP_RENAME_EXTis disabled or unsupported by the file system -
Wait for pending mount attempts to finish before the daemonizing parent process exits
The parent now exits with a status reflecting whether mounting succeeded, allowing callers and scripts to detect mount failures. This addresses macfuse/macfuse#1178.
-
Keep standard streams open while mounting so startup diagnostics remain visible, and redirect them only after successful completion
-
Warn when a process that has previously created additional threads calls
fork(2), including calls made outsidefuse_daemonize().
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.


