research
docs://contents>
docs/cedar-policy-gatewaydoc 16

Policy Gateway

The Policy Gateway is the plane's runtime enforcement point: a Cedar decision taken before every tool call, against the full step context. It is not a review step, not an advisory lint, and not a post-hoc report — it is on the only path from planner to executor.

The decision point

planner ──▶ proposed tool call
              │
              ▼
        Policy Gateway (Cedar)
              │
        ┌─────┴─────┐
      ALLOW         DENY
        │             │
        ▼             ▼
   schema gate     halt · park
   executor        decision + context recorded
Property Semantics
Timing Before execution, per proposed call
Scope Full step context: tool, parameters, workflow state, actor
Decision ALLOW proceeds; DENY halts the step and parks the workflow
Record Every evaluation is a policy_eval event, decision included
Deny path There is no override path — resolution is human, through the park

Policy attachment

Attachment Semantics
Step-level include The step declares whether it participates in evaluation; opting out requires an explicit include: false — an auditable decision, not an omission
Global set Workflow-wide policies applying to every participating step
Unset on EXECUTION Flagged at ingest — undeclared policy posture is an audit gap

Policy structure

Field Semantics
policy_id Policy identity, referenced by evaluation events
description Human-readable intent of the policy
rules Ordered rules: effect — ALLOW or DENY — with conditions

| Evaluation order | Rules evaluate in declared order; the first matching rule's effect decides | | Default | No matching rule → DENY — the fail-closed posture extends to policy resolution |

Conditions evaluate against the step context the gateway receives: tool identity, parameters, and workflow state. A parameter a policy constrains is a parameter the gateway sees before the call is made — which is the entire point of the placement.

{
  "policy_id": "pol_dd_evidence_readonly",
  "description": "Evidence collection in competitor_deep_dive is read-only: retrieval allowed, writes denied.",
  "rules": [
    {
      "effect": "ALLOW",
      "conditions": [
        { "field": "tool.tool_id", "op": "in", "value": ["web_search", "page_fetch", "doc_retrieve"] }
      ]
    },
    {
      "effect": "DENY",
      "conditions": [
        { "field": "tool.side_effect_class", "op": "neq", "value": "read-only" }
      ]
    }
  ]
}

Excerpt — policy record instance. Structure is contractual; values are per-deployment. The second rule constrains by the tool's declared side-effect class — the registry and the policy set speak the same vocabulary.

Fail-closed posture

An unavailable gateway means no tool call proceeds. Execution does not degrade to unchecked; it halts. The posture is deliberate: a governance layer that fails open is a governance layer that disappears exactly when infrastructure is having a bad day — the day it exists for.

CURRENT ARCHITECTURE NOTE — The Policy Gateway is currently embedded within the Core Execution Engine for single-workflow deployments. It centralizes as a standalone service for concurrent multi-workflow policy routing in production. The evaluation contract above is unchanged by the move; only the network boundary changes.