Security
Zero egress, and how to check it yourself
What is enforced, what is not, and answers for a security review. Written to be handed to an IT or security reviewer. Nothing here requires trusting us.
The short answers
| Question | Answer |
|---|---|
| Where are documents processed? | On the user's device, in memory. |
| Where are documents stored by the app? | Nowhere. The app saves only the output file, where the user chooses. |
| Does anything go to the vendor? | No. No documents, file names, usage data, crash reports or license checks. |
| Does the app use the network? | No. It makes no connections, and it is built and configured so that it cannot. |
| Are there user accounts? | No. No login, no passwords, no single sign-on. |
| Does the vendor host anything? | No. There is no backend. |
| Is there AI? | No generative AI. Text recognition, planned for Version 1.1, will use the operating system's on-device engine. |
What enforces zero egress
Three layers on every platform, and a fourth from the operating system where the platform allows it.
| Layer | Windows | macOS | iPhone, iPad | Android |
|---|---|---|---|---|
| Source rule: the build fails if the app's code imports networking | Yes | Yes | Yes | Yes |
| Runtime guard: the app's own connections throw an error | Yes | Yes, verified | Yes | Yes |
| Operating system refuses connections from the app | Firewall rule added by the installer (Version 1.0) | App Sandbox with no network entitlement, verified on the release build | Not available on this platform | No internet permission, verified on the release build |
| Build check: fails if permissions or entitlements ever include network access | n/a | Yes | n/a | Yes |
Verify it yourself
The macOS and Android checks have been run against the current build. The Windows firewall rule arrives with the Version 1.0 installer.
In the app
Available nowOpen the System check from the shield icon. The line “Network guard” should read “The app refuses its own connection attempts.”
This is a quick confidence check, not independent proof, because it is the app reporting on itself. The checks beside it are independent.
macOS
VerifiedRead the app's entitlements, which are part of its signature:
codesign -d --entitlements :- "/Applications/AirGap Utils.app"Expect the app sandbox and user-selected file access, and no network.client or network.server entitlement. Without them, macOS denies every connection the app attempts.
Windows
Version 1.0The installer will add an outbound block rule. In PowerShell:
Get-NetFirewallRule -DisplayName "*AirGap*" | Format-List DisplayName, Direction, Action, EnabledA Windows desktop app cannot restrict its own network access the way a sandboxed Mac app can. An administrator can see the rule, and could remove it; the app's own guard remains in place regardless.
Android
Version 1.1In Settings, view the app's permissions: it should not list network access. For the package file itself:
aapt2 dump permissions app-release.apkExpect no android.permission.INTERNET. Without it, Android refuses to open a socket for the app.
iPhone and iPad
Version 1.1iOS does not offer a way for an app to give up network access, so the guarantee rests on the first two layers. Turn on App Privacy Report, use the app for a while, and review its network activity. It should show none.
Any platform: the disconnect test
Disconnect the computer from every network. Open the app, add files, run a tool, save the result and run the System check. Everything works exactly as it does when connected.
If you ever see a connection, that would be a serious defect. Tell us straight away with the destination, the time, the app version and the platform. Do not send any document.
What is not covered
Stated so a reviewer does not have to find it.
- A dependency contains unused networking code. The PDF library includes an HTTP client for loading documents from web addresses. The app never calls it, its hook is overridden to fail, and the runtime guard refuses it. On macOS and Android the operating system would refuse it as well.
- The runtime guard covers the app's own code. It does not intercept raw sockets or code inside native plugins. That is why the operating-system layer matters, and why iOS, which has no such layer, relies on the first two.
- Windows desktop apps cannot restrict themselves. On Windows the restriction is a firewall rule, which an administrator can see and could remove.
- The app cannot protect the original file. It stays wherever the user keeps it, with whatever protection that location has.
- The app does not prevent screenshots, printing or copying. It is a tool for the document's owner, not a rights-management system.
- A compromised computer is out of scope. Malware running as the same user can read anything the user can.
What the app keeps
| Item | Kept? |
|---|---|
| Documents, pages, thumbnails | No. In memory only, released when cleared or on exit. |
| Temporary files | None written by the app. On phones, the system file picker's temporary copy is deleted as soon as it is read. |
| Recent files list | None. |
| Passwords for protected PDFs | Never stored. The password prompt arrives with Version 1.0. |
| Logs | None in the current build. Version 1.0 adds a local diagnostic log with document names removed, which leaves the device only if the user sends it. |
| Settings and license | Version 1.0 stores preferences and the license file. Neither contains document data. |
Memory is released by the runtime rather than overwritten byte by byte. Wiping memory is best effort, and we do not claim otherwise.
Certificates and testing
Plain statements, because a reviewer will ask.
- We have no SOC 2 report or ISO 27001 certificate. A SOC 2 report covers a service that holds customer data, and we do not run one.
- An independent penetration test is planned before general availability. It has not been done yet.
- Code signing, Apple notarization, a signed checksum manifest and a software bill of materials arrive with the Version 1.0 kit.
- The largest attack surface is the PDF parser, because the app opens files that may be malformed or malicious. We use PDFium, which is maintained and security-tested as part of Chrome, and track its releases.
- We do not claim HIPAA, GDPR or any other compliance for you. We describe what the product does; your compliance is yours to decide.
Answers for security questionnaires
| Question | Answer |
|---|---|
| Is customer data stored in the cloud? | No. There is no cloud component. |
| Which sub-processors handle customer data? | None. No customer data leaves the device. |
| Is data encrypted in transit? | Not applicable. Nothing is transmitted. |
| Is data encrypted at rest? | The app stores no documents. Files the user saves are protected by the device's own disk encryption, such as BitLocker or FileVault, which you control. |
| Do you support SSO or MFA? | Not applicable. There are no accounts. |
| Who at the vendor can access our data? | Nobody. The vendor never receives it. |
| How are updates delivered? | As a signed kit that your IT team deploys. The app does not update itself. |
| Does the app require administrator rights? | Not to run. Installing follows your normal software deployment. |
| Does the app use AI or machine learning on our documents? | No generative AI. Nothing is used for training. |
Try it free on your own machines
Free trials are open to businesses. No account to create, and your documents never leave your devices while you try it.