← Back to Blog

The Mac Eject Problem Apple Has Ignored for Years

Mac users have been complaining about vague eject error messages since the PowerPC days. Apple has never fixed it. Here's the history of a frustrating design choice.

· 6 min read

Try to eject an external drive on your Mac and sometimes you get this message: “The disk wasn’t ejected because one or more programs may be using it.”

One or more programs. May be using it. Not “is using it.” Not which programs. Just a vague accusation that something, somewhere, might have a file open.

This error message has existed in essentially the same form for over fifteen years. Mac users have been asking for a fix on Apple’s support forums since at least the Snow Leopard era. The complaints continue through every macOS version: Mountain Lion, Mavericks, Catalina, Monterey, Ventura, Sonoma, Sequoia. The message never changes. Apple never fixes it.

The problem is obvious

When you can’t eject a disk, you need two pieces of information: what process is blocking it, and how to stop that process. macOS gives you neither.

The operating system knows exactly which process has files open on the drive. It has to know, because that’s how it determines whether to allow ejection. But instead of sharing this information, macOS gives you a shrug emoji in text form.

Compare this to the Terminal command lsof, which lists every process with open files on a given path. The information exists. It’s accessible. Apple just chose not to put it in the error dialog.

What users actually do

Faced with this useless error message, Mac users have developed a folklore of workarounds passed down through forum posts and blog comments.

The optimistic ones wait and try again, hoping whatever mysterious process finishes on its own. Sometimes this works. Often it doesn’t.

The technically inclined open Terminal and run lsof /Volumes/DriveName, then parse the output to identify culprits. This requires knowing the command exists, understanding how to read its output, and being comfortable killing processes.

The impatient force eject and hope for the best. Sometimes this is fine. Sometimes it corrupts data. Without knowing what’s actually using the drive, there’s no way to assess the risk.

The frustrated just restart their Mac. This definitely works, but it’s absurd that unplugging a drive requires rebooting your computer.

Why hasn’t Apple fixed this?

Only Apple knows for certain, but some theories:

The error dialog would need to change, and Apple historically avoids adding complexity to user-facing messages. But “Safari is using this disk” isn’t more complex than “one or more programs may be using it.” It’s more useful.

The list of blocking processes could be long or confusing in edge cases. True, but showing the top culprit would be infinitely better than showing nothing. And for the edge cases, a “Show Details” button is standard practice.

Most users don’t hit this problem frequently enough to complain loudly. Perhaps, but the Apple Support Communities and MacRumors forums are full of threads going back years. The problem is well documented.

The real answer is probably prioritization. Apple has limited engineering resources and this problem, while annoying, doesn’t prevent people from using their Macs. It just makes them mutter curses at their screen every few weeks.

The problem is getting worse

As external storage becomes more common (fast USB-C SSDs, portable drives for video editing, backup drives for Time Machine), users hit this error more frequently.

macOS is also running more background processes that access external drives. Spotlight indexing, Time Machine monitoring, iCloud syncing, various daemon processes. The number of potential blockers has grown, but the error message remains just as vague.

Users migrating from older Macs report the problem appearing more often on Apple Silicon machines. Whether this is a software change or just perception isn’t clear, but the complaints have intensified since the M1 transition.

Third-party solutions exist

The fact that third-party developers have built entire applications around this problem says something.

What’s Keeping Me was a popular utility that showed which processes were blocking a drive. It was abandoned years ago and no longer works on modern macOS, but its existence proved there was demand for this feature.

Various menu bar utilities and scripts have emerged to fill the gap. Some monitor drives and warn you before ejection problems occur. Others automate the lsof workflow so you don’t have to type Terminal commands.

These tools shouldn’t need to exist. The functionality they provide is basic operating system capability that Apple chose not to expose.

What a fix would look like

The minimum viable fix is simple: change the error dialog to say which process is blocking ejection. “The disk can’t be ejected because Spotlight is indexing it” tells you exactly what’s happening. You can wait for indexing to finish, or you can quit Spotlight, or you can decide to force eject knowing the risk.

A better fix would add an option to quit the blocking process directly from the dialog. “Safari has files open on this disk. [Quit Safari and Eject] [Cancel]” solves the problem in one click without requiring users to hunt through Activity Monitor.

The ideal fix would be proactive: warn users when they have unsaved changes on an external drive, or when background processes are actively using it. Let people know before they try to eject and get frustrated.

None of these are technically difficult. The hardest part is probably the product decision to make the change at all.

For now

Apple might fix this eventually. They’ve been known to address long-standing annoyances when the stars align. Until then, the workarounds remain the same: Terminal commands, Activity Monitor detective work, or tools like Ejecta that do the detective work for you.

It shouldn’t be this hard to unplug a drive. But it is, and it has been for years, and Apple doesn’t seem to care.

Tired of drive ejection issues?

Ejecta shows you exactly what's blocking your drive and lets you fix it with one click.

Get Ejecta for $14.99