Skip to content

Remove the macOS Catalina guilt trip from macOS Mojave

May 26 2020 Update: The 2020-003 Security Update for Mojave will reset the red flag (and deprecate the command used to ignore the update). However, these steps do still work, so you just have to repeat Miles' solution again. And after you do, do not open the Software Update panel, or the red badge will return. (But if it does, just run the commands yet again.)

May 9 2020 Update: Commenter Miles Wolbe has come up with a much better solution. Ignore everything in this tip, and just run this Terminal command:

sudo softwareupdate --ignore "macOS Catalina" && defaults delete LatestMajorOSSeenByUserBundleIdentifier && softwareupdate --list

If you're interested in why this works, Miles explains it in more detail. I've tested this method, and it works—no more agent required!

I have no plans to move my main iMac to macOS Catalina, at least for the forseeable future. There are two key apps I use—Fujitsu's ScanSnap scanner software and the Many Tricks' accounting app—that are both 32-bit. In addition, there are changes in Catalina relative to permissions that make it somewhat Vista like and slow down my interaction with the system. (My MacBook Air is my "production" Catalina Mac, and I have an older retina MacBook Pro that I use for Catalina betas.)

But Apple really wants people to update to Catalina, so they let you know about Catalina…constantly, it seems. In System Preferences > Software Update, you'll see this…

And while that's annoying, it's not nearly as annoying as the red "1" dot they stick on System Preferences, which will stare at you forever. I complained about this on Twitter, and as is often the case, some very bright people had solutions to the problem.

There are two things that I wanted to get rid of on my iMac: The notice about Catalina, and the infuriating red dot. At its simplest level, this appears to require just two Terminal commands, plus one more to restart the Dock (ignore the $; that's just the Terminal prompt):

$ sudo softwareupdate --ignore "macOS Catalina"
$ defaults write AttentionPrefBundleIDs 0
$ killall Dock

The first command gets rid of the notification about Catalina, and the second removes the red dot. The first command does what it should; after running it, Catalina no longer shows up as an available update.

Note: To undo this, so you see all updates—including Catalina—paste this command in Terminal: sudo softwareupdate --reset-ignored

The second command also appears to work, but it's a bit deceiving: The next time the OS checks for updates, it will see the Catalina update available—even though you've told Software Update to ignore it—and the dreaded red "1" will return.

The final command restarts the Dock, which forces the removal of the notification icon on System Preferences.

I decided to tackle this by creating a launchd agent—which is just the technical name for scheduled tasks in macOS' Unix core. I wrote about launchd a while ago, so I won't go through all the details of how it works again here.

The first step was to create a very simple shell script, which I saved as noreddot:

defaults write AttentionPrefBundleIDs 0
killall Dock

This is just the command that zeros the counter on the System Preferences' icon, saved in a script, plus a Dock restart to make sure the update notification vanishes. I then made it executable (chmod 755 noreddot). Next, I fired up LaunchControl, and created a very simple two-step launchd agent:

Step one tells the system to run my script, and step two tells it how often: Every day at 6am, noon, and 6pm. That should make the presence of any update notification no more than a six hour hassle…and if that bugs me, I can add more run times to my agent—it's not like this is a complex CPU-consuming task.

For those who don't want to use LaunchControl to make the agent, here's the source code—note that you'll need to edit the two lines marked with *** to make it work for you. (Remove the asterisks after editing, and if you haven't created a launchd script before, my full writeup explains things in more detail and has links to additional helpful sources.)

I've only been running this for a day or so, but so far, it's worked like a charm—no updates listed within System Preferences, and no annoying red dot on System Preferences.

