Features
Platforms
Solutions
Compare
Resources

Security in Tarn

Tarn is written in Rust and draws its own interface. The web content runs in the system's engine, in its own sandboxed process, and never gets a line into the browser around it.

How Tarn protects you

Pages can't reach the browser
Web pages get no bridge into Tarn. Internal pages run in a separate configuration with bundled assets only, and web content cannot link to, embed or open them.
Only safe addresses open
http, https, about:blank and blob are allowed. data: never loads as a top-level page, javascript: is rejected when typed or pasted, and other apps' links ask first.
No way around a bad certificate
Tarn uses the system's trust evaluation and offers no click-through, at any Shield level.
Your network stays private
Public sites cannot send requests to your router, printer or other local devices, unless the page you opened is itself local.
Dangerous sites are stopped first
Malware, phishing and scam lists are checked on every navigation, including redirects and downloads, before the request is made. Tarn draws the warning page itself.
Signed lists, signed updates
Filter lists come as a bundle signed by a separate key and checked in the app, with size limits and the last good bundle kept. App updates are signed too, and signing keys never touch CI.
Careful downloads
File names are cleaned, files are quarantined and never opened automatically, and executable types get a warning.
Profiles stay apart
Site icons, suggestions, permissions, downloads and extensions are kept per profile. A private space lives in memory only.

The Shield levels

  • Standard, on by default: trackers and ads blocked, tracking parameters stripped, the local network out of reach.
  • Strict adds HTTPS-only and sends no cross-site referrer.
  • Lockdown turns off JavaScript and keeps no site data.

How the code is kept safe

  • Unsafe Rust is confined to two crates, each block documented with the rule it relies on and enforced by lint.
  • Dependencies are pinned and checked on every pull request for advisories, licences and sources.
  • Tarn opens no listening sockets, no remote-debugging port and no local HTTP API.

Who patches what

Who ships security fixes for each layer
LayerPatched byAutomatic?
WebKit (rendering, JavaScript, TLS)AppleYes, with macOS updates
Tarn itselfThe Tarn projectYes, through signed automatic updates
Filter lists and domain setsList maintainers, signed by CI dailyYes
ExtensionsTheir authorsOnly when you install a new version

What Tarn cannot do

  • A WebKit zero-day stays open until Apple ships a fix and you install it.
  • Deep fingerprinting protection and encrypted DNS inside the app are not possible on Apple's web view.
  • No blocker catches every ad: ads served from the same address as the content, or stitched into a video stream, get through.
  • Malware already running as your user can read what your user can read.

Report a vulnerability

Report privately through GitHub: open the repository's Security tab and choose Report a vulnerability. Please do not open a public issue.

  • We acknowledge reports within 3 working days.
  • For a high-severity issue in Tarn's own code, we aim to ship a fix within 7 days of confirming it.
  • You are credited in the release notes, unless you ask not to be.

WebKit, TLS and sandbox bugs belong to Apple at security.apple.com. The full threat model is docs/threat-model.md.

Last updated November 2026

Try Tarn on your Mac

No account to make and nothing sent home. macOS 14 or later; other platforms are in development.