Jamf Pro
Deploy and manage Safety Endpoint on macOS devices using Jamf Pro Policies
This guide covers deploying Safety Endpoint to macOS devices using Scripts and Policies in Jamf Pro. The deployment uses a lightweight shell script that installs, updates, and verifies Safety Endpoint on a recurring schedule.
Jamf Pro required. Jamf Now does not support scheduled script execution. This guide requires Jamf Pro.
Overview
Safety Endpoint is deployed using two Jamf Pro components:
Script — uploaded once under Settings, contains the deployment logic
Policy — references the script, defines when and where it runs
The script downloads the official setup script from Safety over HTTPS and executes it. Since the setup script is idempotent, it handles installation, updates, and health checks internally. A built-in throttle ensures the script runs at most once per hour, even if the policy triggers more frequently.
The script reports status through its exit code:
0
Safety Endpoint is installed and up to date (or skipped — last run was less than 1 hour ago)
1
Setup failed — requires manual review
Prerequisites
Deploy Safety Endpoint
Get Your Enrollment Key
Log in to the Safety Platform, click Manage Enrollment Key → Create Enrollment Key, and copy the generated key. This key links devices to your Safety organization.
Add the Script in Jamf Pro
In Jamf Pro, go to Settings → Computer management → Scripts
Click New Script
On the General tab:
Display Name:
Safety Endpoint - RunCategory:
Security(or your preferred category)Information: Installs and maintains Safety Endpoint via the official setup script
On the Script tab, paste the script below with your enrollment key:
Make sure you replace REPLACE_WITH_YOUR_ENROLLMENT_KEY with your actual enrollment key before saving the script.
Click Save
Save and Verify
Click Save to deploy the policy.
Quick test: To verify the setup works on a specific Mac without waiting for the next check-in, run the following command on the device as root:
This forces an immediate check-in and triggers the policy. Check the policy logs in Jamf Pro to confirm it completed successfully.
Monitor Compliance
After deployment, monitor your fleet status in Jamf Pro:
Go to Computers → Policies
Select Safety Endpoint - Setup
Click Logs to view execution history
Completed
Script ran successfully
None — Safety Endpoint is installed or was already up to date
Failed
The script exited with a non-zero code
Click the log entry to view script output for error details
Pending
Device has not checked in yet
Wait for the next scheduled check-in
To view logs for a specific device, go to Computers → Search Inventory → select the device → History → Policy Logs.
Uninstall Safety Endpoint
If you need to remove Safety Endpoint from devices, create a separate policy with the uninstall wrapper script. Like the deployment script, it downloads the official uninstall script from Safety over HTTPS and executes it.
The uninstall script removes Safety Endpoint artifacts from the machine, including configuration, firewall wrappers, package manager settings, and data for all user profiles. Configuration Safety wrote into a project file stays with the project, including the index line in a requirements file, the Safety index entry in a pyproject.toml, and the registry in a project .npmrc. Remove those with the project's own tooling, for example poetry source remove safety.
Create the Uninstall Policy
Go to Computers → Policies → New Policy
On the Options tab, configure the General section:
Display Name:
Safety Endpoint - UninstallEnabled: checked
Category:
SecurityTrigger: Custom — enter the event name:
safetyUninstallExecution Frequency: Once per computer
On the Options tab, click Scripts → Configure → select Safety Endpoint - Uninstall
On the Scope tab, select the target computers or groups
Click Save
To trigger the uninstall on a device, run:
The script runs once per device with root privileges and will clean up:
Safety Endpoint binaries and system PATH entries
Per-user configuration, firewall wrappers, and shell profiles
Package manager configurations (pip, uv, npm)
Scheduled tasks and LaunchDaemons created by Safety Endpoint
Troubleshooting
Last updated
Was this helpful?

