6

I work in security as an intern, and I've been asked by my boss to look into disabling Siri on macOS Sierra. I noticed that there's no way to prevent users from re-enabling Siri even if it's disabled by an administrator.

I've tried using "csrutil disable" in Recovery Mode and editing Siri's .plist files, but it seems to have no effect. Is there any way to completely prevent any user from running Siri on macOS Sierra?

5

It is not my work but Rich T. has a great post on this at his blog:

https://derflounder.wordpress.com/2016/09/20/blocking-siri-on-macos-sierra/

You will need to deploy two separate configuration profiles, the relevant keys are below:

Domain: com.apple.assistant.support.plist 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Assistant Enabled</key>
    <false/>
</dict>
</plist>

and

Domain: com.apple.Siri.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>StatusMenuVisible</key>
    <false/>
    <key>UserHasDeclinedEnable</key>
    <true/>
</dict>
</plist>

Depending on how you manage your macs, and how you want to deploy these profile settings they may need to be constructed differently.

As far as I know these two profiles are the only way to disable this.

Here is a link to the mobileconfig profiles for these settings. You can deploy them with any MDM:

https://github.com/rtrouton/profiles/tree/master/DisableSiri

Otherwise you will need to use defaults write:

defaults write com.apple.Siri StatusMenuVisible -bool false
defaults write com.apple.Siri UserHasDeclinedEnable -bool true
defaults write com.apple.assistant.support 'Assistant Enabled' 0

Once you make these changes you will need to clear the preference cache:

sudo killall -HUP cfprefsd

And then restart the WindowUI server:

sudo killall SystemUIServer

Hope this clarifies.

  • 1
    I've tried this as well, but I'm not sure how to manage them. I deployed them to ~/Library/Preferences, /System/Library/Preferences, and /Library/Preferences and it still hasn't worked at any point. Is there some command I need to run? – DrChong May 1 '18 at 20:01
  • 1
    I have edited my comment with a link to the MobileConfig profiles that can be deployed via an MDM. I believe this is a user level profile. But machine may work too. I have also added the relevant defaults write commands. This could require a login/logout. – Edward S. May 1 '18 at 20:18
  • 1
    Nice complete answer with reference to author! Upvoted. – fsb May 1 '18 at 20:37
  • 2
    I ran all five of those commands and rebooted my system, and yet Siri still functions on both the admin and standard users on my test laptop. Nothing seems to have changed. – DrChong May 1 '18 at 20:37
  • 1
    @DrChong can you provide the output of: defaults read com.apple.Siri StatusMenuVisible defaults read com.apple.Siri UserHasDeclinedEnable defaults read com.apple.assistant.support – Edward S. May 2 '18 at 10:56
1

I figured it out with the help of Edward S.

First, you need to reboot into Recovery Mode and run the command

csrutil disable

to turn off System Integrity Protection, which will allow you to edit all plist files.

Then, after rebooting, run the following:

sudo defaults write /System/Library/LaunchAgents/com.apple.Siri.plist Disabled -bool true
sudo defaults write com.apple.Siri StatusMenuVisible -bool false
sudo defaults write com.apple.Siri UserHasDeclinedEnable -bool true
sudo defaults write com.apple.assistant.support 'Assistant Enabled' 0

to set system defaults and

defaults write com.apple.Siri StatusMenuVisible -bool false
defaults write com.apple.Siri UserHasDeclinedEnable -bool true
defaults write com.apple.assistant.support 'Assistant Enabled' 0

for every user currently on the Mac. Future users will copy the system defaults.

Then run

sudo killall -HUP cfprefsd
sudo killall SystemUIServer
sudo reboot now

Go back into Recovery Mode and run

csrutil enable

Reboot, log back in again, and try to run Siri. The process will run, but it won't do a thing.

1

It turns out an entirely different solution to what I expected is what actually works. It doesn't require you to change any settings at all. Simply reboot into Recovery Mode, open a terminal, and type:

csrutil disable

to disable System Integrity Protection. Reboot as normal, and then run

sudo rm -rf /System/Library/CoreServices/Siri.app

to disable Siri. Try to run it and you'll see it won't work. But we're not done yet. MAKE SURE to re-enable System Integrity Protection by rebooting one more time into Recovery Mode and running:

csrutil enable

and then rebooting.

Congratulations! You've just disabled Siri!

In the case that this doesn't work, implement both this and the .plist modifications I mention in my earlier answer.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .