On this page
- The policy said Permit. The payment still broke policy.
- Is a policy decision the same as enforcement?
- A decision is more than Permit or Deny
- Conditions must actually run
- Where should policy be enforced in an AI agent workflow?
- Policy has to survive time
- Approval is a policy condition, not an email
- Can a prompt enforce policy?
- Distributed enforcement, one meaning
- A decision log isn't proof of enforcement
- Common anti-patterns
- Ten rules for runtime policy enforcement
- The result: policy becomes behavior
- Frequently asked questions
- How Frozion turns policy decisions into enforced outcomes
- Sources
Runtime policy enforcement means a policy decision is bound to the exact action it approved, its conditions are carried to every step that must honor them, and it's checked again right before the change if anything material has moved. A logged Permit proves what was decided, not what actually happened.
The policy said Permit. The payment still broke policy.
A manufacturer's procurement analyst asks for a corrected payment on a disputed invoice. The application gathers the invoice, purchase order, supplier record and verified bank account. A model extracts the correction, and a calculation sets the payable amount at $48,000.
Policy is checked. The result is Permit, with conditions: an eligible manager must approve; pay only the verified account; keep the amount at or below $50,000; re-evaluate if the amount, beneficiary or legal entity changes; keep the evidence.
A manager approves the exact $48,000 proposal. The work then waits for the next payment window. During the wait, a downstream mapping applies a tax adjustment and the payload becomes $52,800. Nothing about the workflow's shape changed. The business proposition did.
When the work resumes, the runtime sees a stored Permit and a completed approval and treats both as booleans. A worker with a broad service credential calls the treasury API. It pays $52,800 and returns success.
Every component did its job. The policy engine answered correctly for the facts it saw, the manager approved what was shown, the API executed what it received, and the trace has no errors. The audit trail holds a valid Permit and a valid approval, and no evidence that the final action satisfied either.
Is a policy decision the same as enforcement?
No. A decision says what should be allowed for one specific proposition. Enforcement is the step that actually stops, changes or lets through the action, and proves that only the approved action happened.
Authorization standards have long split these roles. A policy decision point evaluates facts against rules. A policy enforcement point sits where the action can actually be controlled and applies the result. Administration manages the rules; information sources supply the facts.
That split is healthy, because rules and application code change for different reasons. It becomes dangerous when an application treats "we called the policy service" as the end of governance. A decision applies to a proposition: this actor, doing this action, on this record, for this purpose, in this state. Change any of those and the decision may no longer apply.
Agents stretch the gap between decision and action. Model calls, context assembly, human review, queues, sub-workflows, retries, mappings and multi-day waits all sit between the check and the change. One early check can't govern all of that unless the runtime keeps exactly what was decided and confirms it still applies at the step that creates the effect.
| Role | What it does | What it means for an agent workflow |
|---|---|---|
| Administration | Writes, versions and approves rules | Each workflow version names the rules it runs under |
| Information | Supplies facts about actor, record, action, state | Fact sources, freshness and failure behavior are explicit |
| Decision | Evaluates and returns a result with conditions | The result is a structured record, not a boolean |
| Enforcement | Controls the step and applies the result | Declared at retrieval, routing, approval, resume and every write |
A decision is more than Permit or Deny
Reducing authorization to allowed = true throws away what you need to enforce it. Standards such as XACML already return decisions with obligations and advice. In an agent workflow, the decision also needs to be tied to the exact thing it governed.
| Part | Example | Why it matters |
|---|---|---|
| Outcome | Permit, Deny, Not applicable, Indeterminate | Errors and missing rules don't become silent permission |
| Rule identity | Policy set and revision | Explains which approved rules produced the result |
| Proposition | Actor, tenant, record, action, purpose | Can't be reused for a different actor or object |
| Binding | Workflow version, case, proposal fingerprint, record revision | Ties the decision to this exact proposal |
| Conditions | Approval, masking, amount cap, private model, step-up sign-in | What must happen for the decision to stay valid |
| Validity | Expiry, freshness, re-evaluation triggers | Marks when a stored decision goes stale |
Conditions must actually run
A policy condition (an "obligation" in standards language) isn't a note attached to a Permit. It's something the system must do for the Permit to hold: redact fields before a model call, require a second approver, cap an amount, use a private deployment, keep a receipt, re-check at commit.
One decision often needs several steps to honor it. Context assembly removes restricted data, model routing picks an eligible region, the approval step enforces separation of duties, and the write step caps the amount. So the runtime has to split the conditions, send each to a step that can enforce it, and refuse to advance if any mandatory condition can't be met.
Where should policy be enforced in an AI agent workflow?
At every step that can disclose data, change what a model sees, choose a tool, record an approval, resume after a wait or change a system of record. A single gateway at the front door can't control any of the later steps.
| Enforcement point | Question to answer | Possible action |
|---|---|---|
| Data access and retrieval | May this actor see this record for this purpose? | Filter, deny, redact, narrow scope |
| Context assembly | May this information reach this model? | Exclude, mask, summarize, route privately |
| Model routing | Is this model, provider or region allowed? | Choose an eligible target, use a deterministic path, escalate |
| Tool exposure | Which tools may the agent even propose? | Hide ineligible tools, limit parameter ranges |
| Human approval | Who must review which exact proposal? | Assign an eligible reviewer, bind the fingerprint, require step-up |
| Resume after a wait | Do the decision, approval and record state still hold? | Re-evaluate, reapprove, expire or continue |
| Write to a system of record | May this exact action happen now? | Validate, cap, deny or commit |
| Storage and output | Where may the result and evidence go? | Redact, retain, route, restrict inspection |
The tool exposure and write rows are where most agent incidents land. For a fuller treatment of the tool layer, see governing AI agent tool calls.

