01Gate at the tool-call boundary
Belay wires into your agents where it counts: every tool call, before it runs. Claude Code and Codex get native PreToolUse/PostToolUse hooks; any MCP server can be wrapped so its tools/call requests are gated too. One policy boundary, in front of everything the agent tries to do.
02Deterministic, sub-100ms, no LLM
The decision engine is compiled-in rules, not a model. No network round-trip and no language model in the hot path — just a fast, repeatable verdict in under 100 milliseconds. And it is fail-closed: a timeout or an error becomes a deny, never an accidental allow.
03You decide the gray areas
Clear-cut danger is blocked outright. For the ambiguous-but-risky calls, Belay pauses the agent and asks you — right in your terminal, browser, or chat app — with an inline Allow or Deny. Do not answer in time? It denies. Deny always wins.
04Scan before you install
The static scanner inspects code before it ever runs on your machine — patterns, AST, taint, YARA, and OSV analyzers combine into a provenance-weighted score and an install/run recommendation. It emits SARIF 2.1.0, so it drops straight into your CI code-scanning. The same scanner also covers agent skills, so a malicious skill gets caught before it is trusted.
05A log you can prove was not touched
Every verdict is written to a hash-chained audit log: each row is cryptographically linked to the one before it, so tampering is detectable. Build a signed evidence pack on demand, and let planted honeypot canaries trip a critical alert the instant anything reads or exfiltrates them.
06Native firewall + a vuln DB with no keys
Host controls are built in, in pure Rust — a native firewall and a bundled vulnerability database, with no external tools to install and no NVD key to configure. Findings carry CISA KEV badges and EPSS exploit-probability percentages out of the box, and optional egress destination enrichment (reverse-DNS, ASN, owner, country) is display-only — it never gates.
07Explain & Advise
Every verdict carries a plain-English explanation: why it is risky, and what to do instead. Turn on an optional BYOK AI explainer — local Ollama or a cloud provider of your choice — for a deeper look. Off by default, advisory only, and secrets/host paths are redacted before anything is sent.
08Two-way approvals over chat
Answer Allow/Deny prompts from Telegram, Discord, WhatsApp, Matrix, Mattermost, or Slack — not just the terminal. ntfy, Teams, WeCom, and generic webhooks get notify-only alerts. Pairing-code enrollment keeps it owner-gated, and a prompt that goes stale is auto-denied.