Links get copied from browsers, Messages, Slack, email, terminals, and native apps. A browser extension only sees one part of that. PlainLink watches the macOS clipboard and removes known tracking parameters before the URL is pasted anywhere else.
The menu bar app is native Swift/AppKit, while the cleaning engine, clipboard watcher, installer, diagnostics, and restore functionality are written in Rust. It runs locally, makes no network requests, requires no account, and does not depend on a browser extension.
The part I cared most about was avoiding broken links. PlainLink only removes parameters explicitly covered by a rule. Unknown parameters stay untouched, including parameters that may belong to invite links, signed URLs, checkout sessions, playlists, timestamps, or password resets.
Before changing the clipboard, it stores the original URL so it can be restored from the menu. Rule behaviour is also covered by fixtures, and the rules themselves are intended to remain readable enough for community contributions.
The longer-term goal is an ad-block-list-style community ruleset for copied-link tracking parameters, but with conservative behaviour by default.
The current build is an Apple Silicon developer preview. It is ad-hoc signed rather than Apple-notarized, so the README documents the Gatekeeper installation step. Building from source is also supported.
I’d especially value reports of false positives, services or parameters I’ve missed, and opinions on whether clipboard-level cleaning is the right layer for this.
How It Works: 1. Interception: Uses OpenCode's TypeScript plugin system ("tool.execute.before") to intercept candidate tool calls (bash, read, edit, write) before they run. 2. Sidecar Verification: Passes tool parameters to a local Python daemon running guardians.verify(). 3. Formal Verification (~1.5ms): Evaluates Z3 path containment (blocking path traversal like ../../../../etc/passwd), secret taint tracking (preventing .env data from flowing to output files or shell commands), and security automata (enforcing read-before-edit rules). 4. Pre-Execution Abort: If a violation is flagged, the plugin throws an exception to block execution before any side effects happen on disk, forcing the agent to self-correct.
The repository links metareflection/guardians directly as a Git submodule (guardians-core), keeping the core verifier untouched and synced with upstream updates.
Repo & Setup Instructions: https://github.com/albertjoseph0/opencode-plugin-guardians
I would love to hear your thoughts or feedback!