Skip to main content

Overview

Works on any Mac with Python 3, including Macs older than macOS 13.
On macOS, /usr/bin/python3 does not work until the Xcode Command Line Tools are installed. Deploy the Command Line Tools or the python.org package. Or use the binary runtime, which is self-contained.
Allow HTTPS to getunbound.ai, raw.githubusercontent.com, github.com and your organization’s backend and gateway hosts. They follow --backend-url and --gateway-url in your install command.

1. Copy your install command

Open Configure in Unbound. On a dedicated deployment, use your own dashboard address.
1

Choose scope

Select My org (MDM).
2

Choose what to install

Keep Govern coding agent actions on. Keep Seed events from past activity on if you want past Claude Code, Codex and GitHub Copilot sessions imported.
3

Run the install command

Select the macOS tab and copy the command. If it starts with sudo bash, copy from the Linux tab instead. The Python command is the same on both.
The command looks like this, with your own key and URLs:
The value after --api-key is your admin API key. One key covers the whole fleet, and each Mac uses it to fetch its own device key. Keep the command exactly as copied. You paste it into the policy in step 3.

2. Create the script

Go to Settings → Computer Management → Scripts → New. Name it Unbound daily onboard and paste this into the Script tab:
The script never runs the command you paste. It reads your key and your organization’s URLs from it, and imports past sessions only if the command has --backfill. Daily runs never import a session twice. On the Options tab, label Parameter 4 Install command. This label replaces “Parameter 4” on the policy in step 3. Jamf reserves $1 to $3, which is why the script reads $4. The script only uses root-owned interpreters. A Homebrew or /usr/local python can be replaced by the logged-in user, and this script runs as root.

3. Create the policy

Go to Computers → Policies → New.
1

General

Name it Unbound daily onboard. Set Trigger to Recurring Check-in and Execution Frequency to Once every day.
2

Scripts

Select Configure, then Add next to Unbound daily onboard. Under Parameter Values, paste the whole command from step 1 into Install command.
3

Scope

Add one test Mac for now, then save.
Run the policy on the test Mac and check the result as described in Verify. When it passes, change the policy’s scope to your developer Mac group.

Troubleshooting


Remove Unbound

First disable the Unbound daily onboard policy or remove the Macs from its scope. If you skip this, the next check-in installs Unbound again. Then run:
This removes the managed configuration for every supported tool. The scan on this path is one-shot, so there is no schedule to tear down. Then delete /Library/Application Support/Unbound. Two things are left on purpose. Each user’s own ~/.unbound/config.json stays, so a developer who set Unbound up themselves is not logged out by a fleet rollback — delete that file, or run unbound nuke as that user, to remove it. And the inventory already reported for the device stays in the dashboard: clearing a device stops new reports rather than erasing old ones. Seven days after its last report the device is marked Stale on AI Tools Discovery and counted on the Stale Devices card on the dashboard home.