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