apprval.md
Human approval for agent actions.
Agents now send emails, spend money, book things, and delete data. There is no diff to revert. approval.md is a file-based convention and runtime that gates side-effecting agent actions behind your sign-off — from a policy file you write, to your phone.
npm i -g approval-md
pre-release · spec first, runtime landing milestone by milestone
Try the loop
This is the whole product in one card. An agent declared what it wants to do; the policy says communicate.email.external is yours to decide.
Send deposit chaser to agency@example.co.uk
- class communicate.email.external · irreversible
- est. cost $0.02 · idempotency task-042:chaser
How it works
You write an APPROVAL.md — the enforced version of the permissions prose already living in AGENTS.md files everywhere. Agents declare side effects up front; deterministic policy decides what runs, what waits for you, and what gets sampled for review. Every decision lands in an append-only, hash-chained log.
# APPROVAL.md classes: read.*: { autonomy: autonomous } calendar.write.own: { autonomy: supervised } communicate.email.external: { autonomy: manual, approvers: [you] } financial.spend: { autonomy: manual, limits: { per_action_usd: 25 } } data.delete: { autonomy: manual }
Files are the interface, the log is the truth, the database is a cache. Tasks stay plain markdown — Backlog.md-compatible, one preserved frontmatter key. Approvals reach you wherever you are; Telegram is the reference channel.