MacFilter 0.1 — free, early release

Checks what you paste into AI tools, before it leaves your Mac.

Press ⌘V into Claude, ChatGPT, Cursor, Copilot, or an AI site in your browser. If the clipboard contains credentials, payment details, or personal data, the paste is stopped and you choose: redact, paste anyway, or cancel.

MacFilter makes no network connections — not for telemetry, not for detection, not for updates. Detection runs entirely on-device, and that's verifiable with otool/nm, not just a claim — see the FAQ below.

Free, no account — macOS 13+, Apple Silicon & Intel.

MacFilter's Paste Blocked panel: 1 critical found — AWS access key ID — in what you're pasting into ChatGPT, with a redacted preview and Cancel / Paste Original / Redact & Paste options
A real AWS key, actually caught on its way into ChatGPT — not a mockup.
MacFilter's Settings window showing the About panel: 'Runs entirely on-device', the otool/nm verification commands, and a Copy Verification Commands button
Verify it yourself, right from Settings — not just a claim on this page.

The same AWS key, caught going into four different AI destinations

One clipboard, one live-looking AWS access key, pasted with ⌘V into four separate real destinations — the native Claude app, and ChatGPT, Grok, and Perplexity in the browser. Same detector, same panel, same "nothing has left this Mac," every time.

MacFilter's Paste Blocked panel appearing over the native Claude desktop app, having caught an AWS access key ID
Claude (native app)
MacFilter's Paste Blocked panel appearing over chatgpt.com in the browser, having caught an AWS access key ID
ChatGPT (browser)
MacFilter's Paste Blocked panel appearing over grok.com in the browser, having caught an AWS access key ID
Grok (browser)
MacFilter's Paste Blocked panel appearing over perplexity.ai in the browser, having caught an AWS access key ID
Perplexity (browser)
Status: early release, running. The detection core has 50 tests, and Accessibility/Input Monitoring grants survive rebuilds on the dev machine. Live interception has been verified end-to-end against four real destinations (screenshots above) — a live-looking AWS key was caught going into each — though that's the developer's own manual testing, not yet field experience from real users at scale. Known gaps: browser detection is title-based only, drag-and-drop/right-click paste aren't intercepted, terminal-based AI agents (Claude Code, Aider, etc.) aren't a recognised surface yet, and it's text-only — a pasted screenshot isn't inspected. Full list on GitHub →

Every product that solves this routes your data through a vendor's cloud

Verifiably offline

No networking framework is even linked

otool -L and nm -u against the built binary both come back empty for any networking symbol — the app links AppKit, CoreGraphics, ApplicationServices, IOKit and Foundation, nothing more.

Two conditions, or nothing happens

Almost all the time, MacFilter does nothing at all

It only looks at a paste when the frontmost app is a recognised AI surface AND the clipboard matches a detector — Mail, Slack, a code editor, a terminal are never touched.

Checksummed, not guessed

A card number, IBAN or PPSN must pass its real checksum

Luhn for cards, mod-97 for IBANs, a real check-character algorithm for Irish PPSNs — a 16-digit order reference is not flagged as a card number.

Redact, don't just warn

The default action fixes the paste, not just flags it

Redact & Paste (the default, ⏎) sends a cleaned version with sensitive spans replaced, then restores your original clipboard right after.

Runs 100% locally — nothing you use it on ever leaves your Mac
No account, no trial timer, no nagging
Native Swift/AppKit — an active CGEventTap, not a browser extension
Free, and stays free while this app is still proving itself with real users

Every feature, explained — click around

What MacFilter actually catches today, and how the panel works when it does.

Checksum-validated, not pattern-guessed

The checksums are the point — flagging a 16-digit order reference as a card number trains people to click through warnings, which is the failure mode that kills tools in this category. The Irish PPSN detector is deliberate: it's the most sensitive identifier in Irish payroll/health data, and no US-built DLP tool ships it.

  • Critical — private key blocks, AWS/Anthropic/OpenAI/GitHub/Slack/Google keys, JWTs, password/api_key assignments
  • High — IBAN (mod-97 checksum), payment cards (Luhn), Irish PPSN (check-character algorithm)
  • Medium — email addresses, Irish mobile numbers

Three choices, every time something's flagged

Every decision is logged locally — never the pasted text itself, just what kind of thing was found and what you chose.

  • Redact & Paste (default, ⏎) — sends a cleaned version, then restores your real clipboard
  • Paste Original — for false positives (a long invoice number, a password: in a paragraph about passwords)
  • Cancel (Esc) — nothing is pasted

Only arms for a recognised AI surface

Pasting into Mail, Slack, a code editor, or a terminal is never touched — there's no ongoing scan and no background clipboard history.

  • Native bundle-ID allowlist: Claude, ChatGPT, Cursor, Copilot
  • Browsers: the focused window's title only — never page content
  • ⌘⇧V is left alone so ClipKeep/MacShelf's paste picker still works

How it works

1

Grant two permissions

Input Monitoring lets the event tap see ⌘V; Accessibility lets it suppress the paste and read a browser tab's title. It stays inactive until both are granted.

2

Paste as normal

MacFilter only looks when the frontmost app is a recognised AI surface — everything else is untouched.

3

Choose, if flagged

Redact & Paste, Paste Original, or Cancel — nothing happens silently.

Questions people actually ask

How do I install it?

./setup-signing.sh once (creates a stable local signing identity so grants survive rebuilds), then ./build.sh, then open MacFilter.app. Requires macOS 13+.

Is MacFilter signed and notarized?

Yes — the released DMG is signed with a Developer ID and notarized by Apple, and Gatekeeper accepts it (spctl -a -vv MacFilter.app returns "accepted, source=Notarized Developer ID"). setup-signing.sh is a separate, local-only step that keeps TCC grants stable across rebuilds on the developer's own machine — it doesn't affect what ships.

Why is it free with no Pro tier?

Live interception is now verified end-to-end, but only against the developer's own manual testing (see the status callout above) — it hasn't had real users behind it yet. Charging for something without real-world usage data behind it would be premature. Monetization is a deliberately deferred later pass, not an oversight.

Does MacFilter really make no network connections?

Yes — verifiable, not a promise. otool -L MacFilter.app/Contents/MacOS/MacFilter | grep -i -E "network|cfnetwork" and nm -u ... | grep -i -E "URLSession|socket|getaddrinfo" both return nothing on the built binary.

What does it not catch yet?

Screenshots, drag-and-drop, right-click → Paste, and terminal-based AI agents (a key pasted into a CLI coding agent currently goes straight through unchecked) — see the README's Known Gaps section for the full, honest list.

Which Macs does it support?

macOS 13+. No dependencies, no package manager, no Xcode project — just swiftc.

How do I report a bug or request a feature?

Open an issue on the GitHub repo, or use the contact form below.

Try it — it's free

Download it now, no account needed. It's an early release — live interception is proven end-to-end, but not yet by real-world usage at scale. See the status callout above for what's proven and what isn't yet.