Govern

PDP / Cedar

Runkite does not ship a proprietary policy product. Point policy.webhook at your PDP; the plane fail-closes and enforces allow / deny / pending on connectors.

What it is

A sync decision webhook: the plane POSTs policy.decide JSON (optional HMAC), expects allow / deny / pending, and applies the result on connector tool paths. Cedar, OPA, ABAC, or a 50-line script all work if they speak the envelope.

Why it is here

Enterprises already have a PDP. The plane’s job is to gate side effects and audit, not to replace your policy stack. Mandatory HITL still overrides an “allow” for defense in depth.

How to implement

  1. Enable policy (presence of the section fail-closes connector access).
  2. For a simple amount/destination gate with no PDP, add policy.predicates in langgraph.json: see Grants & HITL. Restart the control plane.
  3. For everything else, set policy.webhook.url (+ optional secret / timeout). The webhook body now includes data.args + data.args_digest on tools/call.
  4. Start from examples/policy_webhook/ (deny / pending + HMAC self-check).
  5. Layer grants + mandatory HITL in Admin; watch Pending / Audit when the PDP or a predicate returns pending.
"policy": {
  "default_effect": "deny",
  "webhook": {
    "url": "http://127.0.0.1:8099/decide",
    "secret": "dev-policy-secret",
    "timeout_ms": 2000
  }
}

In the product

Admin → Grants: durable connector overlays next to your PDP / webhook Decide
Runkite Admin Policy grants page

What to expect

Reference: docs/trust-governance.md · Grants & HITL · Kill & break-glass