Home > Mac administration, Mac OS X > Disabling the iCloud and Diagnostics pop-up windows in Yosemite

Disabling the iCloud and Diagnostics pop-up windows in Yosemite

Starting in 10.7.2, Apple has set the iCloud sign-in to pop up on the first login.

Screen Shot 2014-10-16 at 7.07.55 PM

In 10.10, Apple added a new Diagnostics & Usage window that pops up at first login after the iCloud sign-in.

Screen Shot 2014-10-16 at 7.08.39 PM

Since having these pop-up windows appear may not be desirable in all Mac environments, it makes sense to be able to turn this off for new user accounts. As part of preparing for Yosemite in my own shop, I’ve developed a script that should disable both the iCloud and Diagnostics pop-ups on 10.7.2 – 10.10.0. See below the jump for the details.

Apple is using /Users/username/Library/Preferences/com.apple.SetupAssistant.plist to store the settings that indicate whether or not the iCloud sign-in and Diagnostics agreement processes have run. Building on work done by the folks behind DeployStudio, I’ve built a script that pre-sets those values for new and existing accounts on a particular Mac. In turn, that should stop the iCloud and Diagnostics pop-up messages from appearing on that Mac.

The script is below and is also available on my GitHub repo. This script is also available as a payload-free package on my GitHub repo, available for download from the payload_free_package directory available from the link above.


#!/bin/bash
# Determine OS version
osvers=$(sw_vers -productVersion | awk -F. '{print $2}')
sw_vers=$(sw_vers -productVersion)
# Determine OS build number
sw_build=$(sw_vers -buildVersion)
# Checks first to see if the Mac is running 10.7.0 or higher.
# If so, the script checks the system default user template
# for the presence of the Library/Preferences directory. Once
# found, the iCloud and Diagnostic pop-up settings are set
# to be disabled.
if [[ ${osvers} -ge 7 ]]; then
for USER_TEMPLATE in "/System/Library/User Template"/*
do
/usr/bin/defaults write "${USER_TEMPLATE}"/Library/Preferences/com.apple.SetupAssistant DidSeeCloudSetup -bool TRUE
/usr/bin/defaults write "${USER_TEMPLATE}"/Library/Preferences/com.apple.SetupAssistant GestureMovieSeen none
/usr/bin/defaults write "${USER_TEMPLATE}"/Library/Preferences/com.apple.SetupAssistant LastSeenCloudProductVersion "${sw_vers}"
/usr/bin/defaults write "${USER_TEMPLATE}"/Library/Preferences/com.apple.SetupAssistant LastSeenBuddyBuildVersion "${sw_build}"
done
# Checks first to see if the Mac is running 10.7.0 or higher.
# If so, the script checks the existing user folders in /Users
# for the presence of the Library/Preferences directory.
#
# If the directory is not found, it is created and then the
# iCloud and Diagnostic pop-up settings are set to be disabled.
for USER_HOME in /Users/*
do
USER_UID=`basename "${USER_HOME}"`
if [ ! "${USER_UID}" = "Shared" ]; then
if [ ! -d "${USER_HOME}"/Library/Preferences ]; then
/bin/mkdir -p "${USER_HOME}"/Library/Preferences
/usr/sbin/chown "${USER_UID}" "${USER_HOME}"/Library
/usr/sbin/chown "${USER_UID}" "${USER_HOME}"/Library/Preferences
fi
if [ -d "${USER_HOME}"/Library/Preferences ]; then
/usr/bin/defaults write "${USER_HOME}"/Library/Preferences/com.apple.SetupAssistant DidSeeCloudSetup -bool TRUE
/usr/bin/defaults write "${USER_HOME}"/Library/Preferences/com.apple.SetupAssistant GestureMovieSeen none
/usr/bin/defaults write "${USER_HOME}"/Library/Preferences/com.apple.SetupAssistant LastSeenCloudProductVersion "${sw_vers}"
/usr/bin/defaults write "${USER_HOME}"/Library/Preferences/com.apple.SetupAssistant LastSeenBuddyBuildVersion "${sw_build}"
/usr/sbin/chown "${USER_UID}" "${USER_HOME}"/Library/Preferences/com.apple.SetupAssistant.plist
fi
fi
done
fi
exit 0

view raw

gistfile1.sh

hosted with ❤ by GitHub

  1. WB
    October 30, 2014 at 6:53 pm

    Hi Rich. For upgrades, do you know if it’s possible to run this script through Casper Suite before the user logins in the first time?

  2. October 31, 2014 at 12:10 pm

    for Munki to detect successful installation on future passes, I found creating a flag file somewhere using touch in the post-install script and adding that file to the installs (and removing the flag file as part of the uninstall script) was necessary.

  3. Rodney Allen, Anarchist
    December 1, 2014 at 9:28 pm

    Another option is to roll your own profile; it will also set these keys for all users. Here’s a post about it: https://managingosx.wordpress.com/2012/07/26/mountain-lion-suppress-apple-id-icloud-prompt/

    Towards the bottom is a link to the profile for 10.8 (link says ‘Here’). Edit it, updating it with the information presented here, and make sure to add the new key for ‘LastSeenBuddyBuildVersion.’

    Thanks to Mr. Trouton for sharing his knowledge.

  4. Luke Jaeger
    March 25, 2015 at 2:46 pm

    Rich you are the best! I deployed a stripped-down version of this in my JSS to suppress iCloud login after Yosemite upgrade – works like a champ.

  5. Barb French
    July 10, 2015 at 2:05 pm

    After deploying this script with our new image I find that Messages is trying to launch after login. I know this because we have Messages as a Restricted Application in Casper. After login there is a repeated pop up telling me an Application is restricted. Digging in to the jamf logs it shows that Messages is trying to launch.

    If I run the image without the script, Messages no longer is trying to launch.

    I wonder if there is 1 more file that needs to be “touched”.

  6. T. van Boven
    August 25, 2015 at 2:55 pm

    What do you do with the script ? I made a plist file and placed it in the launch agents folder. The script itself is in the scripts file. I made sure the files are executable.

    But it doesn’t work !

    So, where do I put the scripts ??

    PS We use mobile home directories …

  7. January 6, 2016 at 1:24 am

    Ugh, did the elves at Apple break this again? Doesn’t seem to work with El Capitan. 😦

  8. February 5, 2016 at 11:13 pm

    I’m able to disable them for regular users in El Cap, but these commands don’t work for root (which I only use for initial configuration, then self-disable) if you dump them into /var/root/Library… instead of /System/Library…. It’s weird. Why would they work for all but root?

  9. September 22, 2016 at 10:53 am

    Did anyone mange to make this work on Sierra?

  10. October 29, 2019 at 6:50 pm

    The Mojave 10.14.6 update altered the format of com.apple.SetupAssistant.plist.

    The templates are now located at:

    /System/Library/PrivateFrameworks/ScreenReader.framework/Versions/A/Resources/${template}/ExceptionsDatabases/com.apple.SetupAssistant.plist

    Also, the keys have changed. It now included additional build and version info as well as additional setup steps.

    I am altering my scripts to account for these changes but wanted to save someone some time from the research and troubleshooting I did based on the logging of my script.

  1. No trackbacks yet.

Leave a comment