App Trust Preview - inspect Mac apps, PKGs, DMGs, executables, and scripts before opening them
I made App Trust Preview, a Mac app for checking what macOS can verify about software before you open or install it. Since my last Reddit post, App Trust Preview has grown from a focused app-bundle inspector into a broader pre-open/pre-install inspection tool. The amount of useful feedback from this community was amazing, and I am very happy to say that most of the requested features are now implemented in v1.2. My todo list is still not over, and I am still open to feature requests. Feel free to leave a comment with anything you would like to see added. A few examples: u/north_st-hot-weather: "Just purchased. I hope the .pkg and .dmg check comes soon!" .pkg and .dmg support is now added in v1.2.0. u/Uatuwatchesmyscreen: "Is there any possibility of expanding it so that you can also see what rights it has in the settings for at a glance convenience?" The report now shows saved user-granted macOS privacy decisions for the scanned app, and includes quick buttons that open the relevant System Settings privacy sections. u/Icy_Associate2022: "Please, could you make sure that the application's architecture is not hidden and is quickly visible in the apparent window?" Architecture is now visible directly in the report, together with bundle size details. u/sujee81: "It'd be useful if your app shows this info" for apps using native Swift, web views, Electron, Node.js, and similar web technologies. Framework and technology detection is now part of the report, including Electron and Chromium-based apps. u/bluedoggee: "I hope you can provide a MCP server(or somthing similar) for this app, so I can ask my AI agents... to invoke the MCP for investigating any app." I started with a more universal first step: a command line interface that exports JSON or text reports, so scripts and AI agents can call App Trust Preview from Terminal. From the app UI, you can also export to PDF and PNG as well. What is new in v1.2.0: Added inspection for installer packages, disk images, binary executables, and readable scripts. Added display of user-granted privacy permissions for the scanned app. Added quick buttons to open relevant System Settings privacy sections. Added framework and technology detection, including Electron and Chromium-based apps. Added app architecture and bundle size details. Added CLI export for JSON and text reports. Added Settings for configuring Quick Look and the main report view. Added section ordering and section hiding, so reports can be customized. Added multi-window support, so multiple items can be analyzed at the same time. Improved the interface, optimized trust signal detection, and fixed multiple report and analysis issues. App Trust Preview can show: Signing status, developer identity, Team ID, bundle ID, notarization indicators, certificate chain, and certificate revocation status. Sandboxing, hardened runtime, internet access declarations, privacy purpose strings, saved macOS permission decisions, and quick links to relevant System Settings privacy panes. App architecture, bundle size, internal helpers, nested apps, frameworks, plug-ins, XPC services, and app extensions. Package scripts, package contents, binary metadata, script previews, framework detection, and detected technologies. Privacy permissions One of the most useful additions is being able to see which privacy permissions were already granted to the scanned app without opening every System Settings privacy category one by one. That saves a lot of time when you want to review what an app can access. If you want to change something, App Trust Preview provides quick buttons that open the corresponding System Settings privacy section, so you can adjust the permission from the right place with one click. The new CLI is useful for automation, documentation, and AI-agent workflows. An agent or script can call App Trust Preview from Terminal, inspect a target, and analyze the exported report. Example: "/Applications/App Trust Preview.app/Contents/MacOS/App Trust Preview" --export json --target "/path/to/App.app" Or run all tests against a disk image: "/Applications/App Trust Preview.app/Contents/MacOS/App Trust Preview" --export json --target "/path/to/file.dmg" --tests all For AI-agent workflows, you can also ask the agent to learn the App Trust Preview CLI by running the --help flag, then write exported reports to a writable path that you add in App Trust Preview Settings. After that, the agent can inspect apps from any folder it is allowed to access, collect JSON or text reports, and provide a review with deeper analysis of signing, permissions, bundled code, package scripts, architecture, frameworks, and other trust signals. Example agent instruction: Learn the "App Trust Preview.app" CLI using --help. Analyze the trust signals of apps in the /Applications folder, providing the most important signals. Local-first behavior App Trust Preview still works locally: It does not upload inspected files. It does not launch inspected apps. It does not modify inspected apps, packages, disk images, executables, or scripts. It does not grant or revoke permissions. The app itself makes no network requests. Certificate revocation status comes from macOS trust services. The internal core inspection component is open source under the MIT license here: https://github.com/JulyIghor/AppTrustPreview. This is the helper used for external local inspection work, so anyone who wants to review how that part works can inspect the source. It is not antivirus, and it does not claim that software is safe or malware-free. The goal is to show useful context before you trust software: identity, permissions, isolation, bundled code, installer contents, network access declarations, and unusual technical signals. Comparison There are already excellent Mac tools near this area, but they usually focus on one slice of the workflow. Apparency is great for inspecting app bundles. Suspicious Package is great for looking inside installer packages. What's Your Sign is great for quick code-signing checks from Finder. KnockKnock is focused on persistently installed software already on the Mac. App Trust Preview is different because it is built around one local pre-open/pre-install report for multiple formats: apps, PKGs, DMGs, executables, and scripts. It combines signing and notarization context with privacy permissions, quick privacy settings buttons, architecture and bundle size details, bundled components, package scripts, framework and technology detection, report customization, and CLI export. So I do not see it as a replacement for those tools. It is a different workflow, select something before you trust it, get a readable local report that explains the technical signals in plain language, and decide whether it deserves a closer look. Developer information I am not hiding behind a company name or an anonymous account. My name is Ihor July, and you can find my other projects by searching for "Ighor July". I am also the developer of DockLock Lite, my first-of-its-kind macOS tool for locking the Dock to a chosen display. I made Parall.app, my second first-of-its-kind macOS tool, for launching Mac apps with different accounts at the same time. I also made LockLines.app, a macOS utility for designing Lock Screen messages. My background is cybersecurity, bug bounty research, indie development, and native app development. I hack for good and help large companies find and fix security issues. Reverse engineering has always been a lot of fun for me. Now I am applying the same mindset to macOS itself: finding long-standing workflow limitations, hacking around them cleanly, and turning those solutions into Mac apps. App Trust Preview was built to solve my own needs first, but it has expanded way beyond what I originally imagined thanks to feedback from the Reddit community. More broadly, my main work is building first-of-its-kind Mac utilities that solve specific problems Apple does not solve directly. Buying any of my apps helps me keep working on that full time. I mostly work with C++, Qt, Objective-C, and macOS internals. I have a strict principle for local utility apps: software that performs local actions should never connect to the internet without an explicit user action. This principle is applied across my apps. Social profiles: Medium: https://ighor.medium.com LinkedIn: https://linkedin.com/in/ighor HackerOne: https://hackerone.com/ighor Personal Blog: https://reverseeverything.com AI note I use AI as a support tool for bug research, typo detection, and code completion. I also use AI to translate my apps into supported languages, including English, since English is not my native language. One component, which is open-source, the internal bash script helper was made with AI based on my own research and command testing, and it has been manually tested carefully. I also like to use AI for UI testing proof-of-concepts. If I like the idea, I recreate everything from scratch myself in Objective-C. Price App Trust Preview is $2.99 on the Mac App Store. Website: https://apptrustpreview.com Mac App Store: https://apps.apple.com/app/apple-store/id6767974737
已收集讨论
The privacy permission view sounds especially useful. I often find myself jumping through multiple System Settings sections just to understand what an app already has access to. Do you plan to add a way to compare two versions of the same app and highlight changes in permissions, bundled components, signing information, or embedded frameworks?
Sounds like a good feature! I’ll add that in the next updates.
Maybe support for virustotal scan?
VirusTotal API has restrictions for paid apps. They require an investment of $5000 in order to make proper integration. I contacted them to clear out the way by making users provide their API key, but got no answer. In the next update, I will add buttons to copy/open Virustotal links so if the target app is already scanned by them, it will make it easier for you to inspect.
Added hashes in App Trust Preview v1.2.2! You can now copy checksums and open VirusTotal links.
Sounds nice indeed, but we'd have to trust you and the App Store review process . I'm not suggesting not to, but your application might benefit from being open source . Few people I reckon would want to build it themselves just to save 5 USD.
The internal core inspection component is already open source here: github.com/JulyIghor/AppTrustPreview You do not need to trust every app equally. If a sandboxed app has no network entitlement , macOS does not allow it to make direct network connections, so it cannot send data anywhere that way even if it tried. App Trust Preview itself is built this way, and one of its goals is to help identify other apps that also do not have direct network access.
This looks like it could be really good. Does the MAS version (and sandboxing) not prevent some analysis?
Yes. It will prompt you to install an optional script which lifts those limitations. That script is bundled with the app, and you don’t need to download it separately. Instead, it will be a one-click install. That script is also open source and available here: https://github.com/JulyIghor/AppTrustPreview
Nice one, I am always paranoid about any app I get via internet, this might fix it.
It is now even better. Latest update of App Trust Preview is doing reverse-engineering for you! It finds any URLs and domains that an app could connect to. For the first time, you can find out if an app is going to send analytics or telemetry even before you start it!
Exportable JSON is the part that turns this from a viewer into a trust record. I would include the exact path, SHA-256, signing identity and team ID, notarization result, scan timestamp, and app version in every report. A later scan could then show a compact diff: signature, entitlements, privacy usage strings, embedded helpers, frameworks, and installer scripts changed. Reports should also say which checks ran locally and which opened an external service, so inspecting a sample never becomes an invisible upload.
Thanks, I’ll improve the output based on your feedback. Also, there are no external services used, the app has no network access and is not doing any network requests.
How can I know that you are trustworthy though? How is it actually validating the trust of the application?
App Trust Preview's own trust story is that it is sandboxed, has no network entitlement, and the external inspection helper it uses is open source here: github.com/JulyIghor/AppTrustPreview The app performs local analysis without uploading the inspected software. As for validating other apps, it is not antivirus and does not claim that something is safe. It collects verifiable macOS signals and explains them in readable language: code signature, certificate chain, notarization and Gatekeeper assessment, sandboxing, hardened runtime, entitlements, privacy purpose strings, network access declarations, internal helpers, package contents, disk image contents, executables, scripts, and other metadata. So "trust" here means: what can macOS verify about this file, who signed it, what protections it uses, what it may access, and whether anything deserves a closer look.
Can we Trust Preview the Trust Preview app? 🙂
If you do so, it will detect that the app is fully sandboxed and cannot have access to the Internet. That would make it say that safety signals are good.
PDF-support would be nice. Global format, everybody uses it and yet it can contain a house full rats.
PDF support is already there!
How Safe is this?
The main App Trust Preview app is sandboxed and has no network entitlement, so it cannot make direct internet connections or upload inspected files anywhere. The app does the analysis locally on your Mac. It does not launch or modify the inspected app, package, disk image, executable, or script. The external helper tool used for deeper local inspection is open source here: https://github.com/JulyIghor/AppTrustPreview So the most security-sensitive inspection part can be reviewed directly.
I’m curious about is macOS trust signal reliability. For example, certificate revocation status, notarization flags, and privacy permission state can sometimes lag or differ depending on system version and context. Do you treat those as raw system-provided facts, or do you apply any normalization/scoring layer on top to avoid inconsistent interpretations?
Certificate revocation and Gatekeeper or notarization assessment can depend on macOS trust services, cached results, network availability, file type, quarantine state, and which assessment mode macOS applies. App Trust Preview treats those as system-provided signals and does not silently convert unknown, unavailable, not applicable, rejected, or inconsistent results into a clean result. TCC privacy decisions are different. When App Trust Preview has permission to read the local TCC databases, it reads the saved macOS privacy decisions directly and reports the current saved state, such as allowed, denied, limited, add-only, or not determined. There is no extra delay or scoring layer added by App Trust Preview there.
Good stuff. Ideally it would monitor as a little helper and warn on install/download/execution. Apple should've built this in. Congrats. Also for the fair pricing.
Thanks! I am already working on such feature