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.

approval.requested · task-042 · agent:claude-admin ttl 24h

Send deposit chaser to agency@example.co.uk

$ approval log tail {"seq":17,"event":"approval.requested","task":"task-042","actor":"agent:claude-admin"}

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.

Read on