Microsoft Intune rollout
Roll out pavri-endpointd to a Windows fleet via Microsoft Intune using a Win32 LOB
app manifest + PowerShell install/uninstall scripts + a separate Configuration Profile
to pre-seed registry keys. This Intune Win32 path is the MVP Windows installer
deliverable; Pavri does not require a full MSI for MVP.
1. Prerequisites
- Pavri tenant + admin role.
- Microsoft Intune admin access (Endpoint Manager); permission to create Win32 apps and Device Configuration profiles.
- Signed
pavri-endpointd.exeandendpointctl.exewrapped together as an.intunewinpackage (Authenticode + Microsoft Store or enterprise signing). Build the staged directory withservices/endpointd/packaging/windows/build-binaries.ps1. The.intunewinpackage must include bothpavri-endpointd.exeandendpointctl.exe— the install script usesendpointctl.exeto register native-messaging manifests and stages both executables underC:\Program Files\Pavri\pavri-endpointd. Signing is gated on CAP-3.7 item 1 (Windows-Intel) — see the CAP-3.7 row indocs/05-PHASED-ROADMAP.md(internal).
2. Token mint
In the Pavri dashboard, navigate to Settings → Endpoints → Add Endpoint → Mint enrollment token. Tokens are single-use per endpoint, 24-hour TTL. Mint one token per Intune Assignment Group scope — re-use across endpoints within the group is supported because the gateway tracks per-endpoint enrollment state.
3. Substitution markers
Before deploying the Intune Configuration Profile, populate the following registry values
under HKEY_LOCAL_MACHINE\SOFTWARE\Pavri:
| Registry value | Content | Replace with |
|---|---|---|
GatewayUrl | REG_SZ | Your tenant's gateway URL (e.g. https://gateway.your-org.pavri.ai) |
EnrollmentToken | REG_SZ | The token you minted in step 2 |
OrgId | REG_SZ | Your pavri org_id (visible at /admin/tenant in the dashboard) |
BrowserExtensionId | REG_SZ | Optional Chrome/Edge extension ID for native-messaging allowed_origins; Firefox native messaging uses the fixed Pavri add-on ID |
PrivacyStrict | REG_SZ | Optional; recommended true for works-council/privacy-sensitive fleets |
TransparencyPort | REG_SZ | Optional; defaults to 7878 |
The infra/mdm/intune/pavri-endpointd.intunewin.json manifest uses ${ENROLLMENT_TOKEN}
and ${ORG_ID} as documentary substitution markers. Replace these markers in any
derivative manifests or CI pipelines before import. The manifest's _substitution_markers
field lists every literal ${...} token so the CI live-token leak guard can locate them
even though the actual delivery mechanism is the Windows registry rather than environment
variables.
For the full list of supported environment variables and command-line flags, see Sensor deployment reference.
At install time, install.ps1 maps the registry values into machine-level
environment variables and the service-specific
HKLM\SYSTEM\CurrentControlSet\Services\PavriEndpointd\Environment
REG_MULTI_SZ block for the LocalSystem service:
| Registry value | Service environment |
|---|---|
GatewayUrl | PAVRI_GATEWAY_URL |
EnrollmentToken | PAVRI_ENROLLMENT_TOKEN |
OrgId | PAVRI_ORG_ID |
pavri-endpointd uses the gateway URL and enrollment token to enroll with the
real Pavri gateway, then persists the returned endpoint identity and mTLS
material under C:\ProgramData\Pavri\Endpoint. The service-specific block is
written before Start-Service, so the first SCM-launched process sees the same
configuration as later boots.
4. Package signing
The Win32 app .intunewin wraps your pavri-endpointd.exe. The executable must be
Authenticode-signed with a certificate trusted by the target fleet (either a Microsoft
EV cert or your enterprise PKI). Until CAP-3.7 item 1 ships the Windows-Intel signed
build, the sensor can be deployed for evaluation using an enterprise CA — see the
Windows developer loop for how to configure the dev CA.
5. Staged rollout
- Create an Intune Assignment Group
pavri-pilot(dynamic, 5% of enrolled devices; usedeviceCategoryor a custom attribute filter). - Assign the Configuration Profile (registry keys) to
pavri-pilotwith Required intent; ensure it completes before the Win32 app assignment. - Assign the Win32 LOB app to
pavri-pilotwith Required intent. - Set the tenant default protection-profile to
observemode at/admin/protection-profiles. - After 1 week of clean telemetry: expand the assignment group to 25% of fleet, switch
tenant default to
soft_enforce. - After 1 further week: expand to 100% and switch to
enforce.
6. Rollback
- Per-endpoint emergency: at
/admin/endpoints/{endpoint_id} → Set protection mode → observe— takes effect immediately, no Intune touch required. - Fleet-wide emergency: at
/admin/protection-profiles → set tenant default to observe. - Full uninstall via Intune: change the Win32 app assignment to Uninstall intent.
Intune will invoke
uninstall.ps1, which stops the service, removes NM manifests, and deletes the install directory while preserving endpoint identity state. A later reinstall refreshes the same inventory record. Useuninstall.ps1 -Purgeonly when the endpoint and all of its local state must be removed; the next enrollment will create a new record. - Identity-only reset: run
endpointctl.exe reset-identityfrom the installed directory. It stopsPavriEndpointd, removes only enrollment state and the persisted identity, and leaves the installation and logs in place. Deploy a new enrollment token before starting or redeploying the service.
7. Post-install verification
On any enrolled endpoint (PowerShell as Administrator):
# Verify the service is registered and running.
sc.exe query PavriEndpointd
# Verify native-messaging manifests. Firefox does not require BrowserExtensionId;
# Chrome/Edge manifests are present only when BrowserExtensionId is deployed.
& "C:\Program Files\Pavri\pavri-endpointd\endpointctl.exe" status-nm-manifests --browser=all --scope=system
Confirm the endpoint shows up at /admin/endpoints in the dashboard within 60 seconds
of the heartbeat interval.
The Windows package/install smoke in CI is static unless release credentials are
available: it builds both architectures on windows-2022, validates PowerShell
syntax, validates the Intune staging directory, and checks the service/install
contract. Uploading the .intunewin into an external Intune tenant remains a
release evidence step when tenant credentials are available.
Files in this rollout
infra/mdm/intune/pavri-endpointd.intunewin.json— Win32 LOB app manifest.infra/mdm/intune/install.ps1— install script (reads registry, installs service, installs Firefox NM manifests, and installs Chrome/Edge NM manifests whenBrowserExtensionIdis configured).infra/mdm/intune/uninstall.ps1— uninstall script (stops service, removes NM manifests, deletes install directory).infra/mdm/intune/README.md— short on-disk reference for Intune operators.
MVP limitations
Windows live egress-proxy trust is still deferred to the roadmap, so APR and deep managed-egress visibility on Windows inherit that limitation. ETW process, network, and file observers are observation/evidence paths; arbitrary inline file/network blocking requires a supported Windows chokepoint such as WFP or a minifilter driver and is tracked separately.