discover_macos_intel_components_feedback.sh helps Mac admins discover Intel-only binaries inside macOS applications and installer packages before rollout.
It is designed for compatibility discovery and vendor follow-up: you get a local terminal summary for quick triage and a support-friendly Markdown fix summary you can send to application developers and support teams.
Apple has already transitioned the Mac product line to Apple silicon, and current Intel app compatibility on Apple silicon Macs depends on Rosetta 2 translation. For long-term readiness, Intel-only binaries should be treated as technical debt and replaced with arm64 or Universal binaries before future macOS updates increase compatibility risk.
Apple references:
- Apple silicon overview for developers: https://developer.apple.com/documentation/apple-silicon
- Building a Universal macOS binary: https://developer.apple.com/documentation/apple-silicon/building-a-universal-macos-binary
- Rosetta 2 support on Apple silicon Macs: https://support.apple.com/en-us/102527
Intel app warnings and future macOS behavior (Apple published guidance):
- Intel app warning and Rosetta install prompt behavior: https://support.apple.com/en-us/102527
- Apple notes that Rosetta remains generally available through macOS 27, with reduced scope beginning in macOS 28 (older unmaintained gaming titles): https://support.apple.com/en-us/102527
- Rosetta translation environment details for developers: https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment
Jamf Pro approach for fleet discovery:
- Use Extension Attributes to collect app architecture signals (for example, Apple silicon, Universal, or Intel) from endpoints.
- Build Smart Groups from those Extension Attribute results to find Macs with Intel-only apps or components.
- Use policies and dashboards to prioritize remediation for business-critical apps first.
- Jamf Pro product docs: https://learn.jamf.com/
Popular Extension Attribute script sources:
- Jamf Nation Extension Attributes (community script collection): https://github.com/jamf/Jamf-Nation-Extension-Attributes
- Jamf Protect Extension Attributes (official Jamf examples): https://github.com/jamf/jamfprotect/tree/master/jamf_pro_extension_attributes
- SOFA Jamf Extension Attributes (macOS compliance and update status examples): https://github.com/macadmins/sofa/tree/main/tool-scripts
- Talking Moose Jamf scripts (includes EA examples): https://github.com/talkingmoose/Jamf-Scripts
Note: these repositories are broad EA collections and are not all specifically focused on Intel architecture discovery.
Ready-to-use Jamf Pro Extension Attribute examples for Intel app discovery:
- Count Intel-only applications:
#!/bin/bash
# Data Type: Integer
# Inventory Display: Extension Attributes
intel_count="$(/usr/sbin/system_profiler SPApplicationsDataType 2>/dev/null | /usr/bin/awk '
/Kind: Application \(Intel\)/ { c++ }
END { print c+0 }
')"
echo "<result>${intel_count}</result>"- Return a compact list of Intel-only app names (first 20):
#!/bin/bash
# Data Type: String
# Inventory Display: Extension Attributes
intel_apps="$( (/usr/sbin/system_profiler SPApplicationsDataType 2>/dev/null || true) | /usr/bin/awk '
/^[[:space:]]+[^:][^:]*:$/ {
app=$0
sub(/^[[:space:]]+/, "", app)
sub(/:$/, "", app)
}
/Kind: Application \(Intel\)/ {
if (app != "") print app
}
' | /usr/bin/head -20 | /usr/bin/paste -sd '; ' -)"
if [[ -z "${intel_apps}" ]]; then
intel_apps="None"
fi
# Basic XML escaping for Jamf EA result output.
intel_apps="$(printf "%s" "${intel_apps}" | /usr/bin/sed -e 's/&/\&/g' -e 's/</\</g' -e 's/>/\>/g')"
echo "<result>${intel_apps}</result>"You can scope Smart Groups like:
- Extension Attribute
Intel App Countis greater than0 - Extension Attribute
Intel App Listis notNone
Other MDM solution example:
- Kandji: use Custom Scripts and Smart Lists to collect Intel app counts/lists from endpoints and scope remediation workflows.
- Kandji docs: https://support.kandji.io/
These MacAdmin tools are commonly used:
- osquery (endpoint inventory and SQL-based app discovery): https://github.com/osquery/osquery
- Fleet (fleet-wide osquery management and reporting): https://github.com/fleetdm/fleet
- MunkiReport (Mac fleet reporting with software inventory modules): https://github.com/munkireport/munkireport-php
How this script is different:
- This script is intentionally focused on one application or installer package at a time, not a full inventory of everything installed across your Mac fleet.
- It performs deep component-level Mach-O inspection (
.app,.pkg,.mpkg,.dmg,.zip) to identify Intel-only executables and libraries before rollout. - It generates a support-friendly fix summary designed for application developers and support teams.
The script scans macOS .app, .pkg, .mpkg, .dmg, and .zip inputs for Mach-O files, then classifies each detected binary as:
- Apple Silicon only
- Universal
- Intel only
- Unknown or unsupported
The primary concern is any Intel only result, because those components do not contain native arm64 or arm64e support.
The script performs static inspection only.
It does not:
- Install packages
- Copy apps to
/Applications - Write package payloads to
/Library - Run installer scripts
- Launch the app being checked
- Run vendor uninstallers
When a URL, DMG, ZIP, or package is expanded, the work happens in a temporary workspace that is removed automatically unless --keep-expanded-package is used.
The script uses standard macOS command line tools:
filelipocodesignfindawksedcurlpkgutilhdiutilditto
Package audits also require the Suspicious Package CLI:
spkg
Where to get Suspicious Package:
- Official site: https://www.mothersruin.com/software/SuspiciousPackage/
Install and expose the CLI:
- Install Suspicious Package to
/Applications. - Verify the embedded CLI exists:
ls -l "/Applications/Suspicious Package.app/Contents/MacOS/spkg"- Optional: add it to your shell
PATH:
export PATH="/Applications/Suspicious Package.app/Contents/MacOS:$PATH"- Confirm the CLI is callable:
spkg --helpIf spkg is not in PATH, set SPKG_BIN to the full executable path:
SPKG_BIN="/path/to/spkg" ./discover_macos_intel_components_feedback.sh --helpExample with the default app bundle location:
SPKG_BIN="/Applications/Suspicious Package.app/Contents/MacOS/spkg" ./discover_macos_intel_components_feedback.sh --helpInteractive mode:
./discover_macos_intel_components_feedback.shAudit a vendor download URL:
./discover_macos_intel_components_feedback.sh \
--name "Application Name" \
--url "https://example.com/Application.pkg" \
--non-interactiveAudit a local app:
./discover_macos_intel_components_feedback.sh \
--path "/Applications/Application.app" \
--name "Application Name" \
--url "https://example.com/download"Audit a local package and keep the expanded workspace for review:
./discover_macos_intel_components_feedback.sh \
--path "/path/to/Application.pkg" \
--name "Application Name" \
--url "https://example.com/download" \
--keep-expanded-packageWrite output to a custom directory:
./discover_macos_intel_components_feedback.sh \
--name "Application Name" \
--url "https://example.com/Application.pkg" \
--output-dir "/tmp/apple-silicon-audit" \
--non-interactiveGenerate a PDF copy of the fix summary:
./discover_macos_intel_components_feedback.sh \
--name "Application Name" \
--url "https://example.com/Application.pkg" \
--non-interactive \
--pdfRun the script with no flags:
./discover_macos_intel_components_feedback.shExample prompt flow (URL workflow):
Apple Silicon Compatibility Check
1 - Download URL
2 - Local Install Path
Choice [1]: 1
Enter the vendor download URL for this app or installer.
This URL will be included in the compatibility report so the exact app or installer is clear.
Download URL: https://example.com/Application.pkg
Application name: Application Name
2026-08-05 12:06:49 : Downloading audit source to temporary workspace
2026-08-05 12:07:22 : Inspecting package components with spkg
2026-08-05 12:07:27 : Expanding package payloads for Mach-O inspection
Apple Silicon compatibility check complete.
Result: Needs attention. One or more inspected components are Intel-only.
Example prompt flow (local path workflow):
Apple Silicon Compatibility Check
1 - Download URL
2 - Local Install Path
Choice [1]: 2
Enter the local path to audit.
Local path: /Applications/Application.app
Enter the vendor download URL for this app or installer.
This URL will be included in the compatibility report so the exact app or installer is clear.
Download URL: https://example.com/download
Application name: Application Name
Default output format:
- Primary report format: Markdown (
.md) - Primary report file:
*_apple_silicon_fix_summary.md
Other output options:
- Plain text summary:
*_summary.txt - Structured tabular data:
*_components.tsvand*_problem_components.tsv - Optional PDF report:
*_apple_silicon_fix_summary.pdfwhen--pdfis used - Custom output location: use
--output-dir "/path/to/output"
By default, reports are written to:
/tmp/apple-silicon-audit-reports
The most useful file for vendor or support feedback is:
*_apple_silicon_fix_summary.md
That Markdown file is intentionally written for developer or support teams. It includes:
- A friendly introduction
- Application name
- Download URL
- Application or package version
- Bundle or package identifier
- Intel-only component count
- Unknown or unsupported component count
- Affected app bundles with example binaries
- Full table of components to fix
- Requested remediation
It intentionally excludes internal testing details such as temporary paths, audit method, package expansion details, spkg output paths, and safety-boundary text.
The script also writes helper files for local review:
*_summary.txt*_apple_silicon_fix_summary.pdfwhen--pdfis used*_components.tsv*_problem_components.tsv*_seen_paths.txtspkg_*files when package metadata is collected
| Exit code | Meaning |
|---|---|
0 |
Every inspected Mach-O component supports Apple Silicon. |
1 |
One or more Intel-only components were found. |
2 |
One or more components could not be classified, or no Mach-O components were found. |
3 |
Invalid arguments or unsupported input. |
4 |
spkg is missing or package expansion failed. |
5 |
Unexpected audit or reporting error. |
Command:
./discover_macos_intel_components_feedback.sh \
--name "DCDMac1.6.1.4-Arm64.pkg" \
--url "https://dymoreleasecontent.blob.core.windows.net/dymo-release/DCDMAC/DCDMac1.6.1.4-Arm64.pkg" \
--non-interactiveTerminal output:
2026-08-05 12:06:49 : Downloading audit source to temporary workspace
2026-08-05 12:07:22 : Inspecting package components with spkg
2026-08-05 12:07:22 : Generating spkg manifest
2026-08-05 12:07:27 : Expanding package payloads for Mach-O inspection
2026-08-05 12:07:31 : Scanning for Mach-O components under: /tmp/apple_silicon_audit_<run_id>/expanded_1_DCDMac1.6.1.4-Arm64.pkg
Apple Silicon compatibility check complete.
Result: Needs attention. One or more inspected components are Intel-only.
Application: DCDMac1.6.1.4-Arm64.pkg
Overall result: FAIL
Apple Silicon-only: 0
Universal: 11
Intel-only: 60
Unknown or unsupported: 0
Fix summary: /tmp/apple-silicon-audit-reports/DCDMac1.6.1.4-Arm64.pkg_<run_id>_apple_silicon_fix_summary.md
The script exited with code 1, which is expected when Intel-only components are found.
The generated fix summary for the DYMO session starts like this:
# Apple Silicon Compatibility Fix Summary
Hi,
I wanted to share a potential Apple Silicon compatibility concern we found in your application, so your team can review it before it affects future macOS releases.
## Summary
- Application name: DCDMac1.6.1.4-Arm64.pkg
- Download URL: https://dymoreleasecontent.blob.core.windows.net/dymo-release/DCDMAC/DCDMac1.6.1.4-Arm64.pkg
- Application or package version: 1.6.1.4
- Bundle or package identifier: com.dymo.DYMO-Connect-Support-Tool
- Intel-only components: 60
- Unknown or unsupported components: 0
One or more inspected Mach-O components are Intel-only and do not contain native Apple Silicon support.
## Affected Areas
The affected components include Intel-only executables and libraries in these app bundles:
- DYMO Connect Support Tool.app (14 affected components), including:
- `dymo-connect.pkg/Payload/Applications/DYMO Connect Support Tool.app/Contents/MacOS/DYMO Connect Support Tool`
- `dymo-connect.pkg/Payload/Applications/DYMO Connect Support Tool.app/Contents/MonoBundle/libcoreclr.dylib`
- `dymo-connect.pkg/Payload/Applications/DYMO Connect Support Tool.app/Contents/MonoBundle/libSystem.Native.dylib`
- `dymo-connect.pkg/Payload/Applications/DYMO Connect Support Tool.app/Contents/MonoBundle/libSystem.IO.Compression.Native.dylib`
- `dymo-connect.pkg/Payload/Applications/DYMO Connect Support Tool.app/Contents/MonoBundle/libSystem.Globalization.Native.dylib`
- ... and 9 more
- DYMO Connect.app (18 affected components), including:
- `dymo-connect.pkg/Payload/Applications/DYMO Connect.app/Contents/MacOS/DYMO Connect`
- `dymo-connect.pkg/Payload/Applications/DYMO Connect.app/Contents/Library/LaunchServices/com.dymo.dymo-connect.helper`
- `dymo-connect.pkg/Payload/Applications/DYMO Connect.app/Contents/Library/SystemExtensions/com.dymo.dymo-connect.usb.dext/com.dymo.dymo-connect.usb`
- `dymo-connect.pkg/Payload/Applications/DYMO Connect.app/Contents/MonoBundle/libe_sqlite3.dylib`
- `dymo-connect.pkg/Payload/Applications/DYMO Connect.app/Contents/MonoBundle/libcoreclr.dylib`
- ... and 13 more
- DYMO.WebApi.Mac.Host.app (28 affected components), including:
- `webapi-host.pkg/Payload/Applications/DYMO.WebApi.Mac.Host.app/Contents/MacOS/DYMO.WebApi.Mac.Host`
- `webapi-host.pkg/Payload/Applications/DYMO.WebApi.Mac.Host.app/Contents/Resources/Firefox/libfreebl3.dylib`
- `webapi-host.pkg/Payload/Applications/DYMO.WebApi.Mac.Host.app/Contents/Resources/Firefox/libsoftokn3.dylib`
- `webapi-host.pkg/Payload/Applications/DYMO.WebApi.Mac.Host.app/Contents/Resources/Firefox/libplds4.dylib`
- `webapi-host.pkg/Payload/Applications/DYMO.WebApi.Mac.Host.app/Contents/Resources/Firefox/libnssdbm3.dylib`
- ... and 23 moreThe full generated file continues with a Components To Fix table containing each affected component, its architecture, relative path, Mach-O type, parent app bundle, signing identifier, and signing status.
It ends with:
## Requested Fix
Please rebuild or replace every affected executable component with an arm64 or Universal binary.For vendor or support communication, share the *_apple_silicon_fix_summary.md file.
Avoid sending local helper files unless they are specifically requested. The fix summary is the intended vendor-facing artifact.