# Ejectify unmounts your external volumes before the Mac sleeps, and remounts them after

> Ejectify is a Swift menu bar app for macOS that unmounts selected external volumes, ejectable internal volumes and disk images before sleep or display off, then tries to mount them again after wake, which is aimed at the Disk Not Ejected Properly notification and at data loss. It suits a Mac user with external drives, and the eject mode deliberately gives up automatic remounting.

**nielsmouthaan/ejectify-macos** — Ejectify automatically unmounts external volumes when your Mac starts sleeping, and mounts them again after it wakes up.

- Repository: https://github.com/nielsmouthaan/ejectify-macos
- Website: https://ejectify.app
- Stars: 582 · Forks: 77
- Language: Swift
- License: NOASSERTION
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/nielsmouthaan-ejectify-macos

## The notification it exists to prevent

Ejectify is a Mac menu bar utility that helps prevent Disk Not Ejected Properly notifications by safely unmounting, or optionally ejecting, selected volumes when your Mac starts sleeping or the display turns off, then attempting to mount them again after wake.

The problem it addresses is a macOS behaviour that anyone with an external drive has met. The system puts the machine to sleep, the sleep is not a clean unmount, and the next morning the disk has a dirty flag on it. The warning is the visible part; the documentation is more concerned with the part underneath, which is that the risk of data loss or corrupted volumes is reduced by safely unmounting them first.

That ordering matters. A tool that ejects at the wrong moment makes the problem worse, so Ejectify's job is to be on the volume before the system goes down, not after.

It is a menu bar app rather than a background service, which is the right shape for this. There is nothing to configure in a system preference pane, no daemon to install, and the icon is where you would expect a utility of this kind to live. The homepage is ejectify.app and the download is at ejectify.app/get, or you build it from the repository.

The repository tree shows a normal Xcode project: Ejectify.xcodeproj, the main Ejectify/ source directory, a separate EjectifyPrivilegedHelper/ directory, and EjectifyTests/.

## Which volumes it manages, and the two modes that differ

The feature list is short and each item is a decision you make.

You choose which supported volumes Ejectify manages, and the supported set is broader than external drives. It includes external volumes, ejectable internal volumes, and disk images. The disk image case is the one that surprises people, because a mounted DMG is a volume that macOS will complain about in exactly the same way a USB drive is complained about.

Then there are two modes, and the difference is more than a wording choice. Ejectify can optionally eject whole disks instead of unmounting volumes, and the documentation states plainly that this disables automatic remounting.

The distinction is between unmounting a volume, which detaches the filesystem while leaving the underlying disk attached, and ejecting the disk, which removes the device from the bus. Unmount is what you want for a disk you use every day, because the hardware stays attached and can be remounted without replugging anything. Eject is what you want for a disk you are taking away, and it is the mode in which the automatic remount behaviour does not apply.

There is also a Keychain password fallback. Ejectify can open encrypted APFS volumes when macOS cannot open them automatically, using an optional Keychain password fallback. The optionality is the point, since a fallback that requires a stored password is a different security decision from one that does not.

## Sleep and display off are separate triggers

The timing options are what make this a utility rather than a script.

Ejectify supports automatic unmounting when the display turns off or the system starts sleeping, then attempts to mount volumes again after wake. Two triggers, not one, and they cover the two ways a Mac actually interrupts your work.

Display off is the interesting one, because a MacBook on battery closes its lid or the screen times out and the machine is still awake. Without a display-off trigger, a drive stays mounted through a coffee break and a closed lid, and the notification still appears. A sleep trigger alone catches the long case and misses the short one.

The remount is described as an attempt, not a guarantee, and the difference in wording between the feature list and the opening paragraph is deliberate. On wake, macOS itself will normally remount a volume that was cleanly unmounted, and Ejectify's remount step is a second pass for the cases where the system does not do it. The project does not document the retry behaviour or how long it waits, so anyone relying on the remount for a workflow that must resume unattended has to test it rather than assume it.

## A privileged helper is the price of ejecting

The repository layout contains a directory named EjectifyPrivilegedHelper/, and it is not a curiosity.

Ejecting a disk, as opposed to unmounting a volume, is an operation that macOS restricts. A disk attached to a bus has to be told the system to power it down, and that requires administrator rights, which in modern macOS means a helper tool installed outside the application sandbox and authorised by the user through the system prompt.

The presence of the helper also tells you something about the product's trust model. The application is not doing everything in a sandboxed process; part of it runs with privileges the user granted once. For a utility whose entire job is touching disk devices, that is a reasonable trade, but it is a trade and the repository makes it visible.

The EjectifyTests/ directory alongside it means the helper and the app are both covered by a test target, and the AGENTS.md at the root is the file a coding agent would read for guidance on working in the repository. CHANGELOG.md is also present, so the change history is in the tree rather than only on the site.

