Apple releases macOS updates frequently, but users dismiss the notification banner for weeks, leaving known vulnerabilities unpatched. The open-source 'Nudge' app repeatedly prompts users to update and can enforce compliance. This lesson covers managing macOS updates via MDM, configuring Nudge, and handling major OS upgrades securely—so your fleet isn't a museum of outdated Macs.
The softwareupdate command-line tool handles updates: list (softwareupdate -l), download, and install. MDM can enforce update policies: 'ForceDelayedSoftwareUpdates' delays updates for a grace period, 'ScheduleOSUpdate' commands install specific updates. However, user deferral is still possible. For full automation, combine MDM with a nudge tool. Also, you can deploy macOS via a custom catalog URL for on-premise caching.
The --restart flag reboots automatically after installation, which is necessary for many updates.
Nudge is a Swift application deployed via MDM that displays a non-dismissable window when the OS is out of date. It can require a certain OS version by a deadline, with increasing frequency of prompts. After the deadline, it can require the user to update before they can continue working. This is far more effective than the built-in notification. Nudge's configuration is a JSON profile that MDM pushes.
// Example Nudge configuration (partial)
{
"optionalFeatures": {
"aggressiveUserExperience": true,
"enforceMinorUpdates": true
},
"osVersionRequirements": [
{ "requiredMinimumOSVersion": "14.3", "requiredInstallationDate": "2024-02-10T00:00:00Z" }
]
}💡 Nudge can also enforce 'RequiredInstallationDate' for major upgrades. Use it to drive adoption of new macOS releases within a controlled window.
| Update Enforcement Method | User Experience | Best For |
|---|---|---|
| MDM ScheduleOSUpdate | Silent or minimal notification | Managed labs, kiosks |
| softwareupdate -ia | One-time manual or scripted | Server macOS, admin-triggered |
| Nudge | Aggressive, persistent reminders | End-user laptops, BYOD |
Major upgrades (e.g., Ventura to Sonoma) can break applications. Always test with a pilot group, verify compatibility of security tools and enterprise apps, and then push via MDM with a deadline. Use 'softwareupdate --fetch-full-installer' to pre-download the installer to a local cache, reducing bandwidth. For critical security updates, you can use 'softwareupdate --install-now' to force immediate install.
⚠️ Forcing a reboot without warning can cause data loss. Ensure users are given sufficient warning (via Nudge) and that apps auto-save. Avoid forced reboots during working hours.
Verify exercises to earn ★ 150 XP and unlock next lab level.