Cortex XDR by Palo Alto Networks is an advanced endpoint protection platform that integrates detection, prevention, and response capabilities. Installing Cortex XDR on macOS devices via your Mobile Device Management (MDM) solution enables centralized deployment and ensures all endpoints are secured without requiring manual installation.
This guide provides step-by-step instructions on how to silently install Cortex XDR on macOS, including how to deploy the required installation package and configure system extensions and permissions for a seamless user experience.
Requirements #
Before deploying Cortex XDR on macOS devices through Applivery, make sure you have the following:
Cortex XDR client package (
.pkg
).Distribution ID and Cloud ELB Address (from your Cortex XDR dashboard).
Activation Script (for agent licensing).
Full Disk Access policy (via configuration profile).
Custom Cortex XDR .mobileconfig profile.
1 Applivery license for app distribution.
Prepare Cortex XDR #
To deploy Cortex XDR using Applivery, you will need to upload the compressed app package (.zip
) to your App Distribution section and configure it with a post-installation activation script.
First, download the Cortex XDR .pkg
installer from your Cortex XDR dashboard and make sure to copy your Distribution ID and Cloud ELB Address, as you’ll need these later for the activation script.
Once downloaded, compress the .pkg
file by right-clicking on it and selecting Compress, which will generate the .zip
file required by Applivery.
Next, log in to the Applivery dashboard and navigate to the App Distribution. From there, follow the steps outlined in our documentation on how to create your first app.
Configure your Cortex XDR policy #
Once in the Applivery dashboard, head to the Device Management section and select Policies (1). Choose the policy where you want to deploy the app. From the left-hand menu, select the Apps (2) section and click the + Add App (3) button.
In the modal view, navigate to the Applivery (4) tab to continue with the setup process.
Set the platform to macOS (5), choose Your Workspace (6) as the app origin, and search for the Cortex XDR app you previously created in the app dropdown (7). For the build selection, choose Last (8) to ensure the latest version is always deployed.

Continue to the next step and select your preferred install mode—Force Install, Required for setup, or Available—depending on your deployment strategy.
In the Configuration section, select Pre-install (9) and paste your Activation Script, making sure to replace the placeholder values with your actual Distribution ID and Cloud ELB Address.

Activation Script #
#!/bin/bash
# Get current session user
currentUser=$(scutil <<< "show State:/Users/ConsoleUser" | awk '/Name :/ && ! /loginwindow/ { print $3 }')
#Cortex XDR Distribution ID and Cloud Adress <---- MODIFY VARIABLES WITH YOURS
distribution="DISTRIBUTION_ID"
cloud="CLOUD_ADRESS" # https:// format
# Path where Config.xml will be saved
folderPath="/Users/$currentUser/Library/Application Support/auditApps"
filePath="$folderPath/Config.xml"
# Ensure auditApps folder exists and adjust permissions
sudo mkdir -p "$folderPath"
sudo chown "$currentUser" "$folderPath"
sudo chmod 700 "$folderPath"
# Write content to Config.xml using cat
sudo cat << EOF > "$filePath"
$distribution
$cloud
EOF
# Adjust file permissions
sudo chown "$currentUser" "$filePath"
sudo chmod 600 "$filePath"
sudo installer -applyChoiceChangesXML "/Users/$currentUser/Library/Application Support/auditApps/Config.xml" -pkg "/Users/$currentUser/Library/Application Support/auditApps/Cortex XDR.pkg" -target /
# Verify if the file was created successfully
if [[ -f "$filePath" ]]; then
echo "Config.xml created at $filePath"
else
echo "Error creating Config.xml"
exit 1
fi
Finally, click Save Changes to apply and store your policy configuration.
Custom Cortex XDR .mobileconfig #
To apply the custom configuration, navigate to the desired policy and click + Add configuration (10) from the menu on the left-hand side.
Then, select the + Import (11) button and paste the provided .xml
content into the editor.
Once done, make sure to Save changes to apply the configuration.