## The documentation lives on the website, not in the repository

The repository documentation is short, and it is short by design.

For questions and issues, the instruction is to check the FAQ on Ejectify's website first, and if the question is not listed, or you have a suggestion, open an issue on the repository with the issue chooser.

That is a reasonable arrangement for a small utility with a user base that is mostly Mac users rather than developers, and the FAQ is where the volume-specific behaviour will be documented. The repository itself tells you very little about which volumes count as supported, what happens when a volume is busy, or how the remount step is scheduled.

The build path is the other half. The download page at ejectify.app/get is the primary route, and the alternative is to build it yourself from the repository, which means opening Ejectify.xcodeproj in Xcode and dealing with the privileged helper target and its code signing requirements.

So the decision for a user is: take the signed build, or become the person who signs the helper on your own machine. The second option is more work than the first and is only worth it for someone who wants to read the code before trusting it.

## MIT with borrowed code, and a licence GitHub cannot classify

The licence section is short and has two parts. Ejectify is available under the MIT license and uses source code from open-source projects, with the details in the LICENCE file at the root of the repository.

The second clause is the interesting one. A menu bar utility that talks to disk devices through a privileged helper is likely to lean on existing open source for the parts it does not need to own, and the licence file is where you find out which parts and under what terms. The project metadata records the licence as one GitHub cannot classify, so the file is the authority rather than the badge.

The MIT terms themselves are among the most permissive there are, so redistribution and commercial use are not obstacles. The obligation is attribution, and with borrowed code the attribution list in the licence file becomes the thing worth reading before you fork the project.

There are no GitHub releases, so the version history for the application is on the website and in CHANGELOG.md, and the repository is not archived with the last push on 2026-08-27.

## Where the wrong tool is a different utility

There is a real alternative to consider, and it is not another app: the operating system already unmounts volumes on shutdown, and macOS has long offered a setting to eject attached disks automatically when the machine goes to sleep.

That built-in behaviour is coarser. It applies to whole disks, it does not understand which volumes you actually use, it does not cover the display-off case the way this tool does, and it gives you no remount step. Ejectify's argument is not that macOS cannot eject, it is that a menu bar utility can do it per volume, on a different trigger, and try to put it back afterwards.

For a desktop Mac that never sleeps, none of this matters and the tool is unnecessary. For a MacBook that sleeps constantly with a spinning disk attached, the difference between a clean unmount and a yanked one is the difference between a warning and a corrupted filesystem.

The failure mode to know about is the one the tool creates for itself. If a volume is busy when sleep begins and cannot be unmounted cleanly, Ejectify has not made anything worse, but it also has not saved you, and the notification will still appear. And in eject mode, where the whole disk is powered down, you get a physical disconnection, so any software that expects the device to remain attached, a backup daemon watching that drive for example, sees a different world than in unmount mode.

## Conclusion

Ejectify fits a Mac user who attaches external drives or disk images and keeps seeing Disk Not Ejected Properly warnings after wake, or who has had a volume corrupted by a sleep that pulled it out from under a running write. It does not fit a Mac with no external storage, and it does not fit a workflow that depends on the volumes staying mounted, since the eject mode removes the automatic remount entirely. Before adopting it, decide whether you want unmount or full eject, because the documentation states that ejecting whole disks disables automatic remounting, and if you use encrypted APFS volumes, check the Keychain password fallback and where that password is stored before you rely on it.

## FAQ

### What does Ejectify do on a Mac?

It is a menu bar utility that safely unmounts, or optionally ejects, selected volumes when the Mac starts sleeping or the display turns off, then attempts to mount them again after wake, which helps prevent Disk Not Ejected Properly notifications and reduces the risk of data loss.

### Which kinds of volumes can Ejectify manage?

External volumes, ejectable internal volumes and disk images. You choose which of the supported volumes Ejectify manages rather than it taking over every attached disk.

### What is the difference between ejecting and unmounting in Ejectify?

Unmounting detaches the volume while leaving the disk attached, and the automatic remount after wake still applies. Ejecting removes the whole disk, and the documentation states that this disables automatic remounting.

### How do I get Ejectify?

You download it from the project site at ejectify.app/get, or you build it yourself from the repository, which is an Xcode project with a separate privileged helper target. Questions are answered in the FAQ on the website, and anything not covered can go to the repository issue tracker.

## Sources

- [Issues](https://github.com/nielsmouthaan/ejectify-macos/issues)
- [nielsmouthaan/ejectify-macos on GitHub](https://github.com/nielsmouthaan/ejectify-macos)
- [Project website](https://ejectify.app)
- [README](https://github.com/nielsmouthaan/ejectify-macos/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/nielsmouthaan-ejectify-macos
