Developers · Tool policy

Default-deny, written down.

A policy is a formal document, not a convention: which tools exist for an agent, what each may do, how secrets are handled, and what must be logged. The runtime enforces it at execution time, so the policy you review is the behavior you get.

The four surfaces

What a policy specifies

Registry & identity

Tools come from an approved registry: pinned server identity, validated configuration, and a typed projection of what the tool exposes. Configuration drift is detected before execution, not after.

Capability taxonomy

Grants are typed across tools, network, and secrets, with explicit deny and override semantics. query on a dashboard is a different grant from list on a cluster, and neither implies a write.

Secrets & egress

Credentials are held and injected by the runtime; they never enter the agent's context. Network egress is allowlisted per tool, with the host denying by default.

Audit obligations

The policy declares what must be logged for each grant. An action that can't satisfy its audit obligation doesn't execute, logging is a precondition, not best effort.

Fail closed

An out-of-policy call never runs. The denial is written to the ledger with the same fidelity as an execution, so attempted overreach is visible, not silent.

Precedence, formalized

Platform-wide constraints, runtime policy, and per-agent policy compose in a defined order, and the console can answer "why allowed" and "why denied" for any call.

In practice

A policy, and what it does at runtime

DECLARE

The whole grant fits on one screen

Read-only observability for an incident-triage agent: two tools, two capabilities, per-call audit. Everything not listed is denied, which means reviewing the policy is reviewing the blast radius.

policy.json
{
  "name": "observability-readonly",
  "tools": {
    "grafana":    { "caps": ["query"] },
    "kubernetes": { "caps": ["list", "describe"] }
  },
  "secrets": "runtime_held",
  "egress":  "allowlist",
  "audit":   "every_call"
}
ENFORCE

The same policy, seen from the ledger

Two calls inside the grant execute and are recorded; one outside it is denied and recorded. The agent's view and the auditor's view are the same view.

enforcement · ledger view
grafana.query · cap: query executed
k8s.describe · cap: describe executed
k8s.delete · no cap denied · logged

Write the grant. The runtime does the rest.

Declare tools, capabilities, secrets handling, and audit obligations once, and every agent call is checked against it, forever.