MacOS – Software Update command (on Mac) not listing all the updates

macossoftware-updateterminal

On regular basis, I check for OS and App updates using terminal and softwareupdate command

Recently, there was update of Slack app but command output didn't show the same. I was able to view update on AppStore.

Below was the output of the command.

$ softwareupdate -all
Software Update Tool

Finding available software
Software Update found the following new or updated software:
   * Command Line Tools (macOS High Sierra version 10.13) for Xcode-10.0
    Command Line Tools (macOS High Sierra version 10.13) for Xcode (10.0), 190520K [recommended]
   * Safari12.0HighSierraAuto-12.0
    Safari (12.0), 78915K [recommended]

Any reason why Slack update was not listed? Am I missing any parameter?

Best Answer

softwareupdate only handles updates to the OS and bundled software, not purchased (/free) apps. The distinction isn't always obvious; the clearest way I have to describe it is that if an app is tied to (/owned by) a particular Apple ID, then softwareupdate won't handle it. Safari and iTunes are examples of apps that just come with the OS, therefore aren't owned by any specific Apple ID, and therefore are handled by softwareupdate. On the other hand, Slack is an app you "purchase" (it's free, but it's still technically a purchase) under your Apple ID in the App Store, therefore softwareupdate does not handle it.

Andrew Naylor has written a CLI interface to deal with App Store purchases (including updates), available from https://github.com/mas-cli/mas.

Update: in macOS Mojave, the distinction is clear in the GUI as well as at the command line. In Mojave, the App Store interface only handles updates to "purchased" apps, while OS and bundled software updates are handled by the Software Update pane in System Preferences. So "Software Update" preferences == softwareupdate command, and "App Store" application == Andrew Naylor's mas command.