### Munki PkgInfo for Santa
Source: https://northpole.dev/deployment/install-package
Example PkgInfo plist to import into a Munki catalog. It defines the Santa package with version 2025.3, installs check for /Applications/Santa.app, and includes a placeholder for installer_item_location. The blocking_applications array is empty because the package handles upgrades even if Santa.app is running.
```xml
name
Santa
version
2025.3
description
Santa, the friendly security tool for macOS
installs
type
application
path
/Applications/Santa.app
CFBundleIdentifier
com.northpolesec.santa
CFBundleName
Santa
CFBundleShortVersionString
2025.3
blocking_applications
receipts
packageid
com.northpolesec.santa
version
2025.3
installer_item_hash
06a33253a015be318503523df054771786a2d71d99f5e679329f32968d808cc1
installer_item_location
~ you must populate this with the path to santa-2025.3.pkg ~
uninstallable
unattended_install
```
--------------------------------
### santactl fileinfo for CERTIFICATE rule example
Source: https://northpole.dev/features/binary-authorization
Example command to inspect a binary's signing information, showing the SHA-256 fingerprint of the leaf certificate and the signing chain. The output includes the certificate details used for CERTIFICATE rules.
```bash
» santactl fileinfo /Applications/Santa.app
Path : /Applications/Santa.app/Contents/MacOS/Santa
SHA-256 : 66acf5c808ddb86c10137b5ae4c72cd14985ed2f90e5850d8e26ab962cb93c70
SHA-1 : 259f6b0ffc9cccc069eab2aee1496f5a12072ee7
Bundle Name : Santa
Bundle Version : 2025.3.97
Bundle Version Str : 2025.3
Team ID : ZMCG7MLDV9
Signing ID : ZMCG7MLDV9:com.northpolesec.santa
CDHash : ea7c2330699c760b2d6c2c3e703fde01ca54e9b4
Type : Executable (arm64, x86_64)
Code-signed : Yes
Rule : Allowed (SigningID)
Signing Chain:
1. SHA-256 : 1afd16f5b920f0d3b5f841aace6e948d6190ea8b5156b02deb36572d1d082f64
SHA-1 : 42890bc8a2a8becda00d63bdf9a89a6756a0da49
Common Name : Developer ID Application: North Pole Security, Inc. (ZMCG7MLDV9)
Organization : North Pole Security, Inc.
Organizational Unit : ZMCG7MLDV9
Valid From : 2024/10/11 21:24:15 -0400
Valid Until : 2027/02/01 17:12:15 -0500
2. SHA-256 : 7afc9d01a62f03a2de9637936d4afe68090d2de18d03f29c88cfb0b1ba63587f
SHA-1 : 3b166c3b7dc4b751c9fe2afab9135641e388e186
Common Name : Developer ID Certification Authority
Organization : Apple Inc.
Organizational Unit : Apple Certification Authority
Valid From : 2012/02/01 17:12:15 -0500
Valid Until : 2027/02/01 17:12:15 -0500
3. SHA-256 : b0b1730ecbc7ff4505142c49f1295e6eda6bcaed7e2c68c5be91b5a11001f024
SHA-1 : 611e5b662c593a08ff58d14ae22452d198df6c60
Common Name : Apple Root CA
Organization : Apple Inc.
Organizational Unit : Apple Certification Authority
Valid From : 2006/04/25 17:40:36 -0400
Valid Until : 2035/02/09 16:40:36 -0500
```
--------------------------------
### santactl fileinfo for TEAMID rule example
Source: https://northpole.dev/features/binary-authorization
Example command to inspect a binary's signing information, showing the Team ID and other details. The output includes the Team ID used for TEAMID rules.
```bash
» santactl fileinfo /Applications/Santa.app
Path : /Applications/Santa.app/Contents/MacOS/Santa
SHA-256 : 66acf5c808ddb86c10137b5ae4c72cd14985ed2f90e5850d8e26ab962cb93c70
SHA-1 : 259f6b0ffc9cccc069eab2aee1496f5a12072ee7
Bundle Name : Santa
Bundle Version : 2025.3.97
Bundle Version Str : 2025.3
Team ID : ZMCG7MLDV9
Signing ID : ZMCG7MLDV9:com.northpolesec.santa
CDHash : ea7c2330699c760b2d6c2c3e703fde01ca54e9b4
Type : Executable (arm64, x86_64)
Code-signed : Yes
Rule : Allowed (SigningID)
```
--------------------------------
### Manually install the network extension with santactl
Source: https://northpole.dev/deployment/network-extension
Run this command to immediately install the network extension. It tears down existing network connections and can interrupt active network operations, so use with care.
```bash
sudo santactl install --network-extension
```
--------------------------------
### Telemetry Configuration Example
Source: https://northpole.dev/features/telemetry
A complete configuration example for telemetry, including event types, log paths, file change monitoring, and entitlement filtering.
```xml
Telemetry
Execution
Authentication
FileAccess
EventLogType
filelog
EventLogPath
/var/log/santa/events.log
FileChangesRegex
^/Users/.*\.sh$
FileChangesPrefixFilters
/private/tmp/
EnableMachineIDDecoration
EntitlementsPrefixFilter
com.apple.private
EntitlementsTeamIDFilter
platform
```
--------------------------------
### Install Bazelisk with Homebrew
Source: https://northpole.dev/development/building
Installs Bazelisk via Homebrew, which automatically downloads the correct Bazel version. Adds both bazelisk and bazel to your PATH.
```bash
brew install bazelisk
```
--------------------------------
### Manual Install with installer command
Source: https://northpole.dev/deployment/install-package
Command to manually install the Santa package on a small number of machines without an MDM. Uses sudo installer with the package file and target root.
```bash
sudo installer -pkg santa-2025.3.pkg -tgt /
```
--------------------------------
### Example log message for EventLogType syslog or file
Source: https://northpole.dev/features/faa
This is an example of the log format produced when EventLogType is configured to syslog or file.
```text
action=FILE_ACCESS|policy_version=v0.1-experimental|policy_name=UserFoo|path=/Users/local/tmp/foo/text.txt|access_type=OPEN|decision=AUDIT_ONLY|pid=12|ppid=56|process=cat|processpath=/bin/cat|uid=-2|user=nobody|gid=-1|group=nogroup|machineid=my_id
```
--------------------------------
### Example santa-configuration.mobileconfig
Source: https://northpole.dev/deployment/profile-configuration
A sample configuration profile for Santa, demonstrating a subset of available keys including sync settings, machine identification, and static rules.
```xml
PayloadContent
ClientMode
1
EnableSilentMode
EventDetailText
Open sync server
EventDetailURL
https://sync-server-hostname/blockables/%file_sha%
FileChangesRegex
^/(?!(?:private/tmp|Library/(?:Caches|Managed Installs/Logs|(?:Managed )?Preferences))/)
MachineIDKey
MachineUUID
MachineIDPlist
/Library/Preferences/com.company.machine-mapping.plist
MachineOwnerKey
Owner
MachineOwnerPlist
/Library/Preferences/com.company.machine-mapping.plist
ModeNotificationLockdown
Entering Lockdown mode
ModeNotificationMonitor
Entering Monitor mode<br/>Please be careful!
MoreInfoURL
https://sync-server-hostname/moreinfo
StaticRules
identifier
ZMCG7MLDV9
policy
ALLOWLIST
rule_type
TEAMID
identifier
b7c1e3fd640c5f211c89b02c2c6122f78ce322aa5c56eb0bb54bc422a8f8b670
policy
BLOCKLIST
rule_type
BINARY
SyncBaseURL
https://sync-server-hostname/api/santa/
PayloadDisplayName
Santa Configuration
PayloadIdentifier
com.mycompany.santa.359E3C7D-396F-4C45-99E7-F429620B9B21
PayloadType
com.northpolesec.santa
PayloadVersion
1
PayloadDescription
Manages Santa's configuration
PayloadDisplayName
Santa: Configuration
PayloadIdentifier
com.mycompany.santa
PayloadOrganization
My Company
PayloadRemovalDisallowed
PayloadScope
System
PayloadType
Configuration
PayloadUUID
AFA02DE3-ACA6-49C4-9980-A3664E22E446
PayloadVersion
1
```
--------------------------------
### Check Santa version with santactl version
Source: https://northpole.dev/deployment/install-package
Run 'santactl version' to display the installed versions of santad, santactl, and SantaGUI. The output shows the build number and commit hash for each component.
```bash
santactl version
```
```text
santad | 2025.3 (build 97, commit 10bdfcc2)
santactl | 2025.3 (build 97, commit 10bdfcc2)
SantaGUI | 2025.3 (build 97, commit 10bdfcc2)
```
--------------------------------
### Configure kill_on_expiry policy
Source: https://northpole.dev/features/time-based-rules
Use kill_on_expiry to ensure processes started within a time window are terminated when the window closes.
```text
policy_for_range(weekdays(), "09:00", "17:00", kill_on_expiry(ALLOWLIST), BLOCKLIST)
```
--------------------------------
### Block publisher, allow specific app with santactl
Source: https://northpole.dev/features/binary-authorization
Creates a TeamID block rule for all applications from publisher ABCDEF1234, then a higher-precedence SigningID allow rule for the specific cloud-storage product com.acme-example.cloud-storage. This is the inverse of the previous example: block everything from the publisher except the allowed application.
```bash
santactl rule --block --teamid --identifier ABCDEF1234
santactl rule --allow \
--signingid \
--identifier ABCDEF1234:com.acme-example.cloud-storage
```
--------------------------------
### Timed access counted from launch
Source: https://northpole.dev/cookbook/cel
Sets a 30-minute duration window starting from the moment of execution, requiring Touch ID and terminating the process upon expiry. Requires Workshop 2026.8 or later and Santa 2026.8 or later.
```cel
policy_for_range(duration("30m"), kill_on_expiry(require_touchid_with_cooldown_minutes(30)))
```
--------------------------------
### Install Santa via Homebrew
Source: https://northpole.dev/deployment/install-package
Installs Santa from Homebrew. You will likely be prompted for your sudo password because Santa cannot be installed in a user folder like normal Homebrew packages. The cask is not maintained by the Santa team.
```bash
brew install santa
```
--------------------------------
### List system extensions with systemextensionsctl
Source: https://northpole.dev/deployment/troubleshooting
Check the output to confirm the Santa system extension is loaded. Look for a line item for com.northpolesec.santa.daemon with the expected version and state 'activated enabled'. If the state is 'activated waiting for the user', the extension must be approved in System Settings.
```bash
/usr/bin/systemextensionsctl list com.apple.system_extension.endpoint_security
```
--------------------------------
### Build Santa with make
Source: https://northpole.dev/development/building
Runs the default make target in the root of the Santa repo, which invokes useful Bazel commands to ensure changes are formatted correctly and build.
```bash
make
```
--------------------------------
### Configure BrandingCompanyLogo with file URL
Source: https://northpole.dev/configuration/branding
Sets a logo image using a local file path. The image must be readable by all users.
```xml
BrandingCompanyLogo
file:///Library/Application%20Support/Acme/logo.png
```
--------------------------------
### SpotlightImporterProtection: block unauthorized Spotlight plugins
Source: https://northpole.dev/cookbook/faa
Blocks unauthorized Spotlight plugin installations, addressing the Sploitlight exploit. Allows read access and enables silent mode, with `RuleType` set to `PathsWithAllowedProcesses`. The allowed processes include `com.apple.mds`, `com.apple.mdworker`, `com.apple.mdworker_shared`, `com.apple.mdimport`, and `com.apple.installer` (the comment notes removing the installer entry for more security).
```xml
SpotlightImporterProtection
Paths
Path
/Users/*/Library/Spotlight
IsPrefix
Path
/Library/Spotlight
IsPrefix
Options
AllowReadAccess
AuditOnly
EnableSilentMode
RuleType
PathsWithAllowedProcesses
Processes
SigningID
com.apple.mds
PlatformBinary
SigningID
com.apple.mdworker
PlatformBinary
SigningID
com.apple.mdworker_shared
PlatformBinary
SigningID
com.apple.mdimport
PlatformBinary
SigningID
com.apple.installer
PlatformBinary
```
--------------------------------
### Terminal block message example
Source: https://northpole.dev/configuration/branding
Displays how the company name appears in a terminal block message.
```text
Santa
The following application has been blocked from executing
because its trustworthiness cannot be determined
Reason: No matching rule
Path: /Applications/Malware.app/Contents/MacOS/Malware
Identifier: 60055b1f6fb276bfacf61f91505a72201987f20ad8b6867cce3058f4c0f0f5e5
Parent: bash (2511)
Managed by: Acme Corporation
```
--------------------------------
### Basic FAA plist configuration example
Source: https://northpole.dev/configuration/faa
A complete plist configuration for FAA with a watch item 'UserFoo' that monitors /Users/*/tmp/foo with prefix matching, audit-only mode, and a process restriction for Google Chrome helper. The EventDetailURL uses placeholders for hostname, rule name, and file identifier.
```xml
Version
v0.1
EventDetailURL
https://my-server/faa/%hostname%/%rule_name%/%file_identifier%
WatchItems
UserFoo
Paths
Path
/Users/*/tmp/foo
IsPrefix
Options
AllowReadAccess
AuditOnly
RuleType
PathsWithAllowedProcesses
Processes
TeamID
EQHXZ8M8AV
SigningID
com.google.Chrome.helper
```
--------------------------------
### Duration-Based Window
Source: https://northpole.dev/features/time-based-rules
Defines a window starting at the moment of execution for a specific duration. Requires kill_on_expiry to set an expiry.
```text
policy_for_range(duration("30m"), kill_on_expiry(ALLOWLIST))
```
--------------------------------
### Stream Santa daemon logs with log stream
Source: https://northpole.dev/deployment/troubleshooting
Stream debug logs from the Santa daemon to diagnose issues, especially if it fails to start.
```bash
/usr/bin/log stream --level debug --predicate 'sender == "com.northpolesec.santa.daemon"'
```
--------------------------------
### Verify system extensions after migration
Source: https://northpole.dev/deployment/migration
Run `systemextensionsctl list` to confirm NPS Santa is active and Google Santa is terminated. The output shows Google Santa as 'terminated waiting to uninstall on reboot' and NPS Santa as 'activated enabled'.
```bash
$ systemextensionsctl list
2 extension(s)
--- com.apple.system_extension.endpoint_security
enabled active teamID bundleID (version) name [state]
EQHXZ8M8AV com.google.santa.daemon (2024.9/2024.9.674285143) santad [terminated waiting to uninstall on reboot]
* * ZMCG7MLDV9 com.northpolesec.santa.daemon (2024.10/2024.10.49) santad [activated enabled]
```
--------------------------------
### Verify NPS Santa version with santactl
Source: https://northpole.dev/deployment/migration
Run `santactl version` to confirm the installed NPS Santa version. The output shows the version for santad, santactl, and SantaGUI.
```bash
$ santactl version
santad | 2025.3 (build 94, commit 63bc558d)
santactl | 2025.3 (build 94, commit 63bc558d)
SantaGUI | 2025.3 (build 94, commit 63bc558d)
```