Skip to main content
Each template is a self-contained directory under docs/policies/templates/. It contains a policy.ts file with the permission definitions and a README.md with the scenario, expected decisions, and notes on engine limitations where relevant. Seed the exported arrays into kavach_permissions (and the supporting tables noted in each README), then call engine.evaluate() against them.

Templates

#SlugSummary
01tool-allowlistOne agent, only tools on an explicit allowlist can execute
02principal-and-delegatePrincipal owns read+write; delegated agent gets read-only with expiry
03org-scoped-agentsMulti-tenant: each agent sees only its own org’s resources
04budget-gatedHard cap on calls per hour via maxCallsPerHour
05step-up-for-writesReads are free; writes and deletes require human approval
06friends-of-a-friend-rebacDocument access via ReBAC graph tuples with concrete IDs
07business-hours-onlyTool calls gated to a server-local HH:MM window

How to use a template

  1. Copy policy.ts from the template directory into your project.
  2. Seed the exported permission arrays into kavach_permissions using your database adapter.
  3. For templates that need supporting rows (delegation chains, ReBAC tuples, rate-limit counters), follow the instructions in the template’s README.md.
  4. Call engine.evaluate({ subject, action, resource }) in your request handler.
The tests under packages/core/tests/policies/templates/ show exactly how each template behaves and can serve as integration tests in your own suite.