How to Fix Mac Unable to Check for Updates

Difficulty
Intermediate
Tested on
macOS 15.1 - MacBook Pro M3
You will need
Administrator password, stable internet connection

Step by step

  1. 1 min

    Check your network and date settings

    Navigate to System Settings > General > Date & Time. Toggle 'Set date and time automatically' to Off, wait five seconds, then toggle it back to On. Ensure your Mac is not connected to a VPN, as these often block connections to Apple update servers.

    Note: A VPN or corporate firewall is the most frequent cause of update verification errors.
  2. 2 min

    Reset the software update catalog

    Open Terminal from Applications > Utilities. Execute the command: sudo softwareupdate --clear-catalog. Enter your administrator password when prompted. This command forces your Mac to re-fetch the metadata for available updates from Apple's servers.

    Note: You will not see your password characters appear in the terminal while typing.
  3. 1 min

    Remove corrupted configuration files

    In Terminal, run the following command to remove the local update preference cache: sudo rm /Library/Preferences/com.apple.SoftwareUpdate.plist. This deletes potentially corrupted preference files that prevent the system from contacting the update server.

    Note: The system will automatically recreate this file when it next checks for updates.
  4. 1 min

    Perform a safe reboot

    Shut down your Mac completely via the Apple menu. If using Apple Silicon, hold the power button until 'Loading startup options' appears, then select your disk and hold Shift to click 'Continue in Safe Mode'. If using Intel, hold the Shift key immediately after pressing the power button.

    Note: Safe Mode clears system caches and disables third-party login items.
  5. 1 min

    Force the update check

    Once logged into your desktop, navigate to System Settings > General > Software Update. The system should now bypass the previous error. If it remains stuck, run 'softwareupdate -l' in Terminal to initiate the scan via the command line interface.

    Note: Running the check via Terminal provides more granular error codes if the check still fails.