Disable ZScaler temporarily on your Mac (2025 update)

Share this:

If you are using a corporate machine with Zscaler installed on it, you may face SSL handshake errors, especially with Java apps throwing up javax.net.ssl.SSLHandshakeException errors when getting certificates proxied by Zscaler instead of the original certificates. Zscaler also caused issues when I tried to enable Wireless@SGx connectivity setup on the Mac. Therefore, it is useful to be able to disable Zscaler client temporarily. However, most corporate MDM policies takes away the capability for you to disable the Zscaler client from its UI.

ZScaler Client UI

Disable ZScaler Client

Before I start, a short disclaimer. Do this at your own risk. If you’re not sure why you are doing this, don’t.

1. Unload the ZScaler services

Open up Terminal (or iTerm2) and use the following command to unload the Zscaler services. This will require your user id to have administrator rights. If you don’t, then unfortunately you are out of luck in trying to disable Zscaler on your machine. There are two (5) zscaler services that you need to unload to disable Zscaler client temporarily. The command below unloads them all in a few lines.

# kill the zscaler client
launchctl unload /Library/LaunchAgents/com.zscaler.preloginui.plist && launchctl unload /Library/LaunchAgents/com.zscaler.tray.plist
# kill the zscaler services
sudo launchctl unload /Library/LaunchDaemons/com.zscaler.service.plist && sudo launchctl unload /Library/LaunchDaemons/com.zscaler.tunnel.plist && sudo launchctl unload /Library/LaunchDaemons/com.zscaler.UPMServiceController.plist

The command should not display any output and will temporarily unload the ZScaler service until you manually load the service again, or restart your Mac. If the service has already been disabled, you will see an error stating that it cannot find the service.

script to disable Zscaler temporarily on your Mac

Note that I have an error above. That’s becuase I’ve already kept the Zscaler’s tunnel extension service disabled. You can find this in the Settings -> Login Items & Extensions. Look for Zscaler and click on the ⓘ icon.


powerlevel10k zsh theme on item

Want to get the same terminal experience as you see in the screenshot above? Check out my macOS set up for coding guide here now!


Once you have done that, you should see that Zscaler service is now temporarily disabled.

ZScaler client disabled

3. Check the certificates to confirm Zscaler is temporarily disabled

You can easily check if your internet traffic is still being proxied through Zscaler or not. Open up Safari and load up google.com (or any other websites for that matter) and check the certificate. When Zscaler is enabled, you would see that the certificate will have is one that is generated by Zscaler.

ZScaler proxied certs

But when you disable Zscaler successfully, you will see the original certificates again.

Google's original cert when ZScaler is disabled.

Re-enabling Zscaler

To re-enable Zscaler, just reopen the Zscaler client and reload the Zscaler service using the following command. You should see Zscaler running back up again as it was.

# reopen the zscaler client
open -a /Applications/Zscaler/Zscaler.app --hide
# reload the zscaler services
sudo launchctl load /Library/LaunchDaemons/com.zscaler.service.plist && sudo launchctl load /Library/LaunchDaemons/com.zscaler.tunnel.plist && sudo launchctl load /Library/LaunchDaemons/com.zscaler.UPMServiceController.plist


If this post has been useful, support me by buying me a latte or two 🙂
Buy Me A Coffee
Share this:

You may also like...

5 Responses

  1. Rodolfo says:

    this works nice, however the name resolution doesn’t work after disable.

  2. Ken Ng says:

    I had this issue once. I needed to restart my Mac for it to get working again.

  3. M says:

    It doesn’t work anymore 🙁

    Unload failed: 5: Input/output error
    Try running `launchctl bootout` as root for richer errors.
    Unload failed: 5: Input/output error
    Try running `launchctl bootout` as root for richer errors.

  4. Ken Ng says:

    I just tried on my machine and it still works. The command will error out if the service is already unloaded.

    You can also try to check if the service is still at the same location.
    ls /Library/LaunchDaemons/com.zscaler.service.plist
    If it’s there and the service is currently running, the command should unload the service properly.

  5. Oli says:

    The thing is, I could disable the Zscaler by using the command – so it works one-off.
    But then, when I wanted to enable it back again – the command doesn’t work and sometimes the laptop needs to restart multiple times in order to get the Zscaler to start working and assigning the right IP to the workstation.

    Any possible workaround?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.