Policy has to survive time
A decision has a decision time. Enforcement happens later, and the real-world effect later still. Between them sit seconds, days, a human review or an ambiguous callback. In that interval the actor's authority can expire, the rules can change, the record can be updated, the proposal can be recalculated, or another case can make a competing change.
Neither "always use the original rules" nor "always use the latest" is correct. A regulated calculation may intentionally stay on the rules it started under; a spending limit should reflect today's. Each workflow version should declare which facts stay bound to the past and which must be rechecked now.
Typical re-evaluation triggers:
- a change of actor, delegation, tenant, legal entity, record, action or purpose;
- a change in amount, beneficiary, terms or evidence;
- a newer revision of the target record, or a competing change to it;
- a rule, approval, model route or classification change declared material;
- expiry, revocation or a step-up requirement;
- an uncertain earlier outcome that must be reconciled before another attempt (see retries and idempotency).
In the payment example, the tax adjustment changed the amount. That should have invalidated both the decision and the approval and sent the case back for review.
Approval is a policy condition, not an email
When policy calls for human judgment, the approval has to be durable workflow state, not a notification. Keep the exact proposal and evidence shown, the approver and their authority, the separation-of-duties result, the rule version, the expiry, and the specific action the approval permits. If the amount, beneficiary, record, legal entity, contract text or evidence changes materially, the approval no longer satisfies the condition. The work returns to review. For more on this, see human-in-the-loop approval.
Can a prompt enforce policy?
No. A prompt can shape what a model tries to do, but it can't prevent or prove anything. Policy has to be enforced by the runtime around the model, at the steps that touch data and systems.
You can tell a model not to reveal restricted data, not to exceed a limit, or to ask for approval before using a tool. That may improve behavior. But the model can misread the instruction, be steered by content it retrieved, produce an invalid tool request, or decide a review is unnecessary. The OWASP agentic risks list goal hijack and tool misuse for exactly this reason.
So an agent's plan or tool call should enter the runtime as data: a proposal. The enforcement point then checks the delegated authority, record, action, purpose, proposal and state before anything happens. Models recommend. The application's authority decides.
Distributed enforcement, one meaning
Sub-workflows, async workers and external services often have their own enforcement points, and that's good: enforcement belongs near the thing it controls. But distribution can't mean each component inventing its own reading of the rules. The workflow definition should make the applicable rules, required facts, condition meanings and evidence expectations explicit.
A child workflow can't reuse a parent's decision just because it shares a tenant or service identity. A decision bound to one record, action or proposal stays bound to it. And when a downstream API can't understand delegated authority or conditions, the runtime must enforce them before the call and record enough to link the business authority to the effect.
Caching decisions is fine when the cache key includes every input that matters: tenant, record, proposal, rule version, time and assurance level. The conditions travel with the cached result. A cache that stores only "Permit" discards the very conditions that made it valid.
A decision log isn't proof of enforcement
A decision log shows what the policy engine received and returned. That's one layer. You also need to show what the enforcement point actually did, and what happened in the real world.
| Evidence layer | Question it answers | What it holds |
|---|---|---|
| Decision | What did policy decide, from which facts and rules? | Decision ID, rule revision, proposition, outcome, conditions |
| Enforcement | What did the runtime allow, block, change or escalate? | Step, decision reference, payload fingerprint, condition results |
| Effect | What actually changed in the target system? | Operation ID, confirmation from the system of record, resulting revision |
With all three linked, an auditor can follow one line from the rule to the confirmed change. Without the second and third, the payment case looks clean on paper.

