macOS update encouragement

20 views
Skip to first unread message

Gregory Neagle

unread,
Mar 25, 2026, 11:31:56 AM (7 days ago) Mar 25
to munki-dev, munki-discuss
Currently Managed Software Center displays messages like “This update has been pending for 14 days” in red next to updates that have been pending more than two days. This is meant to help encourage updates. With items that come from the Munki repo, this pending days calculation even works if the the updates themselves are updated.

If the current Mac has Foo 1.0 installed, and Foo 2.0 has been pending for a week, MSC will display “This update has been pending for 7 days” next to the update. If the user continues to ignore the update and now Foo 3.0 is available, the pending days count does not get reset: “This update has been pending for 8 days” might be displayed next to “Foo” — even though Foo 3.0 itself has been pending only for a day. The point here is that Foo has been out-of-date for 8 days.

This is tracked by /Library/Managed Installs/UpdateNotificationTracking.plist:

$ cat /Library/Managed\ Installs/UpdateNotificationTracking.plist

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>AppleUpdates</key>

<dict>

<key>macOS Tahoe 26.4</key>

<date>2026-03-24T18:31:49Z</date>

</dict>

<key>StagedOSUpdates</key>

<dict/>

<key>managed_installs</key>

<dict>

<key>GoogleChrome</key>

<date>2026-03-24T15:31:08Z</date>

</dict>

<key>removals</key>

<dict/>

</dict>

</plist>


You’ll notice that under “managed_installs”, only the item _name_ and the date it was first “seen” are tracked. This is why the pending days count for, say, GoogleChrome, does not get reset if multiple versions are released but not installed by the user.

But this breaks with Apple updates. There’s no consistent name. The update listed here is named "macOS Tahoe 26.4”, and a previous update was "macOS Tahoe 26.3.1”. So there’s no consistent name to track for pending days. This leads to a “reset” — users may see that the macOS 26.3.1 update has been pending for 19 days, but then macOS 26.4 becomes available and now the pending days count goes back to zero.

As it turns out, there is a second plist that tracks the availabilty of Apple updates.

$ cat /Library/Managed\ Installs/AppleUpdateHistory.plist

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>MSU_UPDATE_25C56_patch_26.2_minor</key>

<dict>

<key>displayName</key>

<string>macOS Tahoe 26.2</string>

<key>firstSeen</key>

<date>2025-12-12T18:39:45Z</date>

<key>version</key>

<string>26.2</string>

</dict>

<key>MSU_UPDATE_25D125_patch_26.3_minor</key>

<dict>

<key>displayName</key>

<string>macOS Tahoe 26.3</string>

<key>firstSeen</key>

<date>2026-02-11T19:31:53Z</date>

<key>version</key>

<string>26.3</string>

</dict>

<key>MSU_UPDATE_25D2128_patch_26.3.1_minor</key>

<dict>

<key>displayName</key>

<string>macOS Tahoe 26.3.1</string>

<key>firstSeen</key>

<date>2026-03-04T21:08:46Z</date>

<key>version</key>

<string>26.3.1</string>

</dict>

<key>MSU_UPDATE_25E246_patch_26.4_minor</key>

<dict>

<key>displayName</key>

<string>macOS Tahoe 26.4</string>

<key>firstSeen</key>

<date>2026-03-24T18:31:49Z</date>

<key>version</key>

<string>26.4</string>

</dict>

</dict>

</plist>


We can use that to determine how long macOS has been “out of date” and we can use that to tell the user macOS has been out-of-date for 20 days even though macOS 26.4 was just released.

So now, dear reader, is where I could use some opinions. How should this be displayed?

macOS Tahoe 26.4  — This update has been pending for 20 days.   (this is the current messaging and would require no additional localization, but of course _macOS Tahoe 26.4_ hasn’t been pending 20 days)

macOS Tahoe 26.4  — A macOS update has been pending for 20 days.

macOS Tahoe 26.4  — macOS has been out-of-date for 20 days.

Screenshots of the options attached.

Option1.pngOption2.pngOption3.png


Miq Viq

unread,
Mar 25, 2026, 12:09:43 PM (7 days ago) Mar 25
to munk...@googlegroups.com, munki-discuss, munki-dev
Hi

I vote for ”macOS has been out-of-date for 20 days.”

Will there be a way to show dot updates for current macOS only? I would not like to encourage users upgrade to a latest macOS that has not yet been approved in my organization. 

-miqviq


'Gregory Neagle' via munki-dev <munk...@googlegroups.com> kirjoitti 25.3.2026 kello 17.31:

Currently Managed Software Center displays messages like “This update has been pending for 14 days” in red next to updates that have been pending more than two days. This is meant to help encourage updates. With items that come from the Munki repo, this pending days calculation even works if the the updates themselves are updated.
<Option1.png>
<Option2.png>
<Option3.png>


--
Find related discussion groups here:
https://github.com/munki/munki/wiki/Discussion-Group
---
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/munki-dev/B414F0DF-6F1A-4296-BE91-B614DCB4139C%40mac.com.

Gregory Neagle

unread,
Mar 25, 2026, 12:15:45 PM (7 days ago) Mar 25
to munki-dev
The implementation I’m working on only looks at _updates_ and not _upgrades_, so it considers only updates with the same major OS version. (And since Munki 7 only supports back to macOS 10.15, I truly only have to worry about the “10.”, “11.”, … “26.” part)

-Greg

Miq Viq

unread,
Mar 25, 2026, 12:52:53 PM (7 days ago) Mar 25
to munk...@googlegroups.com, munki-dev
Hi Greg,

just like I (and most sysadmins) want it, thanks!

-miqviq


'Gregory Neagle' via munki-dev <munk...@googlegroups.com> kirjoitti 25.3.2026 kello 18.15:

The implementation I’m working on only looks at _updates_ and not _upgrades_, so it considers only updates with the same major OS version. (And since Munki 7 only supports back to macOS 10.15, I truly only have to worry about the “10.”, “11.”, … “26.” part)

Gregory Neagle

unread,
Mar 27, 2026, 1:07:34 PM (5 days ago) Mar 27
to munki-dev, munki-discuss
Going with "macOS has been out-of-date for X days."

So the string to be translated is:

/* macOS out-of-date days message */

"macOS has been out-of-date for %@ days." = "macOS has been out-of-date for %@ days.";


-Greg

<Option1.png><Option2.png><Option3.png>


Frank Paul Silye

unread,
Mar 28, 2026, 7:22:57 AM (4 days ago) Mar 28
to munk...@googlegroups.com, munki-discuss
Norwegian bokmål:

/* macOS out-of-date days message */

"macOS has been out-of-date for %@ days." = "macOS har vært utdatert i %@ dager.";


Frank

Reply all
Reply to author
Forward
0 new messages