macOS | 2025.7
To install Santa on your work computer:
Don’t see Santa or the Fleet Desktop icon? Send a link to this page to your IT team.
Run the following command in your terminal to uninstall Santa:
LOGGED_IN_USER=$(scutil <<< "show State:/Users/ConsoleUser" | awk '/Name :/ { print $3 }') && expand_pkgid_and_map() { local PKGID="$1"; local FUNC="$2"; if [[ "$PKGID" == *"*" ]]; then local prefix="${PKGID%\*}"; echo "Expanding wildcard for PKGID: $PKGID"; for receipt in $(pkgutil --pkgs | grep "^${prefix}"); do echo "Processing $receipt"; "$FUNC" "$receipt"; done else "$FUNC" "$PKGID"; fi } && forget_pkg() { local PKGID="$1"; expand_pkgid_and_map "$PKGID" forget_receipt } && forget_receipt() { local PKGID="$1"; sudo pkgutil --forget "$PKGID" } && remove_launchctl_service() { local service="$1"; local booleans=("true" "false"); local plist_status; local paths; local should_sudo; echo "Removing launchctl service ${service}"; for should_sudo in "${booleans[@]}"; do plist_status=$(launchctl list "${service}" 2>/dev/null); if [[ $plist_status == \{* ]]; then if [[ $should_sudo == "true" ]]; then sudo launchctl remove "${service}"; else launchctl remove "${service}"; fi; sleep 1; fi; paths=(; "/Library/LaunchAgents/${service}.plist"; "/Library/LaunchDaemons/${service}.plist"; ); if [[ $should_sudo == "false" ]]; then for i in "${!paths[@]}"; do paths[i]="${HOME}${paths[i]}"; done fi; for path in "${paths[@]}"; do if [[ -e "$path" ]]; then if [[ $should_sudo == "true" ]]; then sudo rm -f -- "$path"; else rm -f -- "$path"; fi; fi; done done } && remove_pkg_files() { local PKGID="$1"; expand_pkgid_and_map "$PKGID" remove_receipt_files } && remove_receipt_files() { local PKGID="$1"; local PKGINFO VOLUME INSTALL_LOCATION FULL_INSTALL_LOCATION; echo "pkgutil --pkg-info-plist \"$PKGID\""; PKGINFO=$(pkgutil --pkg-info-plist "$PKGID"); VOLUME=$(echo "$PKGINFO" | awk '/<key>volume<\/key>/ {getline; gsub(/.*<string>|<\/string>.*/, ""); print}'); INSTALL_LOCATION=$(echo "$PKGINFO" | awk '/<key>install-location<\/key>/ {getline; gsub(/.*<string>|<\/string>.*/, ""); print}'); if [ -z "$INSTALL_LOCATION" ] || [ "$INSTALL_LOCATION" = "/" ]; then FULL_INSTALL_LOCATION="$VOLUME"; else FULL_INSTALL_LOCATION="$VOLUME/$INSTALL_LOCATION"; FULL_INSTALL_LOCATION=$(echo "$FULL_INSTALL_LOCATION" | sed 's|//|/|g'); fi; echo "sudo pkgutil --only-files --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | tr '\\\\n' '\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf"; sudo pkgutil --only-files --files "$PKGID" | sed "s|^|/${INSTALL_LOCATION}/|" | tr '\n' '\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf; echo "sudo pkgutil --only-dirs --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | grep '\\.app$' | tr '\\\\n' '\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf"; sudo pkgutil --only-dirs --files "$PKGID" | sed "s|^|${FULL_INSTALL_LOCATION}/|" | grep '\.app$' | tr '\n' '\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf; root_app_dir=$(; sudo pkgutil --only-dirs --files "$PKGID" \; | sed "s|^|${FULL_INSTALL_LOCATION}/|" \; | grep 'Applications' \; | awk '{ print length, $0 }' \; | sort -n \; | head -n1 \; | cut -d' ' -f2-; ); if [ -n "$root_app_dir" ]; then echo "sudo rmdir -p \"$root_app_dir\" 2>/dev/null || :"; sudo rmdir -p "$root_app_dir" 2>/dev/null || :; fi } && trash() { local logged_in_user="$1"; local target_file="$2"; local timestamp="$(date +%Y-%m-%d-%s)"; local rand="$(jot -r 1 0 99999)"; if [[ "$target_file" == ~* ]]; then target_file="/Users/$logged_in_user${target_file:1}"; fi; local trash="/Users/$logged_in_user/.Trash"; local file_name="$(basename "${target_file}")"; if [[ -e "$target_file" ]]; then echo "removing $target_file."; mv -f "$target_file" "$trash/${file_name}_${timestamp}_${rand}"; else echo "$target_file doesn't exist."; fi } && remove_launchctl_service 'com.northpolesec.santa' && remove_launchctl_service 'com.northpolesec.santa.bundleservice' && remove_launchctl_service 'com.northpolesec.santa.metricservice' && remove_launchctl_service 'com.northpolesec.santa.syncservice' && remove_launchctl_service 'com.northpolesec.santad' && remove_pkg_files 'com.northpolesec.santa' && forget_pkg 'com.northpolesec.santa' && sudo rm -rf '/Applications/Santa.app' && sudo rm -rf '/usr/local/bin/santactl' && sudo rm -rf '/var/db/santa' && sudo rm -rf '/var/log/santa*' && trash $LOGGED_IN_USER '/private/etc/asl/com.northpolesec.santa.asl.conf' && trash $LOGGED_IN_USER '/private/etc/newsyslog.d/com.northpolesec.santa.newsyslog.conf'
Run this query in Fleet to find old versions of Santa across all your computers:
SELECT 1 FROM apps WHERE bundle_identifier = 'com.northpolesec.santa' AND bundle_short_version <= '2025.7';