Common anti-patterns
| Anti-pattern | Why it fails | What to do instead |
|---|---|---|
| Boolean-only authorization | Loses conditions, scope and validity | Store a structured decision record |
| Policy checked only at the front door | Later retrieval, routing, resume and writes go unchecked | Declare enforcement at every consequential step |
| Permit with ignored conditions | Silently changes the decision | Meet every condition, or stop before the effect |
| Decide once, commit days later | Amount, record or authority changed meanwhile | Re-evaluate on material change and before the write |
| Prompt as policy | A model instruction can't block or prove anything | Enforce in the runtime |
| Tool visibility equals permission | Callable isn't allowed for this actor and state | Authorize each proposed tool call |
| Service credential replaces business authority | The API checks the worker, not the proposition | Check delegated authority right before the effect |
| Approval detached from the proposal | Reviewer approves one thing, runtime does another | Bind approval to the exact fingerprint |
Ten rules for runtime policy enforcement
- Declare an enforcement point at every step that can disclose, decide or change.
- Bind each decision to the exact actor, record, action, purpose and proposal.
- Store decisions as structured records, never a single boolean.
- Treat conditions as work that must run; if one can't, stop.
- Re-evaluate whenever anything material changes, and before the write.
- Bind human approvals to the exact proposal and rule version.
- Treat prompts, plans and tool calls from models as proposals.
- Cache decisions only with every material input in the key, conditions included.
- Record the decision, the enforcement and the confirmed effect, linked.
- Make it visible where policy is decided, where it's enforced and what proves it.
The result: policy becomes behavior
Policy can't stay a detached rules service around an opaque process. The application has to keep the proposition policy evaluated, carry its conditions to the steps that must honor them, enforce it against the exact action, and keep evidence of what happened.
That doesn't mean every action is centrally approved or every step calls one service. It means the runtime can't lose the policy meaning that made an action legitimate. A policy decision says what should be allowed. Enforcement at run time proves that only that happened.
Frequently asked questions
What is the difference between a policy decision point and an enforcement point?
A decision point evaluates facts against policy and returns a result. An enforcement point sits at the step that can actually stop or change the action and applies that result. Agent workflows need several enforcement points, each close to the data, model, tool or record it controls.
Can a system prompt enforce policy for an AI agent?
It can shape behavior, but it can't enforce anything. A model can misread instructions, be steered by untrusted content or skip a step it thinks is unnecessary. Treat prompts as guidance and enforce data access, tool use and side effects in the runtime.
When should policy be re-evaluated in an agent workflow?
Re-evaluate whenever something material changes between decision and action: the amount, beneficiary, record, actor, purpose, policy version or approval. In long-running work that usually means checking again on resume and immediately before the change is committed.
How does this work for agents we already run?
Route the agent's tool calls through a governed runtime over MCP or HTTPS. Each call is checked against policy before it runs and its result is checked after, with the decision, conditions and confirmed outcome recorded together, without rewriting the agent.
How Frozion turns policy decisions into enforced outcomes
In Frozion, policy is enforced before and after every step, not once at the front door. Rules are written in the Visual Policy Builder and decide with history from the Feature Store: counts, totals and status over time. When a rule calls for a person, the HITL Inbox binds the approval to the exact revision reviewed, and authority is rechecked when paused work resumes, right before the change. Each decision lands in one tamper-evident record: the rule, the facts, the approval, the attempt and the confirmed outcome.
Sources
- NIST SP 800-207, Zero Trust ArchitecturePolicy decision and enforcement points; no implicit trust.
- NIST SP 800-207A, Zero Trust Model for Cloud-Native ApplicationsGranular, distributed application-level enforcement.
- NIST SP 800-162, Attribute Based Access ControlDecisions over subject, object, operation and environment.
- OASIS XACML 3.0 Core SpecificationDecision, enforcement, obligations and advice.
- OWASP API5:2023 Broken Function Level AuthorizationA reachable function isn't a permitted function.
- NIST SP 800-53 Rev. 5Access enforcement, audit and accountability.
- OWASP Top 10 for Agentic Applications (2026)Goal hijack and tool misuse that prompts alone don't stop.
- McKinsey, Building the foundations for agentic AI at scale (2026)Calls for a shared execution layer that enforces enterprise rules and guardrails.
- NIST AI Risk Management FrameworkLifecycle governance for AI systems.
- W3C PROV-O: The PROV OntologyNeutral provenance relationships.
More in Governing AI agents
Identity & access 3
Runtime policy 3
Tools & MCP 1
Other topics



