Howard Oakley:
Over the last few years, many have reported that their Macs spontaneously updated or even upgraded macOS when they didn’t expect them to, and often against their wishes. This can occur when Software Update in System Settings has Install macOS updates turned off. Explanations of how Apple appears to be able to override that setting have so far been lacking; this article explains how it happened overnight to my iMac Pro, when it updated itself from Sequoia 15.1.1 to 15.3.1.
[…]
As a result, it had periodically notified me of updates to 15.2, 15.3, and most recently 15.3.1, each of which I had politely declined. Those notifications became more persistent, and one or two gave me either of two options, to update now, or later that night, and couldn’t otherwise be dismissed. I therefore chose to defer the update until the night, and nothing came of them.
One of those notifications, though, decided to end my procrastination and added a background activity named com.apple.SUOSUScheduler.tonight.install to the DAS-CTS scheduling system. In the small hours of the morning, DAS rescored its list of activities, and decided that it was time to dispatch that task[…]
As he says, “Software update notifications tricked the user into unwittingly agreeing to perform a macOS update.” There’s no button to decline the update or just close the notification. All you can do is click on the notification itself, avoiding the buttons. This will open System Settings, which you then have to close. If you do click a button, the user is “given no second chance to confirm they intended the update to take place.”
Once the update had been scheduled by DAS, the only way to postpone or abort it would have been to shut the Mac down. Activities scheduled by DAS-CTS are hidden from the user, who has neither awareness nor control over them.
The situation on iOS is similar, where there is no option to decline an update. You can only tell it to install Later, and then when it asks for your passcode you have to tap Cancel.
Ric Ford:
Tom Mulhall, another longtime Mac expert, emailed us that Apple force-updated iOS against his will, just as Apple did to Howard Oakley’s Mac.
Oddly, I just turned on my iPad after not using it for a week, and despite being set to automatically update the OS it was a few months behind and didn’t offer an update until I went into Settings.
Previously:
Dark Patterns iOS iOS 18 Mac macOS 15 Sequoia Notification Center Software Update
Howard Oakley:
The Finder was certain there was nearly 228 GB available, but also claimed that 852 GB was used. Did that mean that my 1 TB SSD had grown in size overnight to just over 1.08 TB? What was this “83.71 GB purgeable”, and had the Finder already assumed it had been deleted? Could the Finder really have made an error of more than 50% in calculating free space?
I turned to Disk Utility, which confirmed what I had expected, that there was actually 144 GB free.
My own free utility Mints said much the same.
[…]
Over those years, the Finder has repeatedly shown errors in accounting for used and free space on APFS, although they’re seldom as large as this.
[…]
The Finder is the front window of macOS. When it has made a fool of itself like this, repeatedly, ever since the introduction of APFS, it only makes the whole system look amateur.
Howard Oakley:
This article considers just what counts as being “purgeable”.
[…]
Key to understanding which of these are considered to be purgeable is Apple’s clear statement that the user can’t manually remove those files, but they’re in the sole control of macOS. That eliminates the first three, snapshots, evicted iCloud files, and purchased content, which are all in the control of the user.
Snapshots have been a common misattribution here, but even a cursory consideration demonstrates that they are counted in used space, not purgeable space.
Howard Oakley:
macOS superimposes additional space management features over APFS to make some file system contents purgeable when it runs short of free space. These aren’t explained in any coherent way in user documentation, nor can I find any explanation provided to developers. Furthermore, information given to users is inconsistent across the Finder and Disk Utility, and appears riddled with bugs that only confound the user. This article demonstrates these in an edge case for clarity.
Howard Oakley:
When you drag a file to copy it to another volume, the Finder calls on File Coordination (com.apple.foundation.filecoordination) to perform that action. It sets up a server and client for the purpose; if the copy can’t take place using existing free space, this is passed to CacheDelete (com.apple.cache_delete) to free up sufficient purgeable space to complete that copy action.
The process of purging that follows is performed in a series of phases, proceeding in the order given in the list above, with snapshots last. Once any given phase has succeeded in purging sufficient space for the copy to complete successfully, purging should cease.
Howard Oakley:
Precize tells you almost everything you might want to know about files, including their inode number and extended attribute size, and has extensive support for bookmarks. Two years ago, I added a couple of boxes to indicate whether it’s an APFS sparse file, and whether it has ever been cloned. This new version has a third box that informs you whether that file is purgeable.
That’s fine for individual files, but not practical for discovering them by the folderful. For that, I turned to Sparsity, which already checks for sparse files and clones, using its Crawler accessible from its Window menu.
There’s a new checkbox here so you can scan whole folders and discover exactly which of the files within them are purgeable, and how much space they occupy before being purged.
Howard Oakley:
In this sequel I’ll focus on the period between the creation of Time Machine snapshots using the command tmutil localsnapshot
and the reporting of the conversion of 94 GB of files to purgeable space, a large and critical change in the availability of space to macOS, apps and the user.
Howard Oakley:
Rather than writing a huge file to try to force purging, plan ahead and create real free space in advance. Here are some suggestions.
Howard Oakley:
Have you ever wondered where apps like Disk Utility get their figures for free space on volumes, particularly those for purgeable and available space? If you thought they got them from APFS, then I’m sorry to disappoint, but their source is the space management feature in macOS, its CacheDelete subsystem.
[…]
You may be surprised to learn that when you open the Finder’s Get Info dialog on a volume, no call is made to CacheDelete to obtain its latest figures for purgeable or available space. As there’s no indication in the log that those figures are obtained from anywhere comparable, it’s most likely that the Finder maintains its own values, and updates them periodically from CacheDelete. What is strange, though, is that when the Finder posts a file system event that’s inevitably going to result in CacheDelete refreshing its authoritative figures, the Finder doesn’t appear to obtain the updated figures once CacheDelete has compiled them.
This may explain why the Finder’s Get Info figures can become badly out of kilter with those shown in Disk Utility and third-party apps. It emphasises the fact that, if you want accurate and up-to-date figures for free space, you should ignore the Finder and check in Disk Utility or elsewhere.
[…]
While evicting items to iCloud and deleting snapshots give you a good idea of the minimum space you’re likely to free, deleting caches is only likely to be able to provide a maximum, and will invariably achieve considerably less. And if that Data volume has little or no purgeable space, then Safe mode isn’t going to create any more.
Howard Oakley:
CacheDelete isn’t started until after user login, and (with the exception of its privileged helper deleted_helper
) runs in user mode on services and locations owned by that user. The best way to appreciate how active CacheDelete is in Safe mode is to compare that with standard mode. In the latter, CacheDelete first works through its property lists to build its database of services whose purgeable data it manages. It then lists the latest information it has on those services and their caches. Once that’s completed, it checks each of those standard services for shared purgeable and nonpurgeable space, just once, then announces updated totals for purgeable space. The whole sequence is likely to take around 0.3 seconds to complete.
After login in Safe mode, CacheDelete completes a similar initialisation, then proceeds to perform multiple passes through all the services whose caches it manages, first to establish what is purgeable and what is not, then to refresh what it can. Many of those are performed in conjunction with iCloudNotificationAgent, and at different levels of urgency, from 1 to 3. At the end of a period of 20 seconds or more, CacheDelete returns with a set of updated values that may be worse than those it started with, but should be more accurate in the event that macOS needs to free up purgeable space to accommodate an important demand on free space.
[…]
It’s important to remember that the amount of space stated as Available already includes that given as purgeable.
Howard Oakley:
Although I much preferred the Finder’s figure of nearly 400 GB of “available” space, I realised that could only come at the cost of purging all that 228 GB of “purgeable” space. As that seemed to include many of my files, I thought it was time to work this week’s magic trick. I therefore restarted the Mac, and all of a sudden purgeable space had vanished, leaving me with only about 165 GB of free space after all.
[…]
That’s two major versions of macOS and almost two years apart, and the Finder still can’t come up with correct figures.
Ingo:
“Get Info” for the “Macintosh HD” in the Finder delivers values that are valid for the APFS volume group composed of the Macintosh HD System volume and the Macintosh HD – Data.
The value of the expression (Finder > Get Info “Macintosh HD” > Used) + Free + (Disk Utility > Macintosh HD – Data > Other Volumes) exceeds the value of the total capacity of the container disk, because the value “Other Volumes“ used in this expression includes the storage used for the System volume too.
Previously:
Apple File System (APFS) Disk Utility Finder Mac macOS 13 Ventura macOS 15 Sequoia Mints Precize Sparsity Storage Time Machine
Matteo Rattoti (via Christian Tietze):
This repository demonstrates a bug in NSFileWrapper
where overwriting a file with the same content using -[NSFileWrapper writeToURL:options:originalContentsURL:error:]
sometimes causes the file’s modification date to be set in the past instead of updating to the current time.
I think I saw someone speculate that this is due to it not using a nanosecond-capable date/time API—which would imply that this only happens on APFS—but I can’t seem to find the post.
Update (2025-03-12): Mark Rowe:
I mentioned on Slack that struct stat
returns modification times as a timespec
which has ns resolution. Foundation sets modification times using utimes
which represents times as timeval
which only has μs resolution. Foundation also explicitly rounds the ns portion of the timestamp to μs rather than truncating. I’m not sure why it doesn’t use utimensat
instead. That takes a timespec
and so should allow ns resolution when setting the modification time.
Apple File System (APFS) Bug Cocoa Mac macOS 14 Sonoma macOS 15 Sequoia Programming Time
Mike Wuerthele:
Hours after the new Mac mini hit customers’ desks, some users started complaining that when they hooked up a hard drive or SSD to the unit, they’d see Wi-Fi speeds drop, or be cut entirely. The reports were almost always followed up with the realization that when disconnected, the Wi-Fi speeds would go back to normal.
[…]
The case of the M4 Mac mini is aluminum, with a plastic lower case. There are no breaks in the aluminum for the Wi-Fi antenna, so Apple has placed it underneath that very thin plastic base of the unit.
For the most part, this is fine. The desks and surfaces a Mac mini are generally placed on are wood, which has nearly no Wi-Fi attenuation.
Since that plastic is so thin on the base, things get a little dicier when the unit is placed on top of a metal-enclosure hard drive, or dock, for instance.
He also triggered the problem with RF interference from certain USB cables.
Previously:
Update (2025-03-12): Sherief, FYI:
high speed [differential] signals on a wire become indistinguishable from a radio source at points - Intel published a paper on this and a little birdie told me this was actually discovered while working on Apple hardware.
Franklin Delano Stallone:
I raised my mini by placing it on a thick stone coaster. I’ll have to do some testing after work. It would explain why the mini has been the most unreliable with the Vision Pro.
Cable Mac Mac mini macOS 15 Sequoia Storage USB Wi-Fi