Skip to content

Writ

Agents do not need instructions. They need terms.

You give an agent a goal, a budget, permission to touch some things, some hard limits, and a definition of done. Then you hold the agent to those terms. That arrangement is a contract. Writ makes the contract a file.

writ: bug-fixer
mandate: "Failing test {failing_test} passes without breaking other tests."
grants:
- read: { paths: ["**/*"] }
- shell: { commands: ["pytest *"] }
- edit: { paths: ["src/**"] }
bounds:
iterations: 40
cost: $2.50
invariants:
- { layer: letter, untouched: "{failing_test_file}" }
satisfaction:
all:
- { layer: letter, run: "pytest -x -q", exit: 0 }

The model plans the work. The writ controls what the model can do. A runtime called the registrar examines each action before the action occurs, and writes the result to a record.

Write the terms

A writ has six parts: a mandate, grants, bounds, invariants, satisfaction, and remedies. Read about the structure.

Know each check

Each clause declares its check layer. A machine, a judge model, or a person makes the decision. Read about the layers.

Govern an agent you already have

The proxy applies grants to an MCP server. Your agent does not change. Read about the proxy.