64 thoughts on “Remove the macOS Catalina guilt trip from macOS Mojave”

    1. I couldn’t agree more, I just removed the tick on automatically update my computer press the upgrade now and the cancelled and voila. No more red number one

      1. It doesn't matter that you removed the update automatically feature; the next time the system checks for an update, you'll see Catalina listed again, and the red dot will return—at least, that was my experience.


    2. I used Lingon 3 to make the LaunchAgent. Both interval and time of day execution (3 hours - 3600 seconds/hour):

  1. The red dot badge still stays for me despite this command, unfortunatly. I even tried it with sudo and it didn't help.

    1. I just added a blurb: You probably have to do a killall Dock to have the change take effect.


  2. There is a new ScanSnap Home app which I believe is 64bit although you may have checked it out and found it didn't work with your scanner.

    1. The new software is feature-limited compared to the current one, and I have a huge complex macro that helps me auto-sort things…and I'm sure I'd have to rebuild it from scratch, which is a project I'm not looking forward to :).


      1. If you haven't tried it in a while would recommend you check out the newer versions of ScanSnap Home as Fujitsu has been adding back features. UI is bizarre in a different way and it spawns even MORE background processes, but it works about as well as the old version and is reliable. I had to rebuild my own sorting script too…

      2. I'd like to hear more about the "huge complex macro that helps me auto-sort things"! I was sceptical about the ScanSnap Home app but it eventually worked fine enough and I ended up removing PDFpen from my various Hazel auto-sorting + filing scripts and relying on the included ABBYY OCR feature instead. I'm always interested in hearing about how people automate their workflow.

    1. That's just the Terminal prompt; it shouldn't be typed at all. I modified the article with a note to that effect—sorry for any confusion!


  3. What happens if an update you actually want (Mojave security update for example) and want to be informed about comes in?

    1. I'll have to manually open the Software Update System Prefs panel every so often—it shouldn't be hard to remember, because updates always get a fair bit of press attention.


  4. Dual partitions...DONE. Runni g all my Mojave shit and also having a blast with my 64-bit apps on Catalina, as well as Bootcamp Win 10. Done.

  5. Should be able to use cron to schedule the icon removal as well.

    $ crontab -e

    Then use this line:

    0 */6 * * * defaults write AttentionPrefBundleIDs 0 && killall Dock

    That should schedule it for every 6 hours at minute 0 of the hour.

    1. Yes, and it annoys and distracts some of us. If it doesn't bother you, great, just ignore the blog post.


  6. After running ( sudo softwareupdate --ignore "macOS Catalina" ), Software Update in System Preferences says I'm up-to-date with the latest Mojave...good. But, how do I get this back if I want to someday update to Catalina? Would it be ( sudo software update defaults ) or something similar?

    1. Good catch — I've added a "how to undo" bit to the blog post, but here it is again: Just paste this in Terminal:

      sudo softwareupdate --reset-ignored


      1. "sudo: /sbin/softwareupdate: command not found"
        That's what I get. How can I fix this?
        Thank you.:)

        1. Sorry, my mistake—the path part doesn't need to be there. I edited my comment (and the blog post). See above for the proper form.


  7. Rob, I appreciate your efforts, but after reading your article I have no idea how to eliminate both the update notification and the red dot. Any chance I could get you to explain it to me like I'm a six-year-old, with Step 1: Step 2: etc.? Thanks!

    1. To make it fully automatic, you need to both create a Terminal shell script, and then tell that shell script to run on a schedule. That's what the post does, but it definitely assumes (requires) some knowledge and comfort in Terminal.

      Probably the easiest way to do this, given limited Terminal knowledge, is the following:

      1) In Terminal, paste this line and hit Enter:

      sudo softwareupdate --ignore "macOS Catalina"

      2) In Terminal, paste this line and hit Enter:

      defaults write AttentionPrefBundleIDs 0

      3) In Terminal, paste this line and hit Enter:

      killall Dock

      That will remove Catalina from the list of displayed updates, and remove the red dot (restarting the Dock, via the killall command, is needed to make the red dot removal take effect).

      To automate the above, because otherwise the red dot returns, follow the instructions in the comment by Ryan about using cron to schedule the task:

      Should be able to use cron to schedule the icon removal as well.

      [In Terminal, type this and hit enter:]

      crontab -e

      [That will open an editor window. In the editor...]

      Then use this line:

      0 */6 * * * defaults write AttentionPrefBundleIDs 0 && killall Dock

      [To enter that line, you'll need to press i to get into Insert mode, then copy and paste the above, then press Escape, followed by colon (:) and w (for write), to save the file. Then Escape, colon, and q to quit the editor. If something goes wrong after you save and quit, you can use this command to erase the crontab: crontab -r]

      That should schedule it for every 6 hours at minute 0 of the hour.

      This stuff is a bit advanced, so if you're not comfortable with the crontab bit, you can just occasionally paste the second and third commands from the first part (you don't need the 'sudo softwareupdate' bit again) into Terminal.


  8. It's also easy to write a one-step macro in Keyboard Maestro to execute your shell script periodically. You don't even have to save the shell script as a separate file.

  9. Here's my AppleScript droplet source for making shell script files executable, in case you want to reformat it for compatibility:

    on open the_items
    my execabilify(the_items)
    end open

    on execabilify(fl)
    repeat with i in fl
    do shell script "chmod " & "755" & space & quoted form of POSIX path of i with administrator privileges
    on error the error_message number the error_number
    display dialog "Error: " & the error_number & ". " & the error_message buttons {"Cancel"} default button 1
    end try
    end repeat
    end execabilify

  10. Below you find a one-(double) click implementation of Rob's "Remove the macOS Catalina guilt trip from macOS Mojave": just hit Install, input your password, hit ENTER/ RETURN, and that should be it.

    I added 'RunAtLoad' to the property list so it runs immediately during install, and on account log-in.

    The launch agent runs on a per user basis.

    If you still get a Upgrade to Catalina notification with Rob's "every day at 6am, noon, and 6pm" settings: I also supplied 4, 5 and 6 hrs scripts in the InstallerData folder. Simply copy the desired launch agent one level higher and run 'Install' again.

    A uninstaller is included, too.

    v.1.0 2019-11-30: (click onto 'Download This File')

    How does it run for you?

    Let's keep dwelling in Hayikwiir Mat'aar :)
    Lee / Bux

  11. @Rob Griffiths : is this 100% working for you? I still have the darn notifications regularly after wake from sleep!! Looks as if sleepwatcher + a launcher is required. Have you ventured ahead into this direction at all yet? I'd be great if you could reply - thanks.

  12. I see it occasionally, but it vanishes the next time the agent runs. If you can trigger on wake, that should take care of it.


    1. OK, thanks. This obtrusion by Apple is an insult to my eye and I neither want to wait for the agent's next run nor launch the script manually, so yes, I'm implementing sleepwatcher next. I'd be optimal if it didn't run after each wake from sleep but only at the most every 3 hrs or so.

      Actually I wish we knew the source file of this because I'd much rather hack that, rather than this reactive work-around.

    1. Wow, Miles, great detective work! I'm going to put your solution at the top of this article, with a link to your post.


      1. Thank YOU Rob, both for The Robservatory and Mac OS X Hints before it; your work has helped millions of Mac users, many of whom will never know.

    2. da kine find - also a big MAHALO from me, Miles (and bernuli). I had been running a sleep watcher variant, but even that was not 100% reliable so I never published it here. I confirm your approach working and expect it to indeed be persistent.

      BTW, in the email I received from this blog's software, the double dash -- was truncated to one dash - so the copied/ pasted command was not working. Rob, if you also only see one dash instead of two --, it might be worth looking into your email script and disable corrections like that.

      And Miles, also thanks for your anti-Catalina list!

      1. Sorry about that, Lee - looks like emoji get converted to question marks. Thanks for your kind words - glad to hear you were able to confirm the fix as well.

        1. LOL I thought my Hawaiian pigeon had gotten rusty and you couldn't make sense. This board's email software appears to be screaming for an overhaul .. ;)

          1. It's WordPress built-in functionality, so not sure what to do about that—ignore it, most likely, as fixing it is beyond my abilities (or desired ability!).

            Lee, was that email from the original comment, or from my updating the article? In the original, the double-dash had been combined. When I saw that, I edited it to make it code, so it's now separated.


            1. oh right, WordPress is responsible for that. Auto-delegated/ to be accepted.

              Original comment because edits don't get emailed.

              Did you get my -- in the notification emails WP sent to you?

  13. oh OK, I just now see that all double dashes got combined by WP. That sucks, but oh well, too much hassle to open a case over there...

    1. OK -- let's give this a try -- in theory, 'this should work,' and "all my quotes" should also -- be left -- alone.

      Any luck, Lee? :)


      1. both types of quotes - single and double - OK also in the email

        double dash -- still no.

        1. For whatever reason, the WordPress function that's supposed to disable the texturizer...

          add_filter('run_wptexturize', '__return_false');

          ...wasn't working in my theme's functions file. So I solved the problem by writing a simple three-line plug-in to disable the texturizer, and that seems to be working -- it shouldn't convert those dashes, and I'm seeing all existing comments untexturized, too.


          1. Good going, well done! In the emails it's still — which I guess you cannot correct because it's directly handling these.

            To be honest I'm lacking both comprehension and sympathy that they don't fix bugs like this which have been reported for many years. And no, such is NOT a feature but a control freak thing. Same as Apple with their in-the-face 'you have to upgrade' guilt trip. Where we're back on topic.

  14. Hi Rob and Lee,

    I am sorry to report that Apple was not amused.

    Following "Security Update 2020-003 Mojave", the Catalina nag reappeared.

    Running sudo softwareupdate --ignore "macOS Catalina" returned in part:



  15. P.S.

    still works for now to hide the nag again running sudo softwareupdate --ignore "macOS Catalina".

      1. Thanks for the heads up, Rob! I had missed Jeff's post and kind shout-out. Amazing that this is a pain point for so many, yet Apple has decided to make the situation worse. Anyone running these commands likely has a good idea of what they're choosing; why intentionally make life harder for them?

      2. Thanks again, Rob. I've updated my post with a link to Jeff's suggestion. If history is any guide, Mojave should receive security updates until Fall 2021 (not sure why Apple still does not offer an official lifecycle policy). By then, the rumored ARM-based Macs may be a reality and finally offer a compelling reason to upgrade beyond my 2012 unibody MacBook Pro (which is especially handy for swapping commodity SATA SSDs in and out, not to mention the ports, optical drive, etc.).

        1. Thanks for the heads up. Needless to say this scheme is about control because Apple thinks Catalina is so much safer than Mojave. But let's wait and see if they'll really be serious about this, or if this is just some sabre rattling. Leaning back relaxed for now (even if speculating that one day we might need to step this up a notch at some point, e.g. by replacing one or a couple of files with the ones from before an update which breaks this for good, if ever).

    1. 2020-10-07 12:55:43.248 defaults[15601:90578]
      Domain ( not found.
      Defaults have not been changed.

      1. Sure - that's what you get when the sys prefs icon in your dock is NOT overlayed with a red number 1 + a "1 update" next to the line 'System Preferences' in the Apple menu.

        Open sys prefs, click onto Software Update, let it search until you DO get offered Catalina and see the nags.

        When you now run the command, you will get

        Software Update Tool

        Finding available software
        No new software available.

  16. Here we go again. I did eventually upgrade to Catalina, but am in no hurry to upgrade my iMac to Big Sur, so I tried sudo softwareupdate --ignore "macOS Big Sur" && defaults delete LatestMajorOSSeenByUserBundleIdentifier && softwareupdate --list but got the message No new software available. even though I'm getting the reminder. The message also said the feature was deprecated.

    1. The feature is definitely deprecated; perhaps it's completely gone in Big Sur. I'll take a look later today and see if I can see anything.


Comments are closed.