PayloadContent
PayloadDisplayName
Cortex XDR Privacy Preferences Policy Control
PayloadIdentifier
com.apple.TCC.configuration-profile-policy.7388C706-49BA-4067-BADE-8D031B084B69
PayloadType
com.apple.TCC.configuration-profile-policy
PayloadUUID
7388C706-49BA-4067-BADE-8D031B084B69
PayloadVersion
1
Services
Accessibility
Allowed
CodeRequirement
identifier "com.paloaltonetworks.cortex.agent" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77
Identifier
com.paloaltonetworks.cortex.agent
IdentifierType
bundleID
StaticCode
SystemPolicyAllFiles
Allowed
CodeRequirement
identifier "com.paloaltonetworks.traps.securityextension" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77
Identifier
com.paloaltonetworks.traps.securityextension
IdentifierType
bundleID
StaticCode
Allowed
CodeRequirement
identifier pmd and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77
Identifier
/Library/Application Support/PaloAltoNetworks/Traps/bin/pmd
IdentifierType
path
StaticCode
AllowUserOverrides
AllowedSystemExtensions
PXPZ95SK77
com.paloaltonetworks.traps.securityextension
com.paloaltonetworks.traps.networkextension
PayloadDisplayName
Cortex XDR System Extensions
PayloadIdentifier
com.apple.system-extension-policy.93526FBD-2421-4402-9CAF-210780E2D0FF
PayloadType
com.apple.system-extension-policy
PayloadUUID
93526FBD-2421-4402-9CAF-210780E2D0FF
PayloadVersion
1
FilterDataProviderBundleIdentifier
com.paloaltonetworks.traps.networkextension
FilterDataProviderDesignatedRequirement
identifier "com.paloaltonetworks.traps.networkextension" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77
FilterGrade
firewall
FilterPacketProviderBundleIdentifier
com.paloaltonetworks.traps.networkextension
FilterPacketProviderDesignatedRequirement
identifier "com.paloaltonetworks.traps.networkextension" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77
FilterPackets
FilterSockets
FilterType
Plugin
PayloadDescription
Content Filter for the Cortex XDR agent network extension
PayloadDisplayName
Cortex XDR Network Content Filter
PayloadIdentifier
com.apple.webcontent-filter.CA9C208A-EC6D-4565-864D-02B30DE9D56A
PayloadType
com.apple.webcontent-filter
PayloadUUID
CA9C208A-EC6D-4565-864D-02B30DE9D56A
PayloadVersion
1
PluginBundleID
com.paloaltonetworks.cortex.app
UserDefinedName
Cortex XDR Network Filter
NotificationSettings
AlertType
1
BadgesEnabled
BundleIdentifier
com.paloaltonetworks.traps-agent
CriticalAlertEnabled
GroupingType
0
NotificationsEnabled
PreviewType
0
ShowInCarPlay
ShowInLockScreen
ShowInNotificationCenter
SoundsEnabled
AlertType
1
BadgesEnabled
BundleIdentifier
com.paloaltonetworks.cortex.agent
CriticalAlertEnabled
GroupingType
0
NotificationsEnabled
PreviewType
0
ShowInCarPlay
ShowInLockScreen
ShowInNotificationCenter
SoundsEnabled
PayloadDisplayName
Cortex XDR Notifications
PayloadIdentifier
com.apple.notificationsettings.FE495ADF-1E68-4486-9BB6-0E75D6C3177E
PayloadType
com.apple.notificationsettings
PayloadUUID
FE495ADF-1E68-4486-9BB6-0E75D6C3177E
PayloadVersion
1
PayloadDisplayName
Cortex XDR Managed Login Items
PayloadIdentifier
com.apple.servicemanagement.1645DB60-CBC6-4AE2-A679-BC52DD4C85CE
PayloadType
com.apple.servicemanagement
PayloadUUID
1645DB60-CBC6-4AE2-A679-BC52DD4C85CE
PayloadVersion
1
Rules
Comment
Allows Cortex XDR launch daemons and launch agents
RuleType
LabelPrefix
RuleValue
com.paloaltonetworks.cortex
TeamIdentifier
PXPZ95SK77
PayloadDescription
Cortex XDR Config: PPPC + SE + Content Filter + Notifications + BTM
PayloadDisplayName
Cortex XDR Agent Unified Config Profile v5
PayloadIdentifier
com.paloaltonetworks.cortex.AA16E926-D153-4B2E-B4CC-342BB
PayloadOrganization
Palo Alto Networks
PayloadRemovalDisallowed
PayloadScope
System
PayloadType
Configuration
PayloadUUID
AA16E926-D153-4B2E-B4CC-342BB
PayloadVersion
1
TargetDeviceType
5