Deploy AI DLP via Iru
This guide shows you how to deploy AI DLP to your managed Macs from Iru (formerly Kandji). You add a script Anzenna provides as a Custom Script Library Item, fill in two values at the top of it, and assign it to a Blueprint. Deploying AI DLP installs the Anzenna Update agent, which installs AI DLP and keeps it current automatically.
Prerequisites
Iru admin access with permission to create Library Items
- Target Macs assigned to an Iru Blueprint
Target devices reported to Anzenna by a connected MDM or EDR integration (see
Devices must already be known to Anzenna
)
Your Anzenna domain and its Client Token (see
AI DLP Overview
)
The install and uninstall scripts, provided by Anzenna support
Before beginning deployment, contact Anzenna support to obtain the install and uninstall scripts. The scripts ship with their value fields blank; you fill them in inside the Iru console.
Overview
Iru delivers AI DLP as a Custom Script Library Item. Custom Scripts take no parameters, so there is no parameter field to fill in — the two values you supply are the first two editable lines of the script itself:
DOMAIN=""
CLIENT_TOKEN=""
Filled in, those two lines look like this:
DOMAIN="replace-with-your-domain"
CLIENT_TOKEN="replace-with-your-client-token"
The script goes in the Audit Script field, with the Remediation Script left empty
Execution Frequency is Run once per device
It runs as root, which the install requires, and verifies the downloaded agent's Apple Developer ID signature before running it
Paste the script into Iru first, then type your values into Iru's editor. Do not fill them in to a local copy of the file — a local copy holding your Client Token is how it ends up in a ticket, a chat message, or a commit. Filled in inside the console, the only copy lives where it belongs.
Step-by-Step Instructions
1. Create the Custom Script Library Item
Log in to Iru and go to Library
Click Add Library Item
Choose Custom Script, then click Add & Configure
2. Configure the Library Item
Name: something that says what it is, for example
Anzenna AI DLP — installBlueprints: add the Blueprint covering the Macs that should receive AI DLP. Start with a test Blueprint rather than your whole fleet.
Execution Frequency: select Run once per device
Self Service: leave off. This is a fleet deployment, not an opt-in install.
Some Iru documentation uses the label Install once per device for this setting. They are the same option — pick whichever label your console shows.
3. Paste the script and fill in your values
In the Audit Script field, paste the entire install script Anzenna provided
Leave the Remediation Script field empty
In the pasted text, fill in the two values at the top:
| Variable | Value |
|---|---|
DOMAIN | Your Anzenna domain |
CLIENT_TOKEN | Your domain's Client Token — find it in the portal |
Iru can pass values to a script through a Custom Profile, but a profile's values land in /Library/Managed Preferences, which is world-readable on every managed Mac. Keeping your Client Token in the script body means it stays in the Iru console instead of in a readable file on every endpoint.
4. Save and deploy
Leave Restart after successful execution unchecked — nothing here needs a reboot
Leave Liftoff Settings at their defaults
Click Save
Online Macs pick the item up at their next agent check-in, typically within about 15 minutes.
The token is a literal in the script body, so anyone with Iru console access can read it. That is expected — the Client Token is domain-shared, not a per-device key. Nothing persistent lands on the Mac except the agent's own root-only configuration.
What "Run once per device" actually means
The name is misleading in a way worth understanding before you deploy. Iru re-runs the audit script at each check-in until the item passes for that device:
On success the script exits cleanly, the item reaches Pass, and it stops running. This is the intended path and behaves like a one-shot.
On failure the item shows Error and Iru re-runs it at every check-in (~15 minutes) until it passes.
That retry is useful for a transient problem — a network blip resolves itself on the next check-in with no action from you. But a persistent failure re-downloads roughly 15 MB every 15 minutes indefinitely. A long-running Error on this item is not cosmetic: fix the cause or unassign the item.
This is still the right frequency — Run every 15 min and Run daily re-run even after a success, which is worse. A non-zero exit also raises an Iru alert, and the script's output is recorded on the device's status page.
Verifying Deployment
Check the Library Item status in Iru
Open the Library Item and find a target device, or open the device's record and find the item
A status of Pass means the script completed successfully
The captured output on the device status page ends with
anzenna-update(iru-install): install complete
Verify on the Mac
The agent's own log is the authoritative record, and it does not require
sudo:
tail -20 "/Library/Application Support/Anzenna/Update/logs/update.log"
A quick structural check, which does not need the log at all:
ls -la "/Library/Application Support/Anzenna/Update/"
launchctl print system/ai.anzenna.update | head -5
Uninstalling
Removing the install item from a Blueprint does not uninstall anything — Iru Custom Scripts have no uninstall hook. Removal is its own Library Item.
Add a second Custom Script Library Item, following step 1
Name it something like
Anzenna AI DLP — uninstallPaste the uninstall script Anzenna provided into the Audit Script field. It holds no secret and needs no values filled in.
Set Execution Frequency to Run once per device, assign it to the Blueprint covering the Macs you want AI DLP removed from, and save
The uninstall removes the agent, its scheduled job, and its configuration, and is idempotent — running it on a Mac that never had AI DLP is a clean no-op.
Troubleshooting
"DOMAIN is empty" or "CLIENT_TOKEN is empty"
The Library Item was saved without filling in the values at the top of the script
Edit the script body in the Library Item — there is no separate parameter field on Iru to look for
Both values are required; a partial install is refused rather than left half-configured
The same install keeps running at every check-in
Most likely the item is failing: "Run once per device" re-runs until it passes, so an Error state retries every ~15 minutes
Read the captured output on the device status page to see why, and fix that
Otherwise check the frequency — Run every 15 min and Run daily re-run even after success
The item shows Error but the Mac looks correctly installed
Read
update.logon the Mac. If it reachesinstall: complete, the deployment itself worked.A failure after that point is in the background update run, not the install — contact Anzenna support with the log
The portal refused the enrollment
The log shows exit 40: the Client Token is wrong. Find it in the portal and re-check it, then contact Anzenna support if it persists.
The install succeeded but no findings appear
Check that Anzenna knows the device. If no connected MDM or EDR integration reports its serial number, AI DLP installs but does not register — see
Devices must already be known to Anzenna
. Connect the integration; the device registers on its own once it is reported.
For Claude Code, check the version meets the
minimum requirement
. Older versions produce no findings and no error.
"validly signed but NOT by Anzenna"
Stop and contact Anzenna support. The downloaded file is properly signed by someone other than Anzenna, and the script correctly refused to run it.
Related Resources
AI DLP Overview
Deploy AI DLP via Jamf Pro
Deploy AI DLP via Microsoft Intune
Connect Kandji to Anzenna