Step 01 — Prerequisites
Confirm the following before proceeding:- Microsoft Intune admin center access — Intune Administrator or equivalent role with permission to create configuration profiles, upload apps, and assign deployments.
- An Apple MDM Push Certificate that is active in Intune (Devices → Enrollment → Apple → Apple MDM push certificate). Without this, no macOS device can be managed.
- A valid Origin provisioning JWT (install token) — obtain from the Origin console under Endpoints → Connect.
- The Origin macOS installer — download from the Origin console under Endpoints → Connect. Delivered as
Origin.pkg. - The configuration profile and install scripts bundled with this guide (see files inventory in Step 03).
- Target macOS devices enrolled in Intune with User-Approved MDM (UAMDM). Devices enrolled via Company Portal or Apple Automated Device Enrollment satisfy this requirement.
- An Entra ID security group containing your target devices — used during assignment in Step 05.
- A pilot device dedicated to validating the deployment chain end-to-end before broader rollout. The first device that receives a PKG app deployment in any tenant is at higher risk of agent-startup timing issues — validate on this device before scoping the app more broadly.
Where to find itBoth the
.pkg installer and the provisioning JWT live in the same place in the Origin console: Endpoints → Connect. Grab both before moving into Intune.Download the configuration profile from MDM Overview: origin-privacy.mobileconfig. The JWT staging script is provided in full in Step 05 below.Step 02 — Scope of Automation
One macOS permission stands between the installer and a fully registered agent. MDM pre-approves it — no user interaction is required.
Deploying the privacy configuration profile before the package installs ensures the agent can register silently without any user-facing permission dialogs.
Step 03 — Files
The configuration profile is downloadable from the docs site. The JWT staging script is reproduced in full in Step 05 — copy it straight into Intune.Identifiers
Step 04 — Deployment Order
The privacy configuration profile should land on the endpoint before the.pkg installs — otherwise the agent hits a Full Disk Access prompt on first run. Follow this order strictly:
- Privacy preferences (PPPC) (
origin-privacy.mobileconfig) — Grants Full Disk Access to the Origin agent based on Team IDD3C73MWD7Yand bundle IDcom.origin.agent. Eliminates the TCC prompt that would otherwise appear on first run. - JWT staging shell script (
intune-stage-jwt-origin.sh) — Stages the provisioning JWT to/var/tmp/origin-provisioning-jwtvia a standalone shell script policy at Devices → Scripts and remediations. Must show Succeeded on a target device before that device is added to the macOS app (PKG) assignment. Idempotent — safe to re-run. - The Origin .pkg (via macOS app deployment) (
Origin.pkg) — The installer itself. Deployed as a macOS app (PKG) with no pre-install script. The.pkgpostinstall reads the JWT staged in step 2 and registers silently. See Step 05 for the full app setup.
Step 05 — Intune Walkthrough
The following sequence assumes you have theorigin-privacy.mobileconfig profile plus the .pkg and the JWT staging shell script staged locally. The whole flow happens inside the Microsoft Intune admin center at intune.microsoft.com.
01. Upload the configuration profile
Theorigin-privacy.mobileconfig file must be uploaded as a Custom configuration profile. Do not use Intune’s built-in PPPC template — it reconstructs the XML and breaks the code requirement that makes PPPC allow-listing work.
Where to uploadIntune admin center → Devices → By platform → macOS → Configuration → Create → New Policy. Set Profile type to Templates, then choose Custom. This is the only profile type that ingests a raw
.mobileconfig without rewriting it.- Intune admin center → Devices → By platform → macOS → Configuration.
- Click + Create → New Policy.
- Set Profile type to Templates, select Custom, click Create.
- Basics: Name the profile (e.g.
Origin — Privacy Preferences (PPPC)) and click Next. - Configuration settings:
- Custom configuration profile name: a friendly name shown on the device (e.g.
Origin Privacy Preferences). - Deployment channel: Device channel — required. The user channel will not allow the PPPC payload to take effect.
- Configuration profile file: upload
origin-privacy.mobileconfig.
- Custom configuration profile name: a friendly name shown on the device (e.g.
- Click Next.
- Assignments: add your Entra ID device group under Included groups. Click Next.
- Review + create → Create.
02. Deploy the JWT staging shell script
This script stages the provisioning JWT to/var/tmp/origin-provisioning-jwt so the Origin .pkg postinstall can read it silently when the package installs. It is deployed as its own shell script policy — not as a pre-install script attached to the macOS PKG app.
- Intune admin center → Devices → Scripts and remediations → Platform scripts tab → + Add → macOS.
- Basics: Name
Origin — Stage Provisioning JWT. Click Next. - Script settings: paste the script below, replacing the empty
JWT=""value with your provisioning token from Endpoints → Connect in the Origin console. Settings:- Run script as signed-in user: No (run as root).
- Hide script notifications on devices: Yes.
- Script frequency: Not configured (run once).
- Max number of times to retry if script fails: 3.
- Assignments: add your Entra ID device group. Click Next.
- Review + add → Add.
- Force a sync from Company Portal on your pilot device. Wait for status to show Succeeded.
sudo ls -la /var/tmp/origin-provisioning-jwt should show a 0600-mode file owned by root:wheel with content. Until this is confirmed, do not proceed to Substep 04.
Why the token lives in the script bodyIntune doesn’t expose script parameters for macOS shell scripts the way it does for Windows Win32 apps — the script body is the only place to put the JWT. Any Intune admin with read permission on this script policy can see it. Scope admin permissions accordingly. For organizations where this exposure is unacceptable, see the tenant-signed PKG path that eliminates JWT staging entirely.
03. Add the Origin package as a macOS PKG app
The Origin.pkg is deployed using Intune’s macOS app (PKG) deployment type. The PKG app has no pre-install or post-install script — JWT staging was handled in Substep 02. The .pkg postinstall reads the staged JWT directly when the package installs.
Intune Management Extension prerequisiteThe macOS app (PKG) deployment type requires the Microsoft Intune Management Extension (version 2309.007 or greater) on the endpoint. The Intune Management Extension installs automatically on the first script- or PKG-type assignment, so the JWT staging script in Substep 02 should already have triggered it. If that script never reported Succeeded, the Intune Management Extension may not be healthy on the device — diagnose before continuing (see Step 07).
04. Configure requirements, detection, and assignment
- Intune admin center → Apps → All apps → + Create.
- Under Other, select macOS app (PKG), then click Select.
- App information → Select app package file: upload
Origin.pkg. Intune reads bundle ID and version from the package metadata. - Confirm the auto-populated values, fill in Publisher (e.g. Prelude Research) and any optional fields. Click Next.
- Program: leave both Pre-install script and Post-install script blank. This is critical — adding a pre-install script reintroduces the failure modes documented in Step 07.
- Set Ignore app version to No so Intune respects the version in the package metadata for upgrade decisions.
- Click Next to continue to Requirements.
Detection rules
Assignments
Review the values and click Create.
05. Trigger the install
Once a device is in scope for the macOS PKG app (with the upstream privacy profile and JWT staging script already Succeeded), the install runs automatically on the next device check-in. To force it for testing:- From the Mac: open Company Portal → Devices → select the device → ⋯ → Check status. This forces an immediate sync.
- From the admin center: Devices → All devices → select the target device → Sync.
- From Terminal on the Mac (forces a profile check-in only — does not directly trigger app install):
sudo profiles renew -type enrollment
/var/tmp/origin-provisioning-jwt (installing the Intune Management Extension on its first run) → Intune Management Extension installs the .pkg → the postinstall reads the staged JWT, registers silently, and deletes the file. No user interaction is required at any step.
Step 06 — Verification
Run these on a target endpoint after the install completes. Each command confirms a different stage of the install pipeline is healthy. Profile installedJWT staged successfully (NNN bytes). or one of the idempotency no-op messages if the JWT was already staged or Origin was already running.
Intune Management Extension log
App install succeeded for the Origin policy ID. If you see Cached app policy result matches repeatedly without resolution, see Step 07.
Origin menu bar icon
Once the agent is running, the Origin menu bar icon appears in the macOS menu bar. Click it to confirm the agent is active and to access two operator-friendly checks without dropping to Terminal:- Generate diagnostic report — bundles agent state, recent logs, and registration status into a single file you can hand to Origin support.
- View logs — opens the local log directory directly, equivalent to the
catcommand above without needing the date.
Origin console verificationIn the Origin console, click Computers in the left-hand navigation, then search for the target hostname. A successfully registered endpoint will appear in the list with a recent snapshot time and its detected AI agents populated.
Intune admin center verificationDevices → All devices → select the target Mac → Managed Apps. The Origin app should show install status Installed. Under Device configuration, the Origin privacy profile should show Succeeded.
Step 07 — Troubleshooting
Profile shows “Error” or “Conflict” in Intune
Check the per-device status in Devices → All devices → [device] → Device configuration → [profile name] → Per-setting status. The most common causes:- Profile uploaded with the wrong template type — if you used Intune’s built-in PPPC template instead of Templates → Custom, the XML was rebuilt and the code requirement no longer matches Origin’s signature. Delete the profile and recreate it as a Custom profile uploading the raw
.mobileconfig. - User channel selected instead of Device channel — the PPPC payload is device-scoped and silently no-ops when delivered through the user channel. Recreate the profile with Deployment channel: Device channel.
- Profile stuck in “Pending” — force a sync from Company Portal on the device, or use Sync in the admin center.
- Verify the profile actually installed:
sudo profiles show -all | grep -i "origin".
Full Disk Access not granted despite profile
- The PPPC profile’s code requirement matches Developer ID signed builds with Team ID
D3C73MWD7Y. Ad-hoc signed or internal development builds won’t match and FDA will not pre-grant. - Confirm the profile was uploaded as a Custom template (see above) — the built-in PPPC template will silently strip the code requirement.
JWT staging script reports “Failed” but the JWT file exists
Diagnostic and fix for the case where the script ran but Intune reports failure:- Verify the file actually exists with content:
sudo ls -la /var/tmp/origin-provisioning-jwt. A0600-mode file owned byroot:wheelwith non-zero size means the script succeeded — Intune is misreporting. - Check the script’s own log:
sudo cat /Library/Logs/Origin/intune-stage-jwt.log. If the log showsJWT staged successfullyandexit 0, the script worked. - Recovery: if the JWT is staged correctly, simply assign the macOS PKG app to the device — the postinstall will consume the JWT regardless of what Intune thinks of the script’s status.
- If you need Intune to actually report success, toggle the script’s group assignment off, wait 5 minutes, then re-assign. This forces Intune to re-evaluate from a fresh state. The script’s idempotency check (“JWT already staged; skipping”) returns 0 cleanly.
PKG app reports “Pre-install script did not complete successfully (0X87D3014A)”
This means the macOS PKG app was configured with a pre-install script — which this deployment guide explicitly avoids. Open the app in Apps → All apps → Origin app → Properties → Edit and confirm both Pre-install script and Post-install script fields are blank. If they aren’t, blank them, save, and re-sync.Cached failure persists across multiple sync attempts
Intune’s macOS app retry logic has a documented weakness: when theIntuneMDMDaemon’s cached policy result matches a prior failure (visible as Cached app policy result matches the current policy result in IntuneMDMDaemon*.log), it stops retrying meaningfully. Recovery options in order of preference:
- Toggle the assignment. Apps → All apps → Origin → Properties → Assignments → remove the group → Save. Wait 5 minutes, force a sync from Company Portal, then re-add the assignment. Intune treats this as a brand-new policy and clears the cached result.
- Retire and re-enroll. If the assignment toggle doesn’t break the cache, retire the device from the admin center, manually clean
/Library/Intune/and/Library/Logs/Microsoft/Intune/, delete the device record from Intune, then re-enroll fresh via Company Portal. This is the only fully clean reset for a poisoned policy state. - Wait it out (not recommended). Intune may eventually break the cache on its own, but timing is unpredictable.
JWT staging script fails on first deployment
A failure on the very first script assignment usually indicates the Intune Management Extension itself isn’t healthy on this device yet. Checkls /Library/Intune/ — if empty or missing the agent app bundle, force a sync and wait 5–10 minutes for the agent to install, then let the idempotent script retry.
App stays in “Pending” forever in Company Portal
- Confirm the device’s primary user has an Intune license assigned in M365 Admin Center. Without the license, agent installation requests get silently dropped.
- Check that the device hasn’t been added to a conflicting assignment that excludes it from the script policy.
- This is a known Intune cosmetic bug — Company Portal can show Pending even after the app has successfully installed. Verify with
pgrep -x originon the endpoint and the install status in the admin center, both of which are authoritative. - If the install really hasn’t started, confirm the device received the Intune Management Extension:
ls /Library/Intune/. If empty, force a sync and wait — the agent installs on first PKG app or shell script assignment.