Internet-Draft Mission Runtime October 2026
McGuinness Expires 8 April 2027 [Page]
Workgroup:
Network Working Group
Internet-Draft:
draft-mcguinness-mission-runtime-latest
Published:
Intended Status:
Standards Track
Expires:
Author:
K. McGuinness
Independent

Mission-Bound Runtime Enforcement

Abstract

This document specifies runtime enforcement for Mission-Bound Authorization: within a declared enforcement scope, no consequential action executes until a policy enforcement point obtains a permit from a policy decision point that evaluates the action and its concrete parameters against the Mission established for the acting credential. The evaluation checks the Mission's approved authority and constraints, the actor context from the delegation chain, the Mission's current state, and the applicable Resource policy. The companion issuance profile binds issued authority to a durable, approved Mission but governs issuance and derivation only; without a point-of-use check, an active Mission becomes ambient authority for the actions an agent takes within a token's lifetime. This document is that check. It defines where enforcement sits, how a permit is bound to concrete parameters to close the time-of-check to time-of-use gap, the materialized policy view a decision can evaluate against, the fail-closed posture for constraints and consumption bounds, and the runtime evidence every decision and refusal path produces. For the high-consequence classes it further defines action-bound approval, credential custody in the mediating enforcement point rather than the agent, and two named enforcement claims with individually verifiable conditions: agent-compromise-resistant enforcement and trifecta containment.

About This Document

This note is to be removed before publishing as an RFC.

The latest revision of this draft can be found at https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-runtime.html. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-mcguinness-mission-runtime/.

Source for this draft and an issue tracker can be found at https://github.com/mcguinness/mission-bound-authorization.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 8 April 2027.

▲

Table of Contents

1. Introduction

Mission-Bound Authorization for OAuth 2.0 [I-D.draft-mcguinness-oauth-mission] (the "issuance profile") makes a Mission a first-class OAuth artifact: a structured, human-approved, integrity-bound task whose authority bounds and outlives every token an agent derives. It is deliberately an issuance-and-derivation layer: it governs what authority may exist, not what an agent does with it. Within a token's lifetime the agent exercises the issued authority freely, so a Mission that is never consulted at the point of use functions as ambient authority for every consequential action inside its envelope.

This document is the runtime layer that closes that gap for the action classes it covers: the enforcement half of the model, a per-action decision composed over the bounds the issuance profile already enforces at issuance. Its substance is one contract, stated once here and elaborated by the rest of the document.

1.1. Invariants, Not a Wire Protocol

This profile specifies enforcement invariants, not a wire protocol: it does not standardize a PDP decision API, an enforcement-scope discovery format, a Mission Status endpoint, or a portable audit receipt. It defines what a deployment MUST satisfy when it claims runtime Mission enforcement; the surfaces it deliberately leaves to deployments or future work are collected in Section 16.

Because the invariants are not a wire format, two conforming deployments do not thereby interoperate at the PEP-PDP boundary; the interoperable wire surface is supplied by a separately specified decision API binding (Section 15), the AuthZEN profile being [I-D.draft-mcguinness-mission-authzen]. That a wire format is a deployment choice does not make it an ad hoc one: the Runtime-Enforced level of the Mission Assurance Levels ([I-D.draft-mcguinness-mission-architecture]) requires a specified decision-API binding, of which the AuthZEN profile is the one this family defines; a deployment that uses a different decision API specifies that binding likewise (Section 15). This document is the architecture and invariant layer; the binding is the interoperability layer.

1.2. Relationship to Issuance and Derivation

The seam between an issuance-and-derivation layer and this document is exact. This document delivers four things an issuance-and-derivation layer names as out of scope, plus enforcement of the constraints that layer carries but does not evaluate:

  1. evaluation of a request's parameters against the Mission at the point of use (Section 7, Section 8);

  2. per-action runtime enforcement evidence (Section 11);

  3. binding of the invoked tool or function identity to the Mission's approved authority (Section 7);

  4. execution-time re-evaluation that closes the approval-to-execution (time-of-check to time-of-use) gap (Section 8);

and, additionally, the fail-closed treatment of consumption bounds (Section 10).

This document depends normatively on the Mission Substrate (Section 4) and is not implementable alone: it consumes the Mission-bound credential a substrate-conforming binding derives, or a credential joined to an externally established Mission under Section 2.3. It does not place any new requirement back on the issuance-and-derivation layer; it reads only the credential's established Mission reference, effective authority, subject and actor context, and sender-constraint confirmation, each realized concretely by the binding's credential profile. It obtains any value the credential does not carry (the current Mission lifecycle state, or a policy-view version) at runtime as described below, never by requiring the issuance-and-derivation layer to add a field.

For the OAuth binding, that issuance-and-derivation layer is Mission-Bound Authorization for OAuth 2.0 [I-D.draft-mcguinness-oauth-mission] (the "issuance profile"), and its credential profile is the runtime OAuth 2.0 profile ([I-D.draft-mcguinness-mission-runtime-oauth]). The issuance-and-derivation layer's own credential validation remains the baseline for every Mission-bound credential; this document adds an optional runtime conformance profile for deployments that claim execution-time Mission enforcement, and does not weaken that layer's credential-validation, subset, delegation, or constraint-enforcement requirements.

2. Runtime Core

2.1. The Runtime Contract

Within a declared enforcement scope, a consequential action executes only after a Policy Enforcement Point (PEP) at the action's last controllable boundary obtains, from a Policy Decision Point (PDP), a permit that evaluates the action and its concrete parameters against the established Mission: its approved authority and constraints, the actor context from the delegation chain, its current lifecycle state, and the applicable Resource policy. The permit is bound to the parameters the action executes with, and every decision and refusal path leaves evidence.

Mission-bound credentials bound what authority may exist; the contract fixes where and how that authority is re-checked before consequential effects occur. The order is the point: approve the bounded work, then authorize every consequential action against that approved boundary. Per-action authorization alone cannot prevent individually permitted steps from composing into an outcome no one approved; the approved boundary bounds composition, with the cumulative bounds and exclusive latch of the metering companion where deployed (Section 10, [I-D.draft-mcguinness-mission-metering]). The PEP is whatever component can actually prevent the action: a Resource Server, an MCP server, an egress proxy, a workflow engine, or the orchestrator itself (Section 5.5). The PDP's placement is a deployment choice (Section 7). A deployment whose acting tokens carry no mission claim can still bind each decision to a Mission: the Mission Substrate (Section 4) admits an externally established Mission reference (Section 2.3).

2.2. Enforcement Invariants

Seven invariants restate the contract as the properties a conforming deployment maintains. Each is normative in its home section, and the failure-mode table (Section 2.11) is their operational form.

Gated at the point of use:

No consequential action executes without a prior PDP permit; token possession alone never suffices (Section 7).

Enforced at the last controllable boundary:

The PEP sits where the action can still be stopped; a check further upstream does not survive what happens after it (Section 5.5).

Bound to the bytes:

A parameter-bound permit binds the normalized parameters, and the executing PEP reverifies them immediately before acting; a changed parameter is a refused action (Section 8).

Fresh or refused:

A permit requires the Mission active within a published staleness bound, and the high-consequence classes require an active freshness source, not token-lifetime expiry (Section 2.5).

Fail closed:

An unknown or unmetered constraint, an unreachable PDP, Mission state that cannot be established within the staleness bound, or an unsupported authorization-details type refuses the action (Section 2.11).

Evidenced:

Every decision and every refusal path produces an integrity-protected record, and a high-consequence action also produces execution-outcome evidence (Section 11).

Never widening:

No runtime input expands authority beyond the issued Authority Set; a deny is terminal for the attempted action, and widening is a governance operation, never a runtime one (Section 7).

For the high-consequence classes (Section 5.3) the profile goes further: the acting credential is sender-constrained with a verified proof of possession (Section 5.6), action-bound approval re-consents the concrete parameters (Section 5.4), and mediated custody keeps the credential's sender-constraint key in the enforcing component rather than the agent (Section 5.6). Those mechanisms compose into the two named claims of Section 9.5, agent-compromise-resistant enforcement and trifecta containment: the bar a deployment meets before representing itself as resistant to a compromised or injected agent, and the High-Assurance Agent level of the Mission Assurance Levels ([I-D.draft-mcguinness-mission-architecture]).

2.3. Mission Binding Establishment

Every decision evaluates one Mission: the established Mission. A deployment establishes it in one of two modes:

  • Credential-carried. The acting credential's Mission reference identifies the Mission, under the binding's own credential representation (the OAuth realization is the mission claim, [I-D.draft-mcguinness-oauth-mission]). The PEP takes the Mission reference from the validated credential, after establishing the credential's validity for the protected resource and request under the binding's own credential-validation rules (the OAuth realization is defined by [I-D.draft-mcguinness-mission-runtime-oauth]).

  • Externally established. The acting credential carries no Mission reference of its own, and the PEP supplies a Mission reference from the deployment's Mission binding source. The PDP MUST verify that reference against the acting credential under a join a binding profile defines; an unverified reference MUST NOT establish the Mission. The Mission Authority Server profile defines the concrete join for this mode ([I-D.draft-mcguinness-mission-authority-server]), and the AAuth binding's reference propagation supplies the externally carried reference for such a join ([I-D.draft-mcguinness-mission-aauth]), as the MAS profile's Mission Reference Propagation channel does in credential-less MAS mode.

The mode each enforcement scope uses is part of its Enforcement Scope Statement (Section 5.2). In either mode, the established Mission is the Mission every input of Section 2.7 (authority, Resource policy, parameters, actor, time, state) is evaluated against, and the Mission reference the permit and the evidence record bind.

2.4. Remote Decision Channel

A PEP MUST NOT ask a PDP to authorize an action from unverified credential claims: a decision evaluates only what the PEP has already established as authenticated. Where the PEP and PDP are separate components, the decision request and response MUST be integrity-protected and the parties MUST authenticate each other. The PDP MUST accept credential-derived inputs only from a PEP authorized for the declared enforcement scope. A deployment can satisfy this with a mutually authenticated channel, a signed decision request and response, or another mechanism with equivalent security properties. A co-resident PDP and PEP, sharing one trust boundary, satisfy this requirement structurally and need no separate channel mechanism; the requirement is not optional for a boundary that is not co-resident.

The PEP SHOULD send the PDP the minimum credential-derived attributes needed for the decision rather than the presented credential itself. Where a deployment instead sends the credential itself to the PDP, the PDP MUST treat it as a credential, protect it against disclosure, and MUST NOT use it outside the declared enforcement scope.

2.5. Mission State and Freshness

A Mission-aware decision needs the Mission's current state, which the acting credential alone does not convey. A runtime deployment MUST define the Mission state source it trusts for each enforcement scope. A state source is a component, reachable under the deployment's own trust rules, from which the PDP establishes the Mission's lifecycle state and the freshness of that observation. Examples include a query to the Mission issuer, a local Mission database, an authenticated status or event feed, or a short-lived derived credential whose lifetime is the deployment's accepted state lease. A materialized policy view (Section 7.1) is not a state source: it commits the compiled authority, never the mutable lifecycle state a decision consults.

The substrate this profile enforces against provides at least a lifecycle-gated capability (Mission state at the issuer, with reliance boundable by credential lifetime alone) and MAY additionally provide a state-observable capability (an authenticated freshness source with a stated staleness bound).

A deployment claiming runtime enforcement for an action class whose published staleness bound is tighter than the credential lifetime REQUIRES a state-observable substrate for that class; the high-consequence classes below always are. A lifecycle-gated-only substrate supports issuance gating and a lifetime-bounded action-time posture only: it cannot reflect a revocation faster than the credential lifetime, so it cannot host a class whose bound demands that.

  • The PDP MUST refuse a consequential action when it cannot establish, within the deployment's published staleness bound, that the Mission is active.

  • A state source MUST either report the Mission state with an explicit expiry or lease end, or report only an observation time, in which case the state remains acceptable only until that observation time plus the deployment's published staleness bound for the relevant action class. A permit issued from that state view MUST expire no later than this state valid-through: the reported expiry or lease end, or, absent one, the observation time plus the published staleness bound. The observation time alone, without adding the staleness bound, is never a permit's expiry.

  • When the credential issuer also holds the Mission, the PDP can learn state directly from the issuer through the binding's own state-query mechanism. A non-issuer PDP validating a locally accepted credential cannot report current Mission state that way; it can establish local credential validity, but not issuer-side Mission freshness, absent a separate cross-domain arrangement its binding defines ([I-D.draft-mcguinness-oauth-mission-cross-domain] for the OAuth binding).

  • This document defines no cross-issuer by-Mission status query of its own. Deployments that need tighter freshness than the credential's own lifetime, or a cross-domain grant's lifetime, provides use an active freshness mechanism their binding defines: a status query, a status list, an event-driven signal feed, or an out-of-band trusted status feed.

  • The maximum staleness bound per action class and state source is declared in the Enforcement Scope Statement (Section 5.2), together with the revocation latency it implies. Publishing the bound without its latency consequence is non-conformant. For a PDP-gated class, a Mission's revocation takes effect, in the worst case, after the staleness bound plus the permit validity window plus the class's execution bound (Section 8); the derived credential's lifetime is the bound only for paths outside PDP gating. This document imposes no universal value because the acceptable latency is deployment- and consequence-specific; the bound is the number that determines the profile's headline revocation property. The per-class budgets below are the RECOMMENDED defaults for the value.

  • For the high-consequence classes, the state source MUST be an active freshness mechanism that can reflect a revocation within the staleness bound: one that is queried or pushed at a frequency independent of the credential's own lifetime, rather than a mechanism whose only signal is that lifetime expiring. Credential-lifetime expiry alone is not an acceptable state source for these classes: it bounds staleness only by the lifetime, so a revoked Mission keeps deriving consequence until credentials age out, which is the ambient-authority gap this profile exists to close.

An informative worked example of the latency arithmetic: for a PDP-gated class with a published staleness bound of 60 seconds and a declared execution bound of 30 seconds, a revocation committed immediately after a state observation stops new effect after at most 90 seconds. That worst case combines:

  • the stale view remaining acceptable for up to 60 seconds;

  • a permit issued from that view expiring no later than the view's valid-through (the permit cap above); and

  • a permitted action completing within its execution bound.

The general worst case above counts the permit validity window as its own term because a state source reporting an explicit lease end can leave a permit window beyond the staleness bound; under observation-time reporting the permit cap collapses that term. A path outside PDP gating keeps only the derived credential's lifetime as its bound.

For a deployment whose Mission-bound credentials are short-lived and whose issuance and refresh are themselves gated on live Mission state, the refresh cycle itself is a conforming active freshness source for any action class whose published staleness bound the credential lifetime meets: the issuance gate is an active check, and a credential that exists is evidence the Mission was active within the lifetime. This source's revocation latency floor is the credential lifetime, so it conforms only for classes whose bound admits that floor, and a higher-frequency source remains the path to tighter bounds.

Credential-lifetime freshness. Below the high-consequence floor, credential expiry is itself a conforming state source where derivation and refresh are gated on active, so a credential's remaining lifetime bounds the staleness of the authority it carries, and the published staleness bound for a class relying on it is the maximum credential lifetime. Expiry is a state check performed by the clock: no status call, no query, no change at the consuming resource. A deployment declares it per class in its Enforcement Scope Statement like any other source; what it cannot do is reflect a revocation faster than the lifetime, which is why the high-consequence classes require an active source.

Together the sources form a single freshness dial, and a deployment picks a position per action class rather than one posture for the estate: from credential-lifetime expiry at one pole, through state-gated refresh, to a queried or event-driven active source at the other. No position on this dial requires a per-request issuer call: the tightest posture costs one lookup per staleness bound, amortized by caching, and the loosest costs a clock. The dial is the architecture's freshness dial made concrete ([I-D.draft-mcguinness-mission-architecture]), and the Enforcement Scope Statement records the chosen position per class. A credential profile catalogs its binding's concrete state sources against this dial, each with its capability class, exposure bound, per-action cost, and what it cannot provide; the OAuth catalog is [I-D.draft-mcguinness-mission-runtime-oauth], Section "Mission State Sources".

The following are the RECOMMENDED default freshness postures per class, adopted absent a documented, consequence-specific analysis:

Table 1
Class Suggested freshness posture
Consequential read Token lifetime or a short state lease; tighter for privacy-sensitive, cross-tenant, or bulk reads
Consequential write A short state lease, typically measured in minutes
Irreversible action Active source required; immediate check or single-use permit, target under 300 s
External commitment Active source required; immediate check or single-use permit, plus an egress PEP for external communication, target under 300 s
Privileged administration Active source required; immediate check, suitable for composition with local step-up, target under 300 s
Audit-only No active freshness required

A deployment justifies any looser value for a high-consequence class in its Enforcement Scope Statement.

For a Mission carrying a nonzero containment overlay ([I-D.draft-mcguinness-oauth-mission-containment]), the RECOMMENDED posture for a consequential read whose authorizing entry or action class intersects the overlay tightens to a containment-aware state source, for the remainder of that Mission: the overlay never clears on the same Mission, and restoration is a successor Mission's own approval ([I-D.draft-mcguinness-oauth-mission-containment], Section "Restoration Through Expansion"). A deployment adopting this tightening MUST name a containment-aware state source, not merely an active one: a contained Mission stays active, so a source that reports only lifecycle state does not change ([I-D.draft-mcguinness-oauth-mission-containment], Section "Propagation").

A containment-aware source reports the containment overlay or its changes, not only lifecycle state ([I-D.draft-mcguinness-oauth-mission-containment], Section "Visibility"); the credential profile names which of its sources qualify. A fresh derivation narrows what it mints and can shorten the residual, but it checks nothing at action time, so it carries Baseline, not Runtime-Enforced, and is not a containment-aware source for this tightening ([I-D.draft-mcguinness-oauth-mission-containment], Section "Containment Properties").

A deployment MAY instead tighten on any nonzero overlay regardless of class. That is a defensible conservative default; its cost is incident-time availability load on reads the overlay does not touch, since every consequential read then depends on state-source availability during the incident that triggered containment. The under-containment staleness bound for an affected class is declared in its Enforcement Scope Statement alongside the ordinary bound (Section 5.2); this posture adds no separate value, and the bound carries its latency consequence like any other.

The tightening narrows the post-taint window for the classes and deployments that adopt a containment-aware source; it does not close the Baseline residual ([I-D.draft-mcguinness-oauth-mission-containment], Section "Containment Properties"). A consumer bounded by token lifetime alone, or a class this tightening does not reach, still runs to its existing bound.

2.6. Decision Output

Whatever the wire, a runtime decision presents one abstract output, and a binding maps each member onto its protocol rather than inventing parallel semantics:

  • an outcome: permit or deny;

  • an evaluation identifier and evaluation time, correlating the decision with its evidence;

  • on a deny, a reason from the binding's failure classification;

  • on a permit, decision conditions: declarative constraints on relying on the permit (a request binding, a validity bound, a use limit), evaluated at every use of the permit; a condition the enforcing component does not recognize makes the permit unusable, the reliance counterpart of the obligations rule;

  • zero or more obligations: mandatory enforcement duties the PEP completes under the existing decision, where an unfulfilled or unrecognized obligation is an effective deny;

  • zero or more advice items, where the binding defines them: safely ignorable hints that never carry a mandatory control;

  • optionally, an access-request signal marking a denial requestable through a governance workflow;

  • optionally, a retry signal marking a denial transient, with a wait interval; and

  • a reserved residual-policy member for a future partial-evaluation composition, which this profile does not define.

An approval produced by the governance workflow returns as decision input on a fresh evaluation (Section 5.4), never as output state. The AuthZEN profile maps this output onto its response context, the obligations profile, and ARAP (Section 15).

2.7. Decision Inputs

Runtime enforcement MUST evaluate every input below except the last: History (Section 2.7.8) is OPTIONAL, evaluated where the deployment declares it.

2.7.1. Authority

The action MUST fall within both of the following authority bounds:

  • the credential authority: the authority the acting credential carries, or that is otherwise available to the PEP or PDP for that credential under its credential profile's rules; for a credential joined to an externally established Mission reference (Section 2.3), the authority it carries as issued, as the join defines; and

  • the current effective authority: the Mission's approved Authority Set, narrowed by whatever narrowing mechanism the deployment runs. A deployment that runs no narrowing mechanism evaluates an effective authority equal to the approved set. A deployment that runs one, for example discharge or containment, does not.

The PDP MUST NOT substitute the approved Authority Set, or any other record of Mission authority, for the credential authority: a credential narrowed below its Mission's approved set is evaluated at its own narrower authority. The OAuth realization of both bounds is [I-D.draft-mcguinness-mission-runtime-oauth], Section "Credential Authority and Current Effective Authority".

A PDP evaluates these bounds either through a materialized policy view (Section 7.1) or directly against the Mission's recorded authority. Whichever representation it evaluates MUST NOT be broader than the current effective authority, and MUST be bound to the Mission it represents by the Mission's identifier and authority_hash. Mutable Mission state, including the narrowing the current effective authority reflects, comes from a state source within the staleness bound (Section 2.5), never from that representation.

For every issuer-held narrowing mechanism the deployment runs, the PDP MUST establish the current effective authority from a source that reports that mechanism's narrowing, within the staleness bound that governs the active check (Section 2.5). A PDP that cannot establish it MUST refuse the action. A source that reports only lifecycle state does not qualify: a narrowed Mission stays active.

Where the deployment runs the Entry Discharge companion's discharge mechanism ([I-D.draft-mcguinness-oauth-mission-discharge]), the current effective authority excludes a discharged entry. The PDP MUST refuse an action within a discharged entry at the point of use, learning discharge state from the surfaces that report it ([I-D.draft-mcguinness-oauth-mission-discharge], Section "Discharge Visibility"). Discharge is not optional at an action boundary this profile governs: a deployment that applies discharge only at issuance keeps the residual of credentials issued before the discharge, and an action boundary that omits discharge does not provide this profile's current-effective-authority guarantee.

Where a Mission participates in the Containment profile ([I-D.draft-mcguinness-oauth-mission-containment]), the current effective authority excludes contained capability as well. The PDP MUST refuse an action within an entry that is currently contained even though a credential issued before the contain transition still carries it, established from the same Mission state source and freshness bound that governs the active check (Section 2.5); a Mission stays active while contained, so this check, not the state check, is what a containment-aware PDP adds.

The decision-API binding provides the extension point through which a companion profile carries which evaluated set the PDP used (Section 15).

The PEP asserts the capability identity (for example, the tool or function name) it will invoke, and the PDP MUST refuse an identity outside the entry's approved actions. The OAuth binding's realization of an authority entry, including the mission_resource_access entry type's resource and actions subset rule, is defined by [I-D.draft-mcguinness-mission-runtime-oauth].

For any other authority-entry type, the PDP MUST evaluate the action under that type's documented runtime semantics and MUST refuse if it does not understand or cannot enforce those semantics.

The identity of the executing component that serves a capability (for example, an MCP server instance) is a request-time fact the decision-API binding MAY carry (Section 15); Resource policy MAY refuse an executor outside the deployment's trusted set.

A capability sourced from a discovered catalog is additionally subject to the capability-drift rule of Section 2.7.2.

2.7.2. Capability Drift

For a capability sourced from a discovered catalog (an MCP tool catalog, an OpenAPI document, or an equivalent source), where the validating server recorded a digest of the capability's extracted definition at derivation, the PDP MUST refuse the action when the digest of the capability's current extracted definition differs from the recorded digest (capability drift). The extraction rule per source format is the capability-binding companion's ([I-D.draft-mcguinness-mission-capability-binding]).

A source change that leaves the extracted definition byte-identical does not by itself refuse. Where the deployment also recorded a whole-source digest, that digest's stricter semantics apply and any source change refuses. The recorded digests are part of the derived authority and are covered by authority_hash ([I-D.draft-mcguinness-oauth-mission]). Cross-format canonicalization, signed capability manifests, and cross-catalog identity remain out of scope (Section 16).

2.7.3. Resource Policy

The runtime decision MUST include any applicable Resource policy. A Mission-bound credential and runtime permit are an upper bound on authority, not a command for the Resource Server to perform the action. Resource policy MAY be evaluated by the PDP, by the Resource Server or PEP as a composed local authorization step, or by both. The action MUST fail closed unless both Mission authority and Resource policy permit it. Resource policy includes object-level authorization, tenant configuration, legal holds, service invariants, and risk policy.

2.7.4. Parameters

Every constraints value on the applicable entry MUST be evaluated against its declared input domain: the concrete action parameters for parameter constraints, and, where the constraint's definition declares them, the resource, the subject, Mission state, time, history, or metered consumption. A constraint the PDP does not understand, cannot supply the declared inputs for, or cannot enforce or meter MUST cause refusal; it MUST NOT be ignored or reduced to disclosure-only treatment.

2.7.5. Actor

When delegation is in effect, the PDP MUST evaluate the authenticated actor-delegation chain as part of the runtime actor context and refuse a chain that is missing or malformed. The client identity and the immediate actor are distinct inputs: the client identity names the client that obtained the credential, and the immediate actor is the current actor of the actor-delegation chain when one is present, and otherwise that client. When an actor-delegation chain is present, the PDP MUST NOT treat the client identity alone as the immediate actor. The credential profile maps the client identity and the chain (the OAuth mapping is client_id and act, [I-D.draft-mcguinness-mission-runtime-oauth]).

Runtime enforcement consumes the actor context that results from the issuance-and-derivation layer's delegation checks; it does not recompute the issuance-time subset validation. The runtime decision MUST NOT expand authority beyond the issued authority. That layer's delegation constraints are not re-applied here unless the deployment documents them as runtime Resource policy, but a deployment MAY apply additional actor-sensitive Resource policy (Section 2.7.3).

A credential issuer can verify instance attributes under an attested-instance profile (the OAuth one is [I-D.draft-mcguinness-oauth-client-instance-id], whose Instance Context identifies an instance and grants no authority). Such attester-verified actor context is input a deployment's Resource policy MAY evaluate; unlike a self-asserted model or instance label, it is attester-backed.

Where the deployment operates an agent registry, the immediate actor's registry state (status, revocation, approved deployment version) is further actor context Resource policy MAY require. A deployment that declares agent-state evaluation in its Enforcement Scope Statement treats the registry as a state source under this profile's freshness discipline: a declared staleness bound, and refusal when the acting agent or its deployment version is revoked or the state cannot be established within the bound (Section 2.5). The agent, Mission, and credential lifecycles gate conjunctively; a valid credential never overrides a revoked agent or a non-active Mission ([I-D.draft-mcguinness-mission-architecture]).

2.7.6. Time

The PDP MUST refuse if the decision context indicates the credential is expired. The issuance-and-derivation layer caps a derived credential's expiry at the Mission's expires_at, so the credential-expiry check enforces the Mission's expiry transitively (the OAuth realization is the exp claim, [I-D.draft-mcguinness-mission-runtime-oauth]). The Mission reference and its state source do not themselves surface expires_at; where a Mission state source does expose it (or reports the Mission expired), the PDP MUST refuse on it independent of the credential's own expiry.

The PDP sets the permit's validity window from these inputs. That the action actually executes within that window is the executing PEP's reverification, not a decision input (Section 8).

2.7.7. State

The PDP MUST refuse unless the Mission is active (Section 2.5).

2.7.8. History

The inputs above evaluate the request; this input evaluates where the undertaking stands. A deployment MAY evaluate policy predicates over the Mission's prior Decision and Execution Evidence (for example, a precondition that a named action class completed) as deployment-local context keyed on the Mission's identity.

This is the sequence-aware half of the context asymmetry the architecture names ([I-D.draft-mcguinness-mission-architecture]): the resource prices "delete database" the same in isolation and inside an approved migration whose copy steps completed, and only the layer where the undertaking's history accumulates can tell the two apart. The policy side selects: the deployment's policy or materialized view names the predicates a decision requires, and the requesting component supplies facts or an evidence reference, never the choice of predicate.

History is a decision input, never a grant. A history predicate MUST NOT expand authority beyond the issued authority. Where deployment or Resource policy requires a history predicate, the PDP MUST fail closed when the predicate cannot be established or the evidence store cannot be consulted.

A deployment that declares history evaluation in its Enforcement Scope Statement treats the evidence store as a state source under this profile's freshness discipline: a declared staleness bound, and refusal when the required history cannot be established within the bound (Section 2.5).

Cross-PDP history composes through the deployment's evidence store or registered transparency records ([I-D.draft-mcguinness-mission-audit]) and is otherwise out of scope. How a decision request names a history predicate, and how its evaluation is recorded, is the decision-API binding's (Section 15).

2.8. Parameter Digest

A permit for an operation does not authorize arbitrary parameter values. For consequential writes, irreversible actions, external commitments, and privileged administration, the PDP MUST bind its permit to the normalized action parameters through a parameter_digest, and the executing PEP MUST recompute and reverify that digest immediately before acting (Section 9.4).

  • parameter_digest is sha-256: followed by the base64url, no padding, SHA-256 [RFC6234] of the JCS [RFC8785] serialization of the normalized parameter object. It MUST be computed under the same canonicalization rules the issuance profile defines (duplicate member rejection, significant array order, byte-for-byte URI comparison); this document does not define a second canonicalization. It is a canonical-object digest under the substrate's default commitment construction, which this document imports normatively ([I-D.draft-mcguinness-mission-substrate]): the I-JSON requirement and the reject-unknown-prefix rule apply to computing and verifying it unchanged.

  • Every parameter that influences the action's external effect (for example, the recipient, destination, amount, or target object) MUST enter the parameter_digest. A field the deployment excludes MUST be shown effect-free in the Operation Profile, which records why that field cannot change the action's external effect; a field whose effect is not so justified MUST be included.

  • The Operation Profile MUST define default insertion, omitted optional fields, and set-like array handling before canonicalization.

2.9. Permit Binding

Beyond the parameter_digest, the permit MUST also bind:

  • the Mission reference;

  • the credential issuer, when available;

  • the credential audience or protected resource;

  • the authenticated subject identifier;

  • the client identity;

  • the actor context, including the immediate actor;

  • the sender-constraint confirmation key, when present;

  • the action;

  • the action phase, when the action is a phase of a compound action (Section 2.10);

  • the resource;

  • the authorizing authority entry, or an entry digest;

  • the PDP's policy-view version; and

  • a permit lifetime control bounded by the Mission state freshness requirement (Section 2.5).

A permit is bound to the full set of authorization-relevant inputs it was issued for: the authorization binding, which a decision-API binding realizes as one normalized projection over those inputs, never as an enumerated subset of fields ([I-D.draft-mcguinness-mission-authzen]). The credential profile maps these roles onto its credential ([I-D.draft-mcguinness-mission-runtime-oauth] for OAuth).

The permit lifetime control is set by action class:

Table 2
Action class Required permit-lifetime control
Reversible consequential write The control MUST be either a single-use decision identifier or a short validity window combined with an idempotency key that prevents repeat execution of the same normalized action
Irreversible action, external commitment, or privileged administration The control MUST be a single-use decision identifier: a validity window alone does not bound how many times such a permit executes

2.10. Compound Actions

A compound action produces an effect through more than one boundary crossing, such as validate, reserve, execute, and settle, or draft, attach, and send. Four phases name what a crossing does:

  • preflight: checks feasibility or availability without a reservation or external effect. Its reads retain the ordinary read-binding floor (Section 8.1).

  • prepare: creates a reservation, hold, draft, or schedule. That state is consequential in its own right and is not authority for commit.

  • commit: releases the consequential effect.

  • compensate: offsets an already committed effect. Cancelling an uncommitted reservation is not, merely by its name, compensation for a committed effect.

Every consequential phase MUST obtain its own Decision. A permit MUST NOT authorize more than one phase. A preflight Decision MUST NOT satisfy the gate for a consequential phase. A reservation MUST NOT be presented as authorization for commit. The commit phase MUST obtain its own Decision against the Mission's effective authority (Section 2.7.1) and active state (Section 2.5), under the existing freshness bounds. This does not impose zero staleness or an issuer call for every request; it forbids using prepare's Decision or state observation as the commit authorization. A fresh commit-phase Decision binds the request as presented: where a resource-resolved fact moved between prepare and commit, the parameter digest can still match. Capturing target state at decision time is a separate, optionally claimed extension (Section 9.1), outside this section.

A permit for a phase MUST bind that phase. Where phases already have distinct action identifiers, the action binding also distinguishes them; where they share an identifier, phase binding prevents a prepare permit from releasing a commit effect with otherwise identical resource and parameters. The PEP derives the crossing's phase from its trusted Operation Profile (Section 8), which states whether each operation is part of a compound action and its phase. The PEP MUST NOT derive the phase from an agent-supplied argument.

The executing PEP MUST compare the permit's bound phase with the phase of the crossing before releasing an effect. Unequal phases, an absent binding where the Operation Profile identifies a phase, or a phase that cannot be established MUST cause refusal, fail closed, before any effect is released. A PEP that does not recognize the phase condition MUST treat the permit as invalid. The AuthZEN realization is the returned permit condition conditions.action_phase ([I-D.draft-mcguinness-mission-authzen]); context.action_phase is the request mirror and Decision Evidence is retrospective. Neither substitutes for the permit condition. The phase MUST NOT be injected as a synthetic parameter into parameter_digest, whose definition is unchanged. Requester and executor remain one enforcement identity; this binds permit scope, not the agent's intent.

Decision Evidence for a phase MUST record its action_phase. A compensate-phase Decision MUST carry compensates_evaluation_id identifying the evaluation whose committed effect it offsets. A compensation MUST NOT be authorized by the compensated action's permit. Its authority basis, unwind ordering, and partial-failure semantics remain the orchestration profile's ([I-D.draft-mcguinness-mission-orchestration]). The correlation identifier itself supplies no authority. A compensation is a new operation with a new idempotency key and obtains fresh action-bound approval where its class requires it.

For a compound action, the transaction-authorization companion's single-use token authorizes one commit-phase operation, not a permit spanning preparation, commit, and compensation ([I-D.draft-mcguinness-oauth-mission-transaction-authorization]). Metering reserve/commit governs consumption, not these effect phases ([I-D.draft-mcguinness-mission-metering]). Outcome verification stays with Execution Evidence and reconciliation (Section 11). These phases are Runtime Core vocabulary, not a new Named Assurance Extension.

2.11. Failure Modes

Enforcement is meaningful only if failure is bounded. A PDP or PEP MUST behave as follows; in all cases the evidence record (Section 11) MUST be sufficient to reconstruct which path produced a refusal.

Table 3
Condition Required behavior
Credential validation fails, including sender-constraint verification Refuse before runtime Mission evaluation
A high-consequence action whose acting credential carries no verified sender-constraint binding (Section 5.6) Refuse
Mission governance is required but the credential carries no Mission reference Refuse before runtime Mission evaluation, unless the Mission binding is externally established (Section 2.3)
PEP-PDP channel authentication or integrity protection fails Fail closed
Mission state cannot be established within the staleness bound Fail closed for consequential actions
A policy-required history predicate cannot be established, or the evidence store cannot be consulted (Section 2.7.8) Fail closed
PDP unreachable Fail closed for consequential actions; do not proceed on cached permits past the window. An unexpired, unconsumed permit MAY execute during a PDP outage: executing-PEP reverification needs no PDP
A required evidence record cannot be signed or emitted for a consequential decision or refusal Fail closed, or durably commit the record for signing and publication under a declared recovery bound (Section 5.7)
Mission not active Refuse; work already initiated reconciles under Section 11, never re-executes
The Mission's expires_at passed, when known from the Mission state source Refuse
Unsupported authority-entry type for the action Refuse
Unknown or unmetered constraint on the applicable entry Refuse
Consumption bound would be exceeded Refuse
parameter_digest mismatch at the executing PEP Refuse
Permit phase differs from the crossing, is absent where required, or cannot be established Refuse before releasing an effect (Section 2.10)
A fact covered by a claimed Evaluation-Context Binding cannot be re-resolved, or differs at use Refuse before releasing an effect (Section 9.1)
Re-presentation of a consumed single-use decision identifier Refuse (fail closed)
Required actor-delegation chain missing or malformed Refuse
Invoked capability identity outside the approved actions Refuse
Resource policy refuses the action Refuse
Request would broaden the Mission's authority Refuse (expansion is out of scope)

2.12. Required Decision Evidence

A record MUST contain:

A record MUST also contain the following fields when they are available and trusted for the refusal or decision path:

  • the Mission reference (mission.id, mission.issuer) and, when available, the authority_hash and intent_hash it operated under: a credential need not carry either, so a PDP has them only through a source its credential profile names ([I-D.draft-mcguinness-mission-runtime-oauth] names the OAuth sources);

  • the credential issuer and audience or protected-resource identifier when available;

  • the authenticated subject identifier, the client identity, a client-instance identifier (a deployment-defined correlator) when present, the sender-constraint confirmation key when present, and the actor-delegation chain projection when delegation applies;

  • the action and resource identifiers (and the asserted capability identity when applicable);

  • the authority-entry type and authorizing entry, or a digest of that entry when recording the full entry would disclose excess authority or sensitive policy;

  • the decision identifier, when the PDP produced one;

  • the PDP's policy-view version;

  • the identity and role of the emitting enforcement component; and

  • a compensates_evaluation_id member, REQUIRED for a compensate-phase decision and OPTIONAL otherwise, linking a compensating action's decision to the original evaluation identifier it reverses, so a compensation can be reconciled against the action it undoes.

The credential profile maps the roles above onto its credential ([I-D.draft-mcguinness-mission-runtime-oauth] for OAuth).

For a credential-validation failure, the record MUST NOT describe unverified credential claims as authenticated facts. It MAY include a digest of the presented credential or rejected claim set for correlation and forensics, subject to the privacy requirements below.

The authority_hash and intent_hash in a record are the Mission Issuer's commitments, cited as anchors; the PDP does not recompute them and is not required to hold the full Authority Set to record them, consistent with [I-D.draft-mcguinness-oauth-mission].

3. Conventions and Terminology

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

This specification defines its own architectural roles (PEP, PDP, Resource Server, Resource policy) rather than importing them from a credential binding, so that the contract it states is readable without reference to any one binding's wire format. It uses the Mission, Mission Intent, Mission Issuer, and Authority Set terminology of [I-D.draft-mcguinness-mission-substrate]. A credential profile maps these roles onto one credential type; the OAuth 2.0 mapping is [I-D.draft-mcguinness-mission-runtime-oauth], Section "Runtime Input Mapping".

Policy Enforcement Point (PEP):

The component that can prevent a consequential action and that obtains and enforces a decision before the action runs. Depending on the action this is a Resource Server, an MCP server, an egress proxy, a workflow engine, or the orchestrator itself.

Policy Decision Point (PDP):

The component that evaluates a consequential action against the Mission and returns permit or deny. Its placement is a deployment choice (Section 7).

Resource Server:

The component that hosts the protected resources an action targets and applies Resource policy to them, whichever credential type it accepts.

Resource policy:

Local policy of the Resource Server or protected resource, including object-level authorization, tenant configuration, legal holds, service invariants, and risk decisions. Mission authority is an upper bound and does not override Resource policy.

Consequential action:

An action that has external visibility or effect and so MUST be evaluated before it runs (Section 5.3).

High-consequence classes:

The irreversible action, external commitment, and privileged administration classes, to which this profile's strictest requirements attach (Section 5.3).

Decision:

A PDP's permit-or-deny result for one action, bound to the inputs it evaluated (Section 7).

Established Mission:

The single Mission a decision is evaluated against, established from the credential's own Mission reference or externally (Section 2.3).

Policy-view version:

A deployment-opaque identifier the PDP emits for the decision basis it evaluated against, so a permit and its evidence record tie to a reproducible decision basis: the materialized policy and Mission view where the PDP uses one (Section 7.1), or the Mission's authority_hash and the PDP's local policy version where it evaluates the Mission's recorded authority directly. It need not reveal policy content; it is a correlator that lets an operator determine which materialized policy, Mission state view, and constraint interpretation a decision used. It is local to the runtime layer and is distinct from the issuance profile's policy_version Mission-record field ([I-D.draft-mcguinness-oauth-mission]); this document does not interpret it beyond correlation, and defines no portable policy-version registry. Where a view is used, the materialized policy view and its content-addressed policy_view_id are defined in Section 7.1.

Runtime enforcement evidence:

The record a consequential action produces for a PDP decision or a PEP refusal path (Section 11).

Enforcement scope:

The set of resources, action classes, execution paths, PEP placements, supported authority-entry types, state sources, and evidence mechanisms for which a deployment claims conformance to this profile.

Operation Profile:

The per-operation statement of normalization and binding rules a deployment publishes; defined in full in Section 8.

Resource Server runtime profile:

A deployment's Resource Server-facing conformance statement for this profile. It defines which protected resources and operations the Resource Server enforces, where the PEP sits, how local Resource policy composes with Mission authority, and which Operation Profiles apply.

Mission state source:

A deployment-trusted source from which the PDP establishes the Mission lifecycle state or the freshness of that state (Section 2.5).

Mission-bound credential:

A credential issued or derived under a Mission, carrying an authority entry and a Mission reference or the means to establish one (Section 2.3). The OAuth realization is an access token carrying authorization_details and a mission claim ([I-D.draft-mcguinness-oauth-mission]).

Credential profile:

A companion that realizes this document's roles, decision inputs, and state sources for one credential type. The OAuth 2.0 one is [I-D.draft-mcguinness-mission-runtime-oauth].

4. Mission Substrate

This profile is defined against the Mission model rather than against OAuth 2.0 mechanics: it is a substrate-neutral consumer, and this section is its consumption declaration under the rule of Mission Substrate Requirements ([I-D.draft-mcguinness-mission-substrate]) that a substrate-neutral profile declare the kernel functions and optional capabilities it consumes.

From the contextual-governance kernel it consumes the Mission identifier and issuer, the kernel's Mission Reference and Controller; the lifecycle state space with its only-active-permits rule, the kernel's governance gate; the immutable Approved Context, the approval-time fixity behind every anchor its records cite; and the Mission's audit horizon, which bounds the ordered governance record. The kernel requires no particular integrity anchors: intent_hash and authority_hash are the OAuth binding's commitment to the Approved Context, supplied by the issuance profile, not by the kernel.

It consumes these optional capabilities:

Table 4: Runtime profile capability consumption
Capability Consumption Scope of consumption
Structured Authority required The decision contract evaluates the effective Authority Set, directly or through a materialized policy view, with its subset rule and Common Constraints (Section 2.7.1, Section 7.1); as the substrate's composition rule warns, a Mission reference alone is not structured authority
Lifecycle-Gated Authorization required Every Runtime Decision gates on the only-active-permits rule (Section 7)
State-Observable required when the enforcement scope's staleness bound is tighter than the credential lifetime An authenticated freshness source with a stated staleness bound, consumed wherever an enforcement scope's published staleness bound is tighter than the credential lifetime (Section 2.5)
Monotonic Derivation required when delegation or attenuation is enforced at action time Consumed where delegation or attenuation is enforced at action time through effective-set evaluation (Section 2.7.1); observing a later narrowing, such as containment, is not a derivation property, and Section 2.7.1 requires a source that reports it
Credential-Bound required when the binding provides the Mission-bound credential Consumed when the binding provides the Mission-bound credential carrying the mission claim; a binding that does not provide it supplies an externally established Mission reference instead, under the binding-establishment step of Section 2.3
Independently Verifiable not consumed Offline verification is the audit profile's concern ([I-D.draft-mcguinness-mission-audit]); the runtime evidence companion defines the records and their scoped verification ([I-D.draft-mcguinness-mission-runtime-evidence])
Portable Evidence not consumed Evidence portability is the audit profile's concern ([I-D.draft-mcguinness-mission-audit]); the records themselves are the runtime evidence companion's ([I-D.draft-mcguinness-mission-runtime-evidence])

The OAuth binding [I-D.draft-mcguinness-oauth-mission] (the issuance profile to its OAuth companions) is this version's reference host: a normative reference for its concrete OAuth surfaces, not the family's substrate (the substrate contract is [I-D.draft-mcguinness-mission-substrate]). It defines each consumed kernel function and capability for OAuth 2.0, and every OAuth artifact named in this document enters through it. A binding that provides the required capabilities above, and whichever conditional capabilities the deployment's enforcement scopes require, can host this profile, given a mapping of this profile's representations onto the binding's own: the authority representation the decision contract evaluates and the Approved Context commitment its records cite. Such a binding is defined by that substrate, not here, and its Mission Substrate Statement declares what it provides (the AAuth binding [I-D.draft-mcguinness-mission-aauth] is one example). A binding that does not provide Structured Authority does not host this profile's decision contract; it composes through its own native authorization gate and the externally established Mission reference of Section 2.3. The portability claim is capability-scoped rather than substrate-wide for the reason the substrate's Capability Confusion consideration states: every property this profile requires matches an explicit capability claim and its scope, never the generic statement that a binding supports Missions.

5. The Runtime Model

5.1. Enforcement Flow

 Agent          PEP (action boundary)        PDP
   |                  |                        |
   |- action+params ->|                        |
   |                  | validate token         |
   |                  |- evaluate vs Mission ->|
   |                  |  (authority, params,   |
   |                  |   actor, state)        |
   |                  |<---- permit / deny ----|
   |                  | bind to params;        |
   |                  | write evidence         |
   |<- execute/refuse-|                        |

The PEP first validates the acting credential (for the OAuth binding, [I-D.draft-mcguinness-mission-runtime-oauth]). On permit the PEP reverifies the parameter binding, then executes; on deny it refuses. The inputs the decision evaluates are defined in Section 7.

5.2. Enforcement Scope and Conformance

This profile is implemented by a runtime deployment, not by a credential issuer alone. Three things conform, at different granularities: the runtime deployment (this section), the Resource Server runtime profile for the protected resources it mediates (Section 6), and the PEP/PDP decision path for each consequential action (Section 7). Conformance is not global to a product, credential issuer, Resource Server, or PDP: a deployment conforms to this profile only for the resources, action classes, execution paths, and authority-entry types named in its enforcement scope.

A deployment that claims conformance to this profile MUST publish an Enforcement Scope Statement: the structured, referenceable declaration of its enforcement scope that auditors, procurement, and interop tests key on. A deployment adopting the Runtime-Enforced bundle of the Mission Assurance Levels publishes this statement; the level stays guidance, and the statement's named claims are what a relying party compares. The statement feeds the Mission Deployment Profile, the deployment-level manifest the architecture describes ([I-D.draft-mcguinness-mission-architecture]).

The statement's baseline declaration, required of every conforming deployment regardless of which named claims or assurance extensions it also carries, MUST include:

  • the protected resources, action classes, and execution paths it mediates, the PEP locations that can prevent those actions and the unmediated paths explicitly excluded from the claim (the harness profile's execution-environment scope statement supplies these for a harness-run deployment, [I-D.draft-mcguinness-mission-harness]), and the Mission-establishment mode each enforcement scope uses, including the perimeter dispositions defined below inside this same mediated-scope declaration;

  • the supported authority-entry types, action identifiers, and constraint vocabularies, and the evaluator for each supported type (Section 2.7.1);

  • the PDP or PDPs that evaluate Mission-bound decisions;

  • the Mission state source and maximum staleness bound used for each action class, including the PDP-unavailability posture the deployment rides through on unexpired, unconsumed permits (Section 2.5, Section 2.11); and

  • the remote decision-channel trust mode for every PEP/PDP boundary that is not co-resident: the mutual authentication or signed request/response mechanism satisfying Section 2.4; and

  • the append-only, integrity-protection mechanism for its records (a hash-linked log, signed segments, a transparency anchor, or equivalent), which every record MUST have regardless of which evidence extension, if any, the deployment also claims (Section 11.3).

Each declared resource and excluded path MUST have exactly one perimeter disposition: mediated, reconstructed, or unrecorded. mediated means every consequential effect on the entry crosses a PEP before the effect. reconstructed means no per-action gate is in the path, but the executing system records how outputs derive from inputs. unrecorded means neither holds. These are per-entry fields inside the existing mediated_scope member, not a seventh baseline member. The Security Model describes their limits informatively ([I-D.draft-mcguinness-mission-security-model]).

The nested declaration has this shape:

"mediated_scope": {
  "resources": [
    { "resource": "https://erp.example.com", "disposition": "mediated" },
    { "resource": "https://warehouse.example.com/sales",
      "disposition": "reconstructed" }
  ],
  "excluded_paths": [
    { "path": "notebook_interpreter", "disposition": "unrecorded" }
  ],
  "action_classes": ["irreversible_action"],
  "execution_paths": ["tool-gateway"],
  "pep_locations": ["tool-gateway"],
  "mission_establishment_mode": "mission_claim"
}

Resource identifiers and path names are non-empty strings. Resource entries take any of the three dispositions; excluded paths take only reconstructed or unrecorded. For compatibility, a resource entry written as a bare string denotes mediated, its existing meaning. An excluded-path string has no such default: unrecorded would fabricate a claim and reconstructed would overclaim, so it requires migration to an object. A validator MUST reject a missing or unknown disposition, an excluded-path entry written as a bare string, an excluded path marked mediated, or duplicate keys with conflicting dispositions, naming the entry in each case. Identical repeated keys can be normalized to one entry.

A deployment MUST NOT represent reconstructed or unrecorded entries as mediation. A runtime-enforcement claim is in scope only when its resource is mediated and its named execution path is not excluded, even if that path also appears in execution_paths. The existing resource, action-class, authority-entry-type, and execution-path scope checks still apply. Reconstruction supplies provenance, never authorization after the effect. Declaring a reconstructed or unrecorded entry is a stated posture, not itself nonconformance. This declaration qualifies the entries already enumerated; it does not require enumeration or closure of all arbitrary computation. It is distinct from the harness's per-channel disposition, whose not-covered value disclaims that channel rather than reconstructing its flow.

A named assurance extension or enforcement claim attaches its own declaration requirement to the baseline statement, rather than adding a universal item every deployment carries whether or not it claims the extension: the per-class Evaluation-Context Binding declaration (Section 9.1); the credential custody mode for a mediated class (Section 5.6); the transaction-assurance tier's Exact idempotency-claim domain per mediated action class or idempotency scope (Section 9.3); the runtime enforcement evidence mechanism, retention window, and the locations of the deployment-published evidence signing key sets (the runtime evidence companion's PDP and PEP key sets, [I-D.draft-mcguinness-mission-runtime-evidence], resolve here), together with the agent-isolated evidence-emission condition's per-emitter declaration where that condition is claimed (Section 11, Section 5.7); the per-row EAT evidence selections a High-Assurance Agent claim rests on (Section 9.5.1, Section 9.5.2); and the reconciliation window, responsible component, and alerting obligation for outcome reconciliation (Section 11). A deployment claiming none of these carries only the baseline declaration above; the baseline declaration is never optional.

A deployment MUST NOT claim runtime enforcement for a resource, action class, authority-entry type, or execution path outside that declared scope. A Mission Issuer conforms to its binding; it does not become a runtime-conforming deployment merely by issuing Mission-bound credentials. The converse is a stated posture, not a failure: a resource or class outside the declared scope relies on issuance gating and credential-lifetime freshness (Section 2.5), and the Enforcement Scope Statement says so. This profile does not require every resource to evaluate Mission state; it requires the deployment to say which do.

Within the declared scope the duties tier by action class, and the tiers have names; the Enforcement Scope Statement names which tier covers which class.

Core enforcement tier:

What every conforming deployment carries:

  • Mission establishment;

  • per-action evaluation against current Mission state and Resource policy;

  • state freshness;

  • permit or deny with a decision identifier and Decision Evidence; and

  • parameter binding for the parameter-bound classes.

Transaction-assurance tier:

Claimed per mediated class and required for the high-consequence classes:

  • single-use permits and execution leases;

  • Execution Evidence; and

  • outcome reconciliation.

One bound is stated rather than implied: reconciliation detects divergence between decisions and outcomes; it never manufactures exactly-once execution, which exists only where the resource itself supports idempotency, as its Operation Profile records (Section 6).

The enforcement scope is a deployment conformance statement, not a discovery-metadata extension. This document defines no discovery mechanism, registry, or wire format for publishing it. Different deployments can document scope through configuration, operational policy, resource-server metadata defined elsewhere, or a contractual profile.

5.3. Action Classification

The boundary between consequential and non-consequential actions is deployment policy, bounded by the classification floor below. This document defines a default classification a deployment SHOULD adopt, and a floor it MUST observe.

Table 5
Class Examples PDP gate Parameter binding
Non-consequential internal reasoning, cache reads, planning not required n/a
Consequential read reading user data, querying logged APIs MUST not required
Consequential write updating records, posting messages MUST MUST
Irreversible action sending mail, payment, deletion MUST MUST, with TOCTOU reverification and evidence
External commitment signing, accepting terms for the user MUST MUST, with TOCTOU reverification and evidence
Privileged administration granting access, changing policy MUST MUST, with TOCTOU and evidence

The table's per-class requirements (the PDP gate and parameter binding) are requirements for an action once it is assigned to that class. Assigning an action to a class is deployment policy, bounded by the floor below and by any Resource-policy minimum (Section 7): the profile does not require every read to reach a PDP. A read that is already fully constrained by the token's audience, resource, and the Resource Server's object-level authorization, and that does not materially affect the resource set or disclosure risk, need not be classified a consequential read, and is then not separately PDP-gated by this profile. A deployment MUST NOT, however, use classification to evade the floor or a Resource-policy minimum, and once an action is a consequential write or higher it MUST be gated and bound as the table requires.

One predicate cuts across the classes. An external-communication action is a consequential action, of any class, whose effect carries data to a recipient outside the deployment's trust boundary (sending a message or mail, posting to an external service, publishing, or any equivalent egress). The term names the egress property, not a sixth class: an external-communication action keeps its class and that class's requirements, and rules stated over "external-communication and external-commitment actions" (the taint rule, trifecta containment, egress metering) apply to any action satisfying the predicate or classified external_commitment.

The three highest classes are defined by predicates; the table's examples illustrate them:

Irreversible action:

the action's effect cannot be reversed by the same authority within the deployment's own systems.

External commitment:

the action creates an obligation or communication binding the Subject to a party outside the deployment.

Privileged administration:

the action changes who holds authority or how authority is evaluated.

Classification remains deployment-scoped: each deployment applies the predicates to its own actions and systems. The predicates make the resulting classifications comparable across deployments and auditable: an assignment is justified by whether its predicate holds, not by resemblance to the examples.

Some operations have no fixed class: a shell, a generic HTTP client, a code interpreter, any operation whose consequence depends on its arguments. Such an argument-dependent operation is classified per invocation, from its normalized parameters, by a classifier the deployment declares in its Enforcement Scope Statement (Section 5.2). An invocation the classifier cannot affirmatively place MUST be treated as the widest class the operation can reach, and the floor below applies to the classifier's assignments as to any other: a class the deployment cannot justify by its predicate is not a basis to leave the invocation ungated.

Classification floor. Four rules bound classification:

  1. Actions in the irreversible, external commitment, and privileged administration classes MUST be treated as consequential and gated.

  2. A Mission's purpose, or deployment policy, MAY raise an action to a stricter class.

  3. A Mission's purpose or deployment policy MUST NOT lower an action below any minimum classification the Resource policy (Section 7) sets for it, including a floor the resource owner publishes through its own metadata mechanism (the OAuth binding's realization, mission_action_class_floors in OAuth protected resource metadata, is defined by [I-D.draft-mcguinness-mission-runtime-oauth]).

  4. In any case, a Mission's purpose or deployment policy MUST NOT classify an irreversible, external-commitment, or privileged-administration action as non-consequential.

The three classes of the first rule are the high-consequence classes, to which this profile's strictest requirements attach (action-bound approval (Section 5.4), mediated custody (Section 5.6), active-state freshness (Section 2.5), and execution-outcome evidence (Section 11), each as specified in its own section). A deployment that leaves such an action ungated does not enforce this profile for that action's class (Section 5.5).

5.4. Action-Bound Approval

The Mission's approval event ([I-D.draft-mcguinness-oauth-mission]) consents to the task and its authority bound; it does not consent to a specific action's concrete parameters at the point of use. For the highest-consequence classes, a deployment can require a second, action-bound approval: a fresh approval bound to the concrete action and the parameters the PEP is about to permit, distinct from the Mission's initial approval. A deployment SHOULD reserve action-bound approval for the actions whose consequence genuinely warrants a human pause: applied broadly it trains the Approver to rubber-stamp, and a rubber-stamped approval binds like a considered one (the consent-fatigue residual of [I-D.draft-mcguinness-mission-security-model]).

An action-bound approval is a governed approval bound to the action: it is obtained from an independent Approver or policy authority, never self-issued by the agent or asserted from the agent's own context, and its rendered disclosure MAY be committed as Consent Evidence ([I-D.draft-mcguinness-oauth-mission-consent-evidence]) bound to the action parameters. It composes with, and does not replace, [RFC9470] step-up authentication, which strengthens the actor's authentication context rather than approving a specific action.

Five rules govern the approval's enforcement:

  1. A PEP MUST refuse an action for which the applicable entry's constraints.requires_action_approval is true, or deployment policy or Resource policy otherwise requires an action-bound approval, and for which a valid fresh approval bound to the action's parameters is not present. Absent a usable approval mechanism, the action fails closed.

  2. An action-bound approval MUST carry a maximum age, bounded by a value the deployment set publishes, and MAY additionally carry an absolute approved_until expiry (the AuthZEN profile surfaces ARAP's approval expiry there, Section 15). The approval is fresh only before the earlier of approved_at plus the maximum age and any approved_until; past that bound the approval is not fresh and the PEP MUST refuse.

  3. A deployment SHOULD require an action-bound approval for the high-consequence classes, where a token-lifetime-wide standing authority is least appropriate.

  4. Because the approval is bound to the concrete parameters, it MUST be reverified under the time-of-check to time-of-use rules of Section 8. A parameter change after approval invalidates it.

  5. The surface that resolves an action-bound approval MUST NOT be invocable from the agent's tool plane or from any channel the agent drives. The resolving principal's identity and achieved authentication context MUST be established by the resolution surface itself, never taken from caller input. An approval resolved through a surface that fails either rule MUST NOT satisfy this section's gate, and the PEP MUST refuse the action.

An agent MAY observe an approval's state, and a status poll is often necessary for it to decide whether to proceed; it MAY request an independent approval; it MUST NOT be able to resolve one. Observable, not invokable, is the distinction: whoever nominally holds the resolving credential, the resolution path is not among the agent's tools.

The permit lease does not substitute for the maximum-age bound: a permit's validity window (Section 8) bounds the permit, not the age of the approval it relied on.

This profile does not define the wire workflow that obtains the approval. A decision-API binding MAY route the requiring denial through a standardized access-request and approval workflow and carry the resulting approval back as decision input; the AuthZEN profile composes with the AuthZEN Access Request and Approval Profile for exactly this (Section 15). However obtained, the approval is decision input, not a bearer grant: the runtime decision of Section 7 remains authoritative, and a persisted grant beyond the single action is a governance state change the fresh decision observes (a Mission expansion, a role or relationship grant, or another authority update), never a property of the approval itself.

Two proposed OAuth-native transports are converging on this same per-action moment, and both compose here rather than compete. The transaction authorization challenge ([I-D.draft-rosomakho-oauth-txn-challenge]) has the protected resource return a signed challenge that the client presents to the AS, which obtains approval and issues a token whose authorization_details describe the approved operation; under a Mission, the approval event is the policy behind that challenge, the Authority Set bounds what any challenge can be approved into, and Consent Evidence is its record. The Mission Transaction Authorization profile ([I-D.draft-mcguinness-oauth-mission-transaction-authorization]) defines that cross-domain wire workflow, with the approval as decision input and the issued transaction token restricted to its one recorded transaction. The intent admission assertion ([I-D.draft-jiang-oauth-intent-admission]) has an admission point sign a short-lived assertion binding an intent digest, its originator, an authorized presenter key, and consent evidence, which the executing endpoint re-verifies; a Mission-governed admission point evaluates against the Authority Set, and its consent-by-prior-grant case is exactly a reference to the Mission's committed anchors. In both compositions the durable record this family defines is what makes the per-action artifact accountable to an approved task rather than to policy alone.

5.5. PEP Placement

Enforcement only works at the component that can actually stop the action. A deployment claiming this profile MUST observe these rules:

  • The PEP MUST sit at the last controllable boundary before the action. A permit checked further upstream does not survive parameter changes, retries, or routing that happen after the check.

  • A credential-issuance decision does not replace execution-time authorization. A Resource Server that only validates credentials cannot claim runtime enforcement; the issuance gate is governance, the runtime gate is enforcement.

  • A tool-catalog filter does not replace per-call authorization. Filtering a tool list by the caller's authority is exposure control; every consequential tool call MUST still pass the runtime gate.

  • An orchestrator's internal check does not replace a Resource Server's PEP. Defense in depth is permitted; substitution is not.

  • If no PEP can prevent the action for a given class, the deployment MUST NOT claim runtime enforcement for that class, and MUST name the action classes and execution paths it does mediate.

The boundary varies by action: an OAuth-protected API call is gated at the Resource Server; a consequential MCP tools/call at the MCP server; a local tool invocation, file write, or payment at the orchestrator or whatever component drives the call; external egress at an egress proxy. Where an action can be reached by an unmediated path (a debug shell, an unsanctioned egress route, a direct connector), the profile is not enforced for the classes that path reaches.

5.6. Credential Custody and Mediated Execution

In an agentic deployment the agent component is itself part of the attack surface: it may be prompt-injected or compromised. The issuance and runtime gates do not make the agent trustworthy; they bound what it can do. A deployment lowers that bound further by not letting the agent hold the authority whose misuse is unacceptable.

Whoever holds the private key a sender-constrained credential's confirmation binds can present the credential. Mediated execution is a PEP placement that uses this: for the action classes a deployment mediates, the sender-constraint private key is held by the PEP that sits at the last controllable boundary (Section 5.5), not by the agent component. The agent therefore cannot present the Mission-bound credential directly; to act, it asks the mediating PEP, which runs the decision of Section 7 and only then uses the key.

No new token type, credential handle, or wire protocol is introduced: this is a custody and placement property of the existing sender-constraint key. The mediating PEP is a co-trusted process in the agent's own trust domain, not a delegate: the credential is unchanged, the agent remains the principal of record (its client identity still attributes the action to it), and no actor-delegation chain entry is added.

 Agent                Mediating PEP              Resource
   |                  (holds the key)               |
   |-- request ------>|                             |
   |                  | run the decision;           |
   |                  | presents credential ------->|
   |                  |<---------- result ----------|
   |<---- result -----|                             |
   |                                                |
   |     X - - - - - - unmediated path absent - - ->|

For any action class a deployment mediates, the acting credential MUST be sender-constrained: a bearer token is incompatible with mediated custody, because a bearer token can be presented by whoever holds it, including the agent, so the mediating PEP could not be the sole holder of the authority.

Independently of mediation, the acting credential for an action in a high-consequence class (Section 5.3) MUST be sender-constrained, whether the Mission reference is credential-carried or externally established (Section 2.3). The PEP MUST NOT supply a confirmation key as a decision input unless it verified the binding with a current proof of possession of that key; a confirmation member alone is not a verified binding. The PDP MUST deny a high-consequence action whose decision request carries no confirmation key. The credential profile defines the binding and its proof ([I-D.draft-mcguinness-mission-runtime-oauth] for OAuth). Sender-constraint makes a stolen credential unusable on its own; it does not protect against compromise of the bound key or of a component that can use it.

For an action class it mediates, a deployment SHOULD hold the sender-constraint private key for the Mission-bound credential in the mediating PEP rather than in the agent component, and SHOULD do so for the irreversible-action, external-commitment, and privileged-administration classes.

Two properties follow:

  • a credential exfiltrated from a compromised agent is unusable without the key; and

  • a compromised agent cannot reach a mediated action without passing the per-action check, because it never holds a usable credential for that class.

Mediated execution depends on the agent having no unmediated path to the resource; a Mission-aware harness establishes that execution environment ([I-D.draft-mcguinness-mission-harness]).

Mediated custody's realizable form today is gateway custody: a server-side gateway, an LLM gateway, an MCP gateway, or an egress proxy, holds the sender-constraint key and the Mission-bound credentials, and the agent receives no bearer credential at all. That shape is the claim's home: the custody properties above belong to a deployment built this way, and a developer laptop with a shell is outside them by construction, not by configuration.

Where the deployment attributes presentations to client instances ([I-D.draft-mcguinness-oauth-client-instance-id]), the sender-constraint key is instance-specific: that profile attributes a presentation to an instance only under a key unique to it ([I-D.draft-mcguinness-oauth-client-instance-id], Section 7.3). Mediated custody composes with that rule in either of two shapes:

  • the mediating PEP holds per-instance keys, taking custody of each instance's key rather than one shared key; or

  • the mediating PEP is itself the attested instance that obtained the token, presenting its own Client Attestation and holding the instance key.

In both shapes that profile's instance-unique key and this section's custody rules are satisfied together.

Attestation-based client authentication and SPIFFE ([I-D.draft-ietf-oauth-attestation-based-client-auth], [I-D.draft-ietf-oauth-spiffe-client-auth]) can supply the client-instance authentication and workload credentials beneath this custody layer; they do not define the Mission actor, delegation, intent, lifecycle, or evidence semantics.

This narrows, and does not eliminate, the compromised-agent exposure. The mediating PEP becomes a trusted component whose compromise is out of scope here (Section 17); a compromised agent can still request mediated actions, which are gated, and can still misuse any low-consequence authority it legitimately holds directly. The aim is that the agent is structurally unable to take a high-consequence action unilaterally, not that the agent is trusted.

The set of action classes a deployment mediates is the load-bearing parameter here: a deployment that mediates nothing gains nothing from this section, however it labels itself. A deployment that relies on this profile to protect against agent compromise therefore MUST include the high-consequence classes in its mediated set; the protection is only as broad as that set.

Custody has a lifecycle. A deployment SHOULD prefer per-class credentials with distinct sender-constraint keys over sharing one key across mediating PEPs, so that compromise of one mediating PEP does not expose the authority of another. On compromise of a mediating PEP's key, the deployment revokes the affected credentials and re-derives. A sender-constraint private key is never published; rotation is re-derivation with a new sender-constraint binding plus revocation or expiry of the credentials bound to the old key.

The Enforcement Scope Statement SHOULD state the custody replica topology (a shared HSM-held key versus per-replica keys): replicating one sender-constraint key across a PEP fleet widens the exposure custody exists to shrink.

Mediated execution also places a controllable chokepoint on the egress path itself: content-level controls this profile does not define (data-loss prevention, redaction, payload policy) compose naturally at the mediating PEP, the one component that sees the full payload after the decision and before presentation.

5.7. Agent-Isolated Evidence Emission

An evidence-signing key is not an authorization credential, and its signature MUST NOT be accepted as a grant or as widening the Authority Set. Its compromise corrupts the record plane and, where signed history is a decision input (Section 2.7.8), can also corrupt later authorization outcomes within that envelope: a forged record is a forged precondition (Section 17). The record plane is what a post-compromise investigation relies on, so the property that the agent cannot emit records under an emitter's identity has an owner here, as a standalone condition a deployment claims per emitter and scope. No named claim of this document includes it; a composition that wants both prevention and post-compromise evidence assurance names it explicitly alongside the claims of Section 9.5.

A deployment claims the agent-isolated evidence-emission condition for a named emitter (a PDP, a mediating or executing PEP, or a companion-defined executor-side emitter) and scope only when all of the following hold:

  • the evidence-signing private key is generated inside the declared trusted holder boundary, or imported through a trusted procedure in which the agent never possesses plaintext key material, and is non-exportable to, and inaccessible from, the agent component, with that property preserved across rotation, backup, replication, restore, and migration;

  • only an authenticated identity for the named emitter's trusted emission path can invoke the signing operation;

  • the agent cannot submit a complete evidence object, or an arbitrary digest, for signature;

  • the trusted emission path constructs the record from its authoritative decision, refusal, or execution state and from request inputs it independently validates and normalizes; the caller cannot supply the completed record or directly assert the emitter identity or role, the decision or outcome, the protected record type, the sequence position, the evaluation or execution identifiers, or the authoritative interpretation of the Mission, scope, audience, and digests; and

  • a signing result cannot be relabeled or reused for another emitter, role, scope, audience, or evidence type.

The load-bearing property is the authenticated construction-and-signing path, not the storage technology: an HSM or KMS whose API the agent can invoke over arbitrary bytes is a signing oracle, a separate process the agent controls is not isolated, and an in-process signer inside a trusted PEP can be isolated where the control boundary is real. A signing service MAY accept a digest rather than the record, only over an authenticated channel from the trusted emission path with the record type and protected scope bound to the request; the signer is not required to parse the record schema.

The condition bounds forgery, not activity: the agent can still trigger real decisions and effects that cause the emitter to create its own records of them; it cannot invent or alter a record under the emitter's identity. The condition establishes neither the truth of an emitter's assertion nor the completeness or ordering of the evidence stream; those remain the concern of reconciliation, sequence-gap detection, and the transparency mechanisms (Section 11, [I-D.draft-mcguinness-mission-audit]).

Agent-invokable approval resolution can leave evidence-emission isolation intact while defeating the approval gate. An isolated emitter can faithfully record a decision whose approval input the agent supplied by invoking a resolution surface, even when the nominal Approver is a distinct principal. Emission-path validation alone does not establish independent resolution; the approval-resolution boundary in Section 5.4 supplies that rule.

Key separation is not part of this condition: an evidence-signing key SHOULD be cryptographically distinct from every sender-constraint, token-issuance, approval, and other authority-bearing key; a composing profile MAY require that separation; and isolation of one key plane MUST NOT be inferred from separation or custody of another.

A deployment SHOULD satisfy this condition for every emitter whose records cover the high-consequence classes. Signer unavailability MUST NOT fall back to an agent-held key, to an unsigned record represented as verified, or to an unconstrained signing path, and it relaxes neither Section 11 nor the runtime evidence companion's required envelope. Enforcement MAY continue through an outage only where the trusted emission path durably commits every required record for signing and publication under a declared recovery bound, preserving ordering and this condition; otherwise the deployment is not conforming for the affected decision or refusal and MUST NOT represent the condition as continuously satisfied. An execution outcome discovered after its effect is durably queued and reconciled, never synthesized or silently omitted (Section 2.11).

On a declared compromise of an evidence-signing key, the runtime evidence companion's key-set lifecycle applies ([I-D.draft-mcguinness-mission-runtime-evidence]). The declared boundary is deployment-declared semantics and does not by itself resist backdating: a holder of the key can sign records carrying earlier timestamps. A record under a compromised key can be shown to have existed before the declared boundary only by an independent existence proof (a trusted timestamp, a transparency inclusion, or a Receipt, [I-D.draft-mcguinness-mission-audit]); even then the proof establishes existence before the declared boundary, not that the key or emitter was uncompromised earlier, and not that the assertion is true.

The Enforcement Scope Statement declaration for this condition is per covered emitter, together with its key set and custody policy (optionally naming kid coverage): the emitter identity and role, the holder's trust boundary, the authorized invocation path, the mechanism class (separate process or service, HSM or KMS, attested environment), the custody and replica class across rotation, backup, replication, restore, and migration, the covered action classes, scope, and audience, whether the key is shared, the key-separation posture, and an audit or attestation reference (Section 5.2). Routine rotation under the same holder and invocation policy does not require a new declaration; a change in trust boundary or signer policy does. The declaration discloses no operational secret. At base the declaration is declared-only; under a named claim that composes this condition, the attested or audited material covers the workload identity, the signer policy, and the trusted emission path, not merely the private key's location, and the weakest self-declared or organizationally audited term is named plainly, as Section 9.5.1 does for path scope.

5.8. Least Exposure

A Mission bounds exposure as well as authority. An agent exceeds the Mission envelope by invoking an action outside the Authority Set, but also by being exposed to inputs the approved task does not need: tools, data, memories, prompts, schemas, credentials, or downstream responses. Authority bounds what execution can do; exposure bounds what reasoning can see, and unnecessary context is the raw material of prompt injection and within-scope laundering.

A Mission-aware runtime SHOULD minimize exposure of prompts, retrieved documents, memory, tool catalogs, schemas, credentials, and downstream responses to what the active Mission needs. Where mediated custody is the deployment's declared control for an action class (Section 5.6), credential material and the sender-constraint private key MUST NOT be exposed to the agent component: exposure reduces mediation to advice.

Least exposure narrows what injection can read and what within-scope laundering can draw from; it is not information-flow control, and an exposure filter, like a tool-catalog filter (Section 5.3), never replaces per-action authorization.

6. Resource Server Runtime Profile

A Resource Server that claims conformance to this runtime profile MUST publish or otherwise make available a Resource Server runtime profile for the protected resources and operations in scope. The Resource Server runtime profile is a deployment conformance statement, not a discovery-metadata extension and not a new credential format. It is the family's enforcement adapter contract for a resource integration: the artifact two independent implementations name and version to agree on a resource's action identifiers, parameter semantics, and enforcement composition, so the family standardizes the adapter contract rather than every business action.

The Resource Server runtime profile is a delta over the deployment's Enforcement Scope Statement (Section 5.2): it inherits the enforcement-scope items and records only what is specific to its protected operations, restating an inherited item only where its per-operation value differs. An independently operated Resource Server MAY instead carry the full statement as a separable annex. It MUST define:

A Resource Server MUST NOT claim this runtime profile for an operation unless the operation's consequential effects pass through a PEP that can refuse the operation after credential validation and before execution. A Resource Server that only validates the acting credential and checks static authorization claims on it, without a per-action PDP decision, does not implement this runtime profile.

The Resource Server runtime profile MAY be documented in Resource Server configuration, resource-server metadata defined elsewhere, a contractual deployment profile, or another deployment-specific mechanism. This document does not define a discovery document, registry, or wire format for publishing it.

7. The Runtime Decision

Before a consequential action runs, its PEP MUST obtain a permit from a PDP that evaluates the action against the established Mission (Section 2.3). This is the normative contract. The decision API wire format is a deployment choice; a binding maps this contract onto a concrete API (Section 15).

The PEP MUST supply the inputs the PDP needs for the Mission-bound decision; Section 2.7 defines them.

On a deny, the PEP MUST refuse the action; a deny is terminal for the attempted action.

A deny need not end the task, however: a decision-API binding MAY mark a denial requestable and route it through an access-request and approval workflow (Section 5.4, Section 15). An approved request completes in one of two ways. An in-authority approval gate is satisfied by the approval attribute alone on the fresh decision; nothing persists beyond it. Missing authority is realized as a governance state change the fresh decision observes: a durable Mission expansion, a role or relationship grant, or another authority update. This profile defines the runtime decision; it leaves the request-approval loop, and any realization that persists authority, to the decision-API binding, the issuance profile's expansion mechanism, and the deployment's own governance.

A decision separates three response lanes, and a binding maps each lane to its wire. Obligations and advice are PEP work under the existing decision: obligations bind (a step-up, a mandated notification; failing one makes the effective result deny), and advice, where a binding defines it, is safely ignorable and never carries a mandatory control. Decision conditions (request binding, validity bound, use limit) are not work but constraints of the decision itself, evaluated at every use (Section 2.6). Governance rides the request-approval loop, never the permit: an access request tracked by a task handle, resolved by an approval or another authority-state change. Partial evaluation, residual policy the PEP completes locally, is the third lane; this profile reserves it and defines no residual form. Two things are not lanes: a description of requestable authority is payload a request may carry, and a transient condition is a denial outcome carrying a retry signal, calling for neither remediation nor a request. The AuthZEN profile realizes the first two lanes and the transient outcome as obligations, ARAP composition, and its transient-denial members (Section 15).

The PDP's placement is a deployment choice (co-located with the Mission's issuer, embedded in the Resource Server, a tenant-scoped service, or a shared service); this document does not mandate one. The requirement is only that a PEP at each consequential boundary can reach an applicable PDP.

In addition to every other required decision input, the runtime decision MUST require the action to remain within the Mission's current Effective Authority Set (Section 2.7.1); MUST enforce every applicable cumulative-consumption or stateful operational gate (Section 10); and MUST require a valid fresh action-bound approval whenever the applicable entry or applicable policy requires one (Section 5.4). Each gate is independently necessary and none grants, widens, or restores another.

7.1. Materialized Policy View

This section governs a PDP that evaluates a Mission against an action through a materialized policy view: the reproducible, evaluable form of the Mission's approved authority, produced by the Mission Issuer or a trusted compiler and loaded by the PDP. A PDP can instead evaluate the Mission's recorded authority directly; the authority bounds, the state-source rule, and capability-source provenance apply either way (Section 2.7.1). A trusted compiler is a component the deployment trusts to materialize the Mission's approved authority faithfully and reproducibly; it is in the deployment's trust domain and its output is bound by the content-addressed policy_view_id below. The view is substrate-independent runtime machinery; a decision-API binding carries only its identifier on the wire (Section 15).

The materialized policy view MUST satisfy three properties:

  • Reproducible: identical manifest inputs, including the compiler identity, produce a byte-identical manifest, and therefore an identical policy_view_id, under the canonicalization rules of [I-D.draft-mcguinness-oauth-mission].

  • Identifiable: the view carries a policy_view_id, so PDP cache entries are addressable.

  • Bounded: materialization is faithful and does not enlarge the Authority Set's semantic bounds. A materialized view is an evaluation aid, never new authority.

The committed object is a canonical JSON manifest, never the engine binary itself: JCS canonicalization applies to the manifest, and an engine-native artifact enters the manifest only by digest, never directly. policy_view_id is the integrity-anchor encoded form ([I-D.draft-mcguinness-oauth-mission]) of the SHA-256 [RFC6234] of the JCS [RFC8785] canonical bytes of that profile's domain-separated, issuer-bound integrity-anchor envelope with typ mission-policy-view:

SHA-256(JCS({
  "typ":   "mission-policy-view",
  "iss":   <mission.issuer>,
  "value": <materialized view manifest>
}))

policy_view_id is an envelope anchor under the substrate's default commitment construction, which this document imports normatively ([I-D.draft-mcguinness-mission-substrate]).

The committed manifest MUST carry:

  • mission_id and authority_hash: the Mission's identifier and Authority Set integrity anchor.

  • policy_version: the derivation policy_version recorded at the approval event.

  • compiler: an object naming the trusted compiler that produced the manifest, with profile (the compiler's identity) and version (its version), so a change in compiler identity or version is itself a reproducibility input rather than an unaccounted difference.

  • Either policy_ir, the normalized policy intermediate representation as JSON, or artifact, an object carrying digest (the integrity-anchor encoded digest of the engine-native artifact) and encoding (naming the artifact's format), for a deployment that compiles to an engine-native form this document does not standardize.

The manifest MUST NOT embed Mission lifecycle state: three independent values govern reliance, and conflating them is the common implementation error. policy_view_id is the content identity of the compiled authority and the cache key. A mission_state_version, the state version a Mission state source reports where it reports one, versions the mutable lifecycle state the decision consulted. The state observation's freshness or lease bounds how long that consultation stands (Section 2.5). A state transition invalidates reliance through the version and freshness values without re-identifying the compiled authority; the manifest acquires a new policy_view_id only when the authority it compiles, or the compiler that compiled it, changes. A consistency check between a decision request's Mission reference and the loaded view is therefore an equality test: the request's Mission id and authority_hash either equal the committed values or the view does not apply. Because policy_view_id is a content hash, any change to the manifest yields a new policy_view_id, so equality on policy_view_id is the cache identity; it is never the freshness test. This document defines no second canonicalization and no policy-language wire form for policy_ir or the engine-native artifact.

7.2. Semantic Evaluators

A structurally valid action can still be semantically out of bounds: every schema check passes while the content betrays the task. A deployment MAY add a semantic evaluator (a data-loss-prevention engine, an LLM-based content policy, an embedding-similarity check) to the decision path. This profile does not standardize the evaluator; it fixes how one composes:

  • Rubric. The evaluator judges content against the approved task, not a free-floating policy: its rubric is the recorded Mission Intent, whose integrity is verifiable against intent_hash, optionally with the consented Authority Set under authority_hash. A rubric that cannot be tied to the committed record is ordinary deployment policy, not a Mission check.

  • Composition. The verdict enters the decision as Resource policy, carried as deployment-defined context. It can deny, or route the action to the existing affordances: an action-bound human approval (Section 5.4, the decision API binding's approval_required) or an authentication step-up, which the decision API binding carries as an obligation on the permit (Section 15). It MUST NOT widen authority and MUST NOT substitute for a structural check this profile requires.

  • Evidence. When a verdict contributes to a decision, the decision evidence SHOULD record the evaluator's identity or version and its verdict, so a semantic denial is as reconstructable as a structural one.

  • Latency. The evaluator runs inside the invoking action class's latency budget (Section 13); a deployment that cannot afford a synchronous evaluation on a class routes the class to action-bound approval or narrows its authority instead.

An LLM-based evaluator is itself part of the attack surface: it reads the same adversarial content it judges, and can be injected by it. It therefore augments the structural signals (provenance, composition, enumeration, volume, re-consent) and never replaces them, and a deployment that relies on one for an action class states that reliance in its Enforcement Scope Statement.

8. Parameter Binding and Time-of-Check to Time-of-Use

Parameter binding is only as consistent as the normalization behind it, so this profile collects that normalization into a named Operation Profile: the per-operation (or per-operation-family) statement, part of the Resource Server runtime profile (Section 6), that MUST fix all of the following, so two implementers of the same operation bind the same bytes:

Binding, the inputs that decide which bytes a decision binds:

Declarations, stated for every mediated operation even where the answer is no:

The rules below are the normative requirements the Operation Profile records; a deployment that leaves any of them unstated for a mediated operation has not specified that operation's binding.

For a schema-bearing capability, a discovered tool that publishes an input schema, a deployment MAY derive the Operation Profile mechanically rather than author it: the parameter schema is the published input schema; no defaults are inserted and omitted optional fields stay omitted; every field of the raw arguments object enters the parameter_digest; and the single-use, idempotency, and lease requirements follow from the operation's class. A derived profile is recorded with the capability's source digest where the capability-source binding applies ([I-D.draft-mcguinness-mission-capability-binding]), so the binding drifts with the schema that defined it.

8.1. Binding for Consequential Reads

Consequential reads do not require a parameter digest by default; the evaluation request still appears in the evidence record, by digest where the parameters are sensitive (Section 11).

Deployments MUST require parameter binding for consequential reads when read parameters materially change the effective resource set or disclosure risk. Independent of that risk judgment, a binding floor applies: a consequential read whose parameters select a cross-tenant or cross-audience scope, request a bulk or export-like result, or choose the returned fields or destination MUST bind those parameters. A deployment MUST NOT classify such a read as not materially affecting the resource set. Other examples that materially change the resource set or disclosure risk include privacy-sensitive filters and aggregation level. Ordinary reads that do not change the resource set or disclosure risk can remain unbound.

9. Named Assurance Extensions

9.1. Evaluation-Context Binding

The evaluation context of a decision is the set of resource-resolved facts, declared decision-relevant by the Operation Profile, whose values the decision depended on.

Evaluation-Context Binding is an OPTIONAL Named Assurance Extension, claimed per mediated action class in the Enforcement Scope Statement. It adds no requirement for a Runtime-Enforced deployment that does not claim it. The Operation Profile owns its declaration; an approval-time resource contract can reference that declaration but supplies no dispatch-time observation.

A claiming deployment MUST publish the covered classes and operations, each operation's versioned binding descriptor, and whether it reaches the verified or enforced property below. The descriptor MUST identify each decision-relevant fact, its authoritative resolution interface, normalization, and granularity: revision (an opaque version or entity tag) or effective_values (the enumerated resolved fields). Mixed granularities are represented per fact, never by an ambiguous scalar mode. An enumerated target set commits every selected identity in the declared canonical order; a predicate or cardinality bound MUST NOT be represented as equivalent to that set commitment.

The descriptor's reference is an object with id (a URI), version (a non-empty string), and digest (the canonical-object digest of the descriptor). Published descriptor bytes MUST remain immutable for that reference. The bound evaluation-context object contains that reference, the qualified Mission identity, operation and resolved target identities, the normalized facts, and a secret salt with its version. The PEP MUST commit the descriptor reference with the facts in evaluation_context_digest, using the canonical-object digest construction and sha-256: encoding of Section 2.8; this extension defines no second canonicalization or hashing algorithm.

The enforcing PEP MUST capture the declared facts from their authoritative interfaces and MUST NOT accept agent-supplied values as those observations. Requester and executor remain one enforcement identity. Agent arguments remain bound as parameters; authoritative facts remain available to the PDP wherever policy needs their values. The context digest is a PEP-supplied observation, not a value the PDP can independently recompute, and does not attest that a compromised PEP is honest.

Adoption MUST preserve existing approval-to-decision, transaction-token, parameter, and operation-idempotency bindings. Moving a fact into the evaluation context MUST NOT permit an earlier approval or operation identity to authorize changed effect parameters after fresh context capture. Overlapping commitments are permitted where each preserves its distinct property; adoption does not require shrinking an existing parameter digest. The Operation Profile identifies every consumer of a changed digest form and its migration rule, including vendor/target identity, amount/currency and destination facts where applicable.

The salt MUST be unpredictable, secret, qualified by Mission and version, and retained for the lifetime of every outstanding binding that uses it. It never appears in decision requests or evidence. It MUST survive restart and be consistently available to the PEP replicas that can use those bindings, on the terms Section 9.2 sets for the consumed-identifier store; a deployment MUST fail closed for a binding whose salt or descriptor cannot be recovered, rather than silently replacing either. This is persistent secret-state coordination, not a stateless digest scheme. Salting limits guessing of low-entropy values; digest-only evidence still exposes equality and linkability.

The PDP MUST return the supplied context digest as a permit condition for a covered operation. The executing PEP MUST re-resolve the declared facts and recompute the bound context with its own applicable descriptor immediately before releasing the effect, in the same step as the parameter_digest recomputation of Section 9.4. A missing binding, changed descriptor, unequal digest, or unavailable fact MUST cause refusal before any effect. A condition on an operation outside the declared binding is invalid there. The normal invalid-condition and permit-binding rules still apply; the request or retrospective evidence cannot replace the permit condition.

An inability to capture context before requesting a Decision produces a pre-decision Refusal Record. After a permit exists, failure to re-resolve or match the context produces Execution Evidence with outcome suppressed and error target_drift, not a new PDP denial reason. The extension composes with the single-use rule (Section 9.2) and never substitutes for it, changing neither single-use consumption nor retained-permit retry semantics. Every consequential phase captures and checks its own context; a fact declared prepare-stable SHOULD also be compared across prepare and commit, without reusing either phase's permit.

The verified property is a successful reread and comparison. It leaves a possible resource change between that comparison and the effect. Where the authoritative resource supports a conditional effect, the PEP SHOULD carry the bound revision as a precondition (for example If-Match or an expected-version compare-and-swap). The enforced property MUST NOT be claimed without an atomic resource-side comparison coupled to the effect. These are declared properties of this extension, not new Mission Assurance Levels. Neither covers undeclared facts, arbitrary set-valued targets, or all policy changes; non-adopters retain the TOCTOU residual.

9.2. Single-Use Identifiers

Where a single-use decision identifier is used:

  • The enforcing component MUST record consumed identifiers for at least the permit lifetime.

  • The enforcing component MUST refuse, fail closed, any second presentation of a consumed identifier. This is independent of consumption metering and applies even when the action carries no consumption bound.

  • The consumed-identifier store MUST survive an enforcing-component restart, or the component MUST fail closed for permits issued before the restart.

  • A multi-instance PEP MUST share or partition the store so a single-use identifier cannot be consumed once per replica.

9.3. Idempotency

A single-use identifier bounds executions of one permit, not permits for one action. Enforcement is an atomic state machine over the (idempotency scope, idempotency_key) pair, not a comparison against retained parameters, with three separated responsibilities: the PDP prevents concurrent double-permits before an operation completes, the PEP prevents a consumed permit from executing twice, and the resource owns the lifecycle and prior result of a completed operation.

  • For every non-idempotent operation in the irreversible-action, external-commitment, and privileged-administration classes, the Operation Profile MUST therefore also define an idempotency key.

  • Before issuing a permit for a keyed action in the irreversible-action, external-commitment, or privileged-administration classes, the PDP MUST atomically claim the pair (idempotency scope, idempotency_key) together with the request's operation identity, a canonical projection a decision-API binding defines ([I-D.draft-mcguinness-mission-authzen]). The claim is a single linearizable operation: of two concurrent requests presenting the same scope and key, exactly one obtains the claim, and the other observes it.

The claim's exactly-one-winner property has the same non-degradable shape as the metering companion's exclusive latch ([I-D.draft-mcguinness-mission-metering]). Two enforcement profiles describe how single-winner state is held across replicas:

Exact enforcement profile:

The check and the update are atomic against one authoritative record: a single serializing PDP, a shared linearizable store, or claim domains that are structurally exact by construction.

Bounded-consistency enforcement profile:

Replicas share the state without linearizable coordination and converge within a published bound, so two of them can each accept the same claim before they converge.

The metering companion applies the same two profiles to its counters ([I-D.draft-mcguinness-mission-metering]).

  • The idempotency claim MUST be enforced under the Exact enforcement profile: a single serializing PDP, a shared linearizable store, or claim domains that are structurally exact by construction.

  • The Bounded-consistency enforcement profile MUST NOT be applied to the idempotency claim: an exactly-one-winner claim cannot degrade gracefully, the same reason the metering companion bars exclusive from Bounded consistency ([I-D.draft-mcguinness-mission-metering]).

  • A PDP or store that cannot reach its declared Exact domain MUST fail closed rather than issue a permit.

  • The deployment MUST name the Exact claim domain per mediated action class or idempotency scope in its Enforcement Scope Statement (Section 5.2), not as an enumeration of individual dynamic claims.

Evaluation retransmission (PDP):

For a re-presentation whose cache key is equal to the prior decision's and whose claim matches (same idempotency scope and key, same operation identity), while the prior permit is unexpired and its evaluation_id unconsumed, the PDP SHOULD return the prior decision, so a permit response lost in transit does not lock the action out for the reconciliation window. This is the only same-key path that returns a permit: the PDP claim's purpose is narrowed to preventing concurrent double-permits before completion, never to replaying a completed result.

Permit replay prevention (PEP):

Unchanged: the single-use rule of Section 9.2 is itself atomic. Before releasing the effect of a use_limit-bearing permit, the enforcement scope MUST atomically consume, or atomically reserve and then confirm, the evaluation_id in a store that is linearizable across every PEP replica of the scope. Two replicas MUST NOT both succeed in consuming the same identifier; a replica that instead observes an already-consumed identifier treats the presentation as consumed, not as a fresh single use, a decision-API binding's permit_consumed classification ([I-D.draft-mcguinness-mission-authzen]).

Operation idempotency (Resource Server / Operation Profile):

The resource, not the PDP, owns the key's lifecycle and the prior result once an operation completes: for a COMPLETED duplicate the resource returns the prior operation result under the Operation Profile's rules. A fresh authorization denial is not the vehicle for result replay; the claim states below govern only whether a new permit issues, never what the resource returns for a completed key.

The claim resolves per state, keyed on whether the presented (idempotency scope, idempotency_key) pair matches an existing claim and whether the request's operation identity equals the one the claim was made under:

Table 6: Idempotency claim state resolution
Claim state Same key + same operation identity Same key + different operation identity
claimed / permit-issued (unconsumed, unexpired) return the prior decision (retransmission) idempotency_conflict, terminal
reserved / outcome unresolved duplicate_suppressed, transient (next_action: retry, retry_after within the reconciliation window) idempotency_conflict, terminal
indeterminate (window closed, outcome undetermined, Section 11) duplicate_suppressed, terminal (next_action: none); resolution is operational, never a new permit idempotency_conflict, terminal
completed (within window or tombstoned horizon) duplicate_suppressed, terminal (next_action: none); the prior result is available from the resource under the Operation Profile idempotency_conflict, terminal
failed deployment policy: retry as a NEW operation requires a new key idempotency_conflict, terminal
expired past the declared horizon outside the guarantee; treated as new. An indeterminate tombstone does not expire into this state (Section 11) outside the guarantee

A different operation identity under the same key is always a conflict, never a new execution: an idempotency key identifies one intended execution of one normalized request, the same discipline HTTP's own Idempotency-Key handling applies, restated here in the family's own terms. A consumed key never yields a second execution: retransmission returns the prior decision, and a completed operation's result is replayed by the resource, not re-executed. An intentional re-execution of the same normalized action is a new operation under a new idempotency key, never a retry under the consumed one, and an action-bound approval (Section 5.4) authorizes that new operation as such, never re-execution under the consumed key.

  • The idempotency scope is, at minimum, the Mission, the subject and the actor, the audience, the action, and the resource; a deployment MAY narrow it further and MUST publish the scope in its Enforcement Scope Statement. Volatile members MUST NOT be added to the scope.

  • Where compound-action phases share an action identifier, the idempotency scope MUST include the phase (Section 2.10).

  • For the high-consequence classes the deployment MUST retain a durable consumed-key record (a tombstone) for at least its declared idempotency horizon, published in the Enforcement Scope Statement. Tombstones are enforced, not merely retained: within that horizon a claim against a tombstoned key MUST be refused, never treated as a fresh claim. Outside those classes a deployment MAY scope the guarantee to the reconciliation window (Section 11), and it MUST publish which posture applies.

The PDP makes no claim for a reversible consequential write's idempotency-key control (Section 2.9): that control is not one of the classes above. Narrowing the PDP claim to those classes does not narrow this guarantee; it moves the enforcement point. The enforcing PEP or the resource MUST instead atomically reserve the (idempotency scope, idempotency_key) pair against a concurrent duplicate, and MUST retain the reserved-or-completed record for at least the retention posture the deployment publishes above for keys outside the high-consequence classes, so a duplicate arriving after the permit's own short validity window still resolves against the recorded key rather than executing again. This is the same single-winner discipline as Section 9.2, applied to the key instead of the decision identifier.

9.4. Execution Reverification

The executing PEP MUST verify the permit's bindings (Section 2.9) and MUST recompute the parameter_digest against the parameters it is about to use. A mismatch MUST cause refusal: the permit does not authorize the changed parameters.

The phase comparison of Section 2.10 runs at this same use boundary. A mismatch suppresses execution and is recorded as Execution Evidence, not as a pre-decision Refusal Record; an inability to establish phase before asking for a Decision is a pre-decision refusal instead.

A permit authorizes initiation. An action still executing when the permit expires MAY run to completion, unless the action class requires an execution lease, which the Operation Profile defines; when a lease is required the executing PEP MUST stop or renew before the lease expires. For the irreversible-action, external-commitment, and privileged-administration classes the Operation Profile MUST define an execution lease or a published maximum execution duration, and run-to-completion applies only within that bound.

This closes the time-of-check to time-of-use gap and prevents a permit from being replayed for a different request (the parameter_digest mismatches). For non-idempotent consequential writes, irreversible actions, external commitments, and privileged administration, the single-use decision identifier prevents repeat execution under one permit (Section 9.2), and the required idempotency key prevents repeat execution of the same normalized action across separately obtained permits (Section 9.3).

9.5. Named Enforcement Claims

The strongest properties this profile enables are deployment properties, not protocol properties: complete PEP placement, a trusted freshness source, and credential custody are things a deployment does, not things a token proves. This section defines them as named claims, each a conjunction of conditions specified elsewhere in this profile, each individually verifiable, and none implied by base conformance. A deployment publishes the claims it makes, and the classes each covers, in its Enforcement Scope Statement (Section 5.2), and demonstrates them with the negative tests of Section 12. The two claims together are the High-Assurance Agent bar of the Mission Assurance Levels ([I-D.draft-mcguinness-mission-architecture]).

9.5.1. Agent-Compromise-Resistant Enforcement

"Protects against agent compromise" is a verifiable claim, not a label. A deployment claims agent-compromise-resistant enforcement only when, for the high-consequence classes, the four conditions below hold and the deployment's path scope is declared and audited as this section then states. Each condition below is MUST under this claim regardless of its base-profile level; the table at the end of this section records each condition's base-profile level.

  • the sender-constraint private key is held by the mediating PEP, not by the agent component, gateway custody being the realizable shape (Section 5.6), and is generated in the mediating PEP or its HSM and never transferred from the agent;

  • each such action requires an action-bound approval (Section 5.4);

  • the disclosure rendered to the Approver for an action-bound approval is derived from the bound normalized parameters by a component isolated from the agent (the approval service or the mediating PEP), never composed by the agent, and the rendering SHOULD be committed as Consent Evidence, raising the base profile's MAY (Section 5.4); and

  • the Mission state source for those classes is an active freshness mechanism, not token-lifetime expiry (Section 2.5).

The fifth term of the claim is the path scope, and it is not a protocol-verifiable conformance condition; this claim does not present it as one. That governed work runs with no unmediated path to the mediated classes, and with no token-endpoint, refresh, or exchange path by which the agent obtains a fresh usable credential for them bound to a key it controls, is the deployment audit obligation the harness profile already names ([I-D.draft-mcguinness-mission-harness]). It is declared in the Enforcement Scope Statement, in the mediated-paths declaration and the unmediated-path exclusions (Section 5.2), with the declared scope covering fresh-credential paths as well as action paths, and it is audited organizationally, with the negative tests of Section 12 as its observable check. The claim therefore reads: the four conditions above, each verifiable, plus the declared-and-audited path scope. The weakest term of that conjunction is a self-declared scope statement, and a deployment making this claim states that plainly rather than implying a stronger term.

A deployment MAY satisfy the action-bound approval condition for a batch through one approval that binds an enumerated list of parameter digests, each consumed single-use, so the human pause stays meaningful at volume rather than degrading into per-action rubber-stamping (Section 5.4).

A deployment that leaves any of the four conditions unmet, or whose Enforcement Scope Statement does not declare the path scope, MUST NOT claim agent-compromise-resistant enforcement; it may still claim base runtime conformance. The claim names exactly the set of classes it covers. This claim additionally requires execution-environment attestation of the scope statement, the condition Section 9.5.2 states for both High-Assurance Agent claims.

The guarantee is the conjunction of these conditions, not any one of them. Mediated custody alone prevents only off-path presentation of the credential: the agent still initiates every action and supplies every parameter, and the mediating PEP executes any in-scope action the agent requests. What bounds a compromised agent is custody and complete PEP placement and correct classification acting together, so the claim is no stronger than the weakest of the three, and "mediated custody" on its own is not the property.

Each unmet condition loses a specific property; the base-profile column records the level each condition has outside this claim:

Table 7
Condition unmet Base-profile level Property lost
Custody in the mediating PEP SHOULD (Section 5.6) Key exfiltration
Path scope declared and audited (no unmediated path to the actions or to fresh credentials for them) Declared in the Enforcement Scope Statement (Section 5.2); the audit is this claim's term Off-path execution or fresh-credential acquisition
Action-bound approval SHOULD (Section 5.4) Unattended high-consequence action
Agent-independent approval rendering Stated only by this claim Approval decided on agent-composed disclosure
Active-state freshness MUST (Section 2.5) Revocation lag bounded only by token lifetime

9.5.2. Trifecta Containment

The name is unrelated to Mission Containment ([I-D.draft-mcguinness-oauth-mission-containment]), the issuer-held overlay that removes capability from a Mission's Authority Set. Trifecta containment names resistance to the exfiltration trifecta below; Mission Containment names a governance operation over the Authority Set. Context distinguishes the two, and a deployment that runs both keeps the terms separate in its Enforcement Scope Statement.

An agent that holds private-data authority, is exposed to untrusted content, and can communicate externally combines the three ingredients of injection-driven exfiltration (Section 17.3). The profiles gate each ingredient separately; this claim names the composite. A deployment claims trifecta containment for a Mission's governed work only when all of the following hold, each MUST under this claim regardless of its base-profile level:

  • Private-data exposure. Least exposure (Section 5.8) is applied: the context surfaced to the agent is scoped to the active Mission, and credential material stays out of the agent for every mediated class (Section 5.6).

  • Untrusted content. A taint policy for untrusted content, as the harness profile defines one ([I-D.draft-mcguinness-mission-harness]), is in force and its egress rule is enforced, not advisory: a consequential external-communication or external-commitment action whose bound parameters derive from tainted content (or, under session-level taint, any such action in a tainted session) obtains a fresh action-bound approval (Section 5.4) or is refused. The harness profile's pre-consented egress carve-out applies: a send to a destination the Approver concretely named at approval is not human-gated on taint grounds alone, and for content-derived destinations, those outside the approved set, the full polarity, every tainted egress human-gated, remains a condition of this claim. Where the decision-API binding carries taint context ([I-D.draft-mcguinness-mission-authzen]), the PDP enforces the rule; otherwise the harness does, and the scope statement says which.

  • External communication. The external-communication and external-commitment classes are mediated: no unmediated path, the scope statement's egress-channel enumeration covers them ([I-D.draft-mcguinness-mission-harness]), and the sender-constraint keys are held by the mediating PEP (Section 5.6).

The claim is published with the enforcement-scope conformance statement (Section 5.2). It is containment, not immunity: the limits of Section 17.3 stand, in particular within-scope laundering, bounded quantitatively where an egress-volume bound is metered ([I-D.draft-mcguinness-mission-metering]), and PEP-placement completeness.

Both this claim and agent-compromise-resistant enforcement (Section 9.5.1) rest on the execution-environment scope statement, a self-declared artifact: the wire alone does not let a relying party distinguish a deployment that built the declared isolation from one that only published the statement.

The conditions the two claims name do not share one evidence type. The table below fixes, per condition: a stable identifier, the evidence that authoritatively establishes it, the scope that evidence covers, the verifier and trust anchor a relying party checks it against, the freshness the evidence must carry, and the behavior when the evidence is missing.

Table 8
Condition Evidence producer/type Covered scope Verifier / trust anchor Freshness Failure behavior
key_custody: the sender-constraint key is held and generated in the mediating PEP, never transferred to the agent (Section 9.5.1, Section 5.6) EAT ([RFC9711]) The mediating PEP's key-holding component The relying party, against the attester identity and appraisal policy the Enforcement Scope Statement selects for this row The nonce, timestamp, or session-binding rule the statement selects for this row, current at the session or credential issuance the claim covers Absent, stale, or unverifiable evidence, or a missing selection this row requires, makes the claim unavailable
isolation_boundary: the execution environment separates the agent component from the mediating PEP, approval service, and rendering component, and credential material stays out of the agent (Section 9.5.1, Section 9.5.2, Section 5.6) EAT ([RFC9711]) The boundary between the agent component and each isolated component The relying party, against the attester identity and appraisal policy the statement selects for this row The freshness rule the statement selects for this row, current at the session the claim covers Absent, stale, or unverifiable evidence, or a missing selection this row requires, makes the claim unavailable
workload_measurement: the attested component runs the software the Enforcement Scope Statement declares (Section 9.5.1, Section 5.2) EAT ([RFC9711]) Each component the statement names as isolated or mediating The relying party, against the attester identity, appraisal policy, and reference values the statement selects for this row The freshness rule the statement selects for this row, current at attestation time Absent, stale, or unverifiable evidence, or a missing selection this row requires, makes the claim unavailable
approval_policy: each action in the claimed classes requires action-bound approval (Section 9.5.1, Section 5.4) Signed configuration, or independent service evidence from the approval service The approval service's enforcement over the classes claimed The auditor reading the configuration, against the approval service's operator key Current with the approval service's active policy version Unknown or unverifiable configuration makes the claim unavailable
rendering_independence: the disclosure is derived from the bound normalized parameters, never composed by the agent (Section 9.5.1, Section 5.4) Independent service evidence, the committed Consent Evidence where available The rendering component's output for the approval event claimed The party evaluating the evidence, against the rendering component's or Consent Evidence signer's key Per approval event An approval event lacking this evidence cannot be counted toward the claim; a class with no such event verified does not carry the claim
freshness_sourcing: the Mission state source is an active freshness mechanism, not token-lifetime expiry (Section 9.5.1, Section 2.5) Signed configuration naming the state source and its staleness bound ([I-D.draft-mcguinness-mission-architecture]), or independent evidence from the state source The state source used for the classes claimed The auditor reading the Deployment Profile, against the state source's operator key The published staleness bound A stale or unverifiable state source makes the claim unavailable
path_completeness: no unmediated path reaches the mediated classes or a fresh usable credential for them (Section 9.5.1) Negative tests (Section 12) and organizational topology audit Every path to the classes claimed, deployment-wide The auditor who ran or reviewed the tests and audit, an organizational anchor Per the deployment's stated audit cadence Untested, stale, or a found unmediated path makes the claim unavailable
least_exposure: the context surfaced to the agent (prompts, retrieved documents, memory, tool catalogs, schemas, and downstream responses) is scoped to the active Mission (Section 9.5.2, Section 5.8) Signed configuration naming the exposure-scoping rule for the classes claimed, and negative tests demonstrating out-of-Mission context is withheld The exposure-scoping rule's coverage over the classes claimed The auditor reading the configuration, against the deployment's operator key Current with the deployment's active exposure-scoping configuration version Unknown, stale, or unverifiable configuration, or a found unscoped exposure, makes the claim unavailable
taint_egress_topology: the taint policy and egress rule are enforced, and every egress channel is enumerated (Section 9.5.2) Topology audit (channel enumeration) and negative tests Every egress channel available to the agent's execution environment The auditor, an organizational anchor Per audit cycle or channel-inventory change A stale enumeration or a found unenumerated channel makes the claim unavailable

A deployment claiming either named property MUST bind its statement to the evidence this table names, for each condition its Enforcement Scope Statement claims. Evidence that is unknown, stale, or unverifiable for a required condition makes the named claim unavailable.

For each condition this table assigns to EAT evidence, the Enforcement Scope Statement MUST select the claim or profile identifiers the attestation carries, the expected measurements or reference values it is appraised against, the appraisal policy applied, the attester identity, and a checkable nonce, timestamp, or session-binding freshness rule. Entity Attestation Token ([RFC9711]) evidence establishes the execution-environment fact a row assigns to it only against those selections; where a selection this paragraph names is absent, the token is a declaration or evidence input, not proof, and the named claim is unavailable on the same terms. Verified EAT evidence does not by itself establish the exposure, approval, rendering, freshness, path, or topology facts the table assigns elsewhere, and a deployment MUST NOT represent EAT evidence alone as satisfying those. The requirement is scoped to these two High-Assurance Agent claims; base runtime conformance does not require this evidence map, and a deployment claiming only the base profile MAY publish its scope statement unattested.

10. Consumption Bounds Fail Closed

This document defines no cumulative consumption bounds and no metering machinery. Cumulative bounds on Mission activity (budget, call counts, wall-clock duration), and the reserve, commit, lease, settlement, and distributed-consistency semantics that enforce them, are defined by an experimental companion ([I-D.draft-mcguinness-mission-metering]).

What this document fixes is the failure posture. As with all constraints, an unmetered or unrecognized consumption bound MUST cause refusal rather than silent pass-through: when an applicable entry's constraints, or the Mission Intent itself, carries a bound that expresses cumulative consumption and the deployment does not meter it, the PDP MUST refuse a consequential action governed by it. A deployment MUST NOT advertise consumption enforcement it does not perform.

11. Runtime Enforcement Evidence

Every PDP decision on a consequential action MUST produce a runtime enforcement evidence record. A PEP refusal for a consequential action, whether before a PDP decision (for example, credential-validation failure or PDP unreachability) or after a PDP permit (for example, a parameter_digest mismatch), MUST likewise produce a runtime enforcement evidence record with the available fields and the failure condition. This document fixes the minimum record content and local integrity requirements; the concrete record schemas, canonical byte representation, and integrity envelope, together with the Mission Receipt's portable schema (Section 11.2), are defined by Mission Runtime Evidence ([I-D.draft-mcguinness-mission-runtime-evidence]).

A record captures decision inputs, the applicable policy and authority references, the result, and the failure condition. No requirement in this section asks for the model's internal reasoning, and a deployment SHOULD NOT record model chain-of-thought in enforcement evidence: it is high-sensitivity content with no verification value the decision inputs do not already carry.

11.1. Execution-Outcome Evidence

For an action in the high-consequence classes, the executing PEP MUST also produce, after it acts, an execution-outcome record keyed to the permit's evaluation identifier, recording at least success or failure and the effective parameter digest actually executed, alongside the authorized parameter digest the permit bound ([I-D.draft-mcguinness-mission-runtime-evidence]). This lets a decision and its execution be reconciled one to one, so a permit that was obtained but executed more than once, or executed for different parameters, is detectable after the fact. The detailed object schema is the Execution Evidence Object, defined by the runtime evidence companion ([I-D.draft-mcguinness-mission-runtime-evidence]).

Reconciliation is bounded in time by the reconciliation window, orphan-detection component, and alerting obligation the Enforcement Scope Statement declares (Section 5.2): an execution-outcome record is expected for each decision within the window, and the named component detects orphaned evidence (a decision with no matching execution-outcome record within it) and sequence gaps in a Mission's records (Section 11.3).

An unknown outcome has an owner and a deadline, not only a window: the declared component MUST actively reconcile each unresolved outcome before the window closes, querying the resource and matching evidence, and record the outcome the evidence establishes (completed, failed, or suppressed, [I-D.draft-mcguinness-mission-runtime-evidence]). Evidence, never the deadline, determines the result: an outcome the component cannot establish stays undetermined-outcome, is escalated under the declared alerting obligation, and is never synthesized into a terminal result. Reconciliation survives the Mission: once the Mission is non-active, it MAY record the outcome of work already initiated and MUST NOT admit a new effect under that Mission (an action already executing follows the run-to-completion rule of Section 9.4, unchanged). Consumed and reserved decision identifiers and idempotency claims persist across Mission lifecycle transitions for at least the reconciliation window and any declared tombstone horizon (Section 9.3): termination does not erase them, so a post-termination retry resolves against the recorded claim rather than executing again. An unresolved claim never becomes reusable through time alone: when the window closes on an undetermined outcome, the claim converts to a non-reusable indeterminate tombstone, retained for at least the declared idempotency horizon and released only by an evidence-recorded operational resolution, never by expiry into a fresh claim.

11.2. Mission Receipt

A Mission Receipt is the portable, tamper-evident projection of runtime enforcement evidence: portable evidence of exactly what its kind claims (a rendered decision, an executed action's terminal outcome, or a pre-decision refusal, [I-D.draft-mcguinness-mission-runtime-evidence]), as a Mandate ([I-D.draft-mcguinness-mission-mandate]) is portable evidence about the Mission itself.

A Mission Receipt MUST identify the Mission the action was authorized under, as mission.id and mission.issuer; a verifiable Mission projection such as the cross-domain grant's mission claim ([I-D.draft-mcguinness-oauth-mission-cross-domain]) travels beside the receipt at its carriage layer, never in place of the tuple. It MAY project the policy decision (the decision identifier and result), the policy state it was decided under (the PDP's policy-view version and the Mission's policy_version), the executor (the authenticated actor and any actor-delegation chain), the custody boundary (whether a mediating PEP held the credential, Section 5.6, carried as a profiled issuer assertion), the downstream target (the resource and audience), the outcome, the timestamps, and, where a deployment chains receipts, the digest of a predecessor Mission Receipt. The portable schema, receipt kinds, evidence references, verification, and chaining are defined by [I-D.draft-mcguinness-mission-runtime-evidence], which fixes the minimum join and integrity core every Mission Receipt carries; the members above are what a receipt MAY project beyond that core.

11.3. Record Integrity and Retention

The following requirements apply to every record:

  • The Resource Server runtime profile MUST define the record's concrete serialization and canonicalization before storage and integrity protection. JSON records SHOULD use JCS [RFC8785] under the issuance profile's canonicalization rules.

  • It MUST be append-only and integrity-protected; the enforcement scope MUST name the mechanism (a hash-linked log, signed segments, a transparency anchor, or equivalent). Where a JSON record is individually signed, the evidence_envelope JWS convention of the runtime evidence companion ([I-D.draft-mcguinness-mission-runtime-evidence]) is the suite's one signing convention for evidence objects and SHOULD be used, with the protected typ that convention fixes and a cty that names the record's own media type, rather than a record-specific signing scheme.

  • Raw parameters MUST NOT appear in the record; when retained for forensics they MUST be in separately access-controlled storage referenced by an opaque identifier, with only the parameter_digest in the record. A deployment SHOULD retain the normalized parameters of denied high-consequence attempts in that forensic store, so an auditor can reconstruct what was refused, not only that a refusal happened.

  • Records for one Mission MUST carry a deployment-defined sequence indicator, scoped per emitter, so gaps are detectable and one emitter's records order without relying on wall-clock time alone. This does not by itself reconstruct Mission-wide decision order across emitters; that ordering is best-effort, from the correlation members and each record's timestamps together ([I-D.draft-mcguinness-mission-runtime-evidence]).

  • The retention window declared in the Enforcement Scope Statement MUST be no shorter than the Mission's audit horizon, as defined in the Mission Record section of [I-D.draft-mcguinness-oauth-mission].

Digest encoding is uniform across this document family: every digest a family document defines uses the sha-256: prefixed base64url, no-padding encoding of the issuance profile's integrity-anchor rules ([I-D.draft-mcguinness-oauth-mission]). The exceptions are externally fixed encodings: the COSE hashed payload of the audit companion's Signed Statements ([I-D.draft-mcguinness-mission-audit]) carries the raw digest bytes the COSE hash-envelope mechanism requires, and the attenuation substrate's parent-hash form ([I-D.draft-niyikiza-oauth-attenuating-agent-tokens]) is unprefixed base64url. Each exception is identified by its carrying context; the sha-256: prefix appears in neither.

12. Negative Conformance Tests

The agent-compromise-resistant claim (Section 9.5.1) rests on PEP-placement completeness, which is a deployment property no protocol element proves. A deployment SHOULD demonstrate it with negative tests: each of the following bypass attempts MUST be refused or contained by a conforming deployment that makes the relevant claim, and a deployment SHOULD retain evidence that it ran them.

Table 9
Bypass attempt Required outcome
Agent calls a mediated tool directly, around the PEP Blocked (no unmediated path)
Agent presents a cached token after Mission revocation Blocked within the freshness bound
Agent resumes background work after Mission state went stale Paused or refused on resume re-check
Agent delegates to a sub-agent with no explicit delegation Blocked (no inheritance by session ancestry)
Agent alters action parameters after the permit is issued Blocked by parameter-digest reverification
Target record changes under an unaltered request, for a class claiming Evaluation-Context Binding Blocked by context reverification; post-permit suppression is target_drift
Agent invokes approval resolution, or supplies the resolving principal, to satisfy required approval Refused; the approval does not count and the action fails closed
Agent requests or receives context outside the active Mission's scope Refused or withheld
Agent egresses over a secondary channel (DNS, logs, shared store) Blocked if the channel is in the mediated set; otherwise declared outside the claim

These are the observable form of the requirements stated normatively above; a deployment's Enforcement Scope Statement (Section 5.2) names which it enforces and which paths it excludes.

The agent-isolated evidence-emission condition (Section 5.7) has its own observable form; a deployment claiming it SHOULD demonstrate, per covered emitter:

Table 10
Bypass attempt Required outcome
Agent attempts to export or read an evidence-signing private key Refused
Agent submits a complete evidence object, or a raw digest, for signature Refused
An authenticated emitter requests a signature for a different record type, role, scope, or audience Refused
One emitter identity invokes another emitter's key or emission path Refused
A separated evidence key is presented for use as a sender-constraint or credential-issuance key Refused, where the deployment claims key separation
The evidence signer is unavailable No fallback to an agent-held key, an unsigned record represented as verified, or an unconstrained signing path

These tests demonstrate the exposed control surface; they do not prove the absence of a hidden bypass, which remains an attestation, audit, and path-completeness property.

The Remote Decision Channel's baseline requirements (Section 2.4) are not a claimed extension: they apply to every PEP/PDP boundary that is not co-resident. A deployment with such a boundary SHOULD demonstrate them with negative tests: each of the following bypass attempts MUST be refused, and a deployment SHOULD retain evidence that it ran them.

Table 11
Bypass attempt Required outcome
A PEP omits the request signature, or presents an unregistered PEP identity Refused before evaluation, with no PDP evaluation
A decision request is modified after the PEP signs it Refused before evaluation, with no PDP evaluation
A PEP submits a decision request for an enforcement scope it is not authorized for Refused before evaluation, with no PDP evaluation
A decision response carries no signature, or one the PEP does not recognize Refused; the PEP MUST NOT act on the decision
A decision response is modified after the PDP signs it Refused; the PEP MUST NOT act on the decision
A validly signed decision response captured for one request is presented as the response to a different request Refused; the PEP MUST NOT act on the decision

A co-resident PDP and PEP satisfy Section 2.4 structurally and need no separate channel mechanism; these tests apply only where the boundary is not co-resident.

This profile's enforcement claim is bounded by declared scope (Section 5.2). A deployment MUST NOT claim runtime enforcement for a resource, action class, authority-entry type, or execution path outside that scope, and a deployment SHOULD demonstrate that the boundary fails closed:

Table 12
Bypass attempt Required outcome
An Enforcement Scope Statement omits a required baseline declaration The statement fails validation
A declared resource or excluded path lacks its required perimeter disposition The statement fails validation; a legacy resource string has the defined mediated shorthand (Section 5.2)
An Enforcement Scope Statement claims a named assurance extension with no attached declaration The statement fails validation
A claim names a resource, action class, authority-entry type, or execution path outside the declared scope The claim is rejected as out of scope

These tests exercise the statement's own validator and the scope predicate a claim is checked against; they do not by themselves prove that everything a live deployment actually mediates matches its own published statement, which remains an audit property of that statement.

13. Deployment Considerations

Three properties govern how this profile scales.

Token lifetime trades against the enforcement layer. The issuance profile recommends short-lived tokens because, in an issuance-only deployment, token expiry is the revocation cutoff wherever a Resource Server does not introspect. Where this profile's enforcement covers the high-consequence classes with an active-freshness state source, the PDP is the cutoff for the actions that matter, and a deployment MAY extend token lifetimes for issuance-load reasons without silently losing the kill switch; where issuance gating is the only control, short lifetimes remain the control and the issuance profile's recommendation stands. The choice belongs in the Enforcement Scope Statement: what stops a revoked Mission, at what latency, is a fact that statement already declares (Section 5.2).

The consistency unit is the Mission. Every strongly consistent requirement this profile and its companions impose, the atomic active check, single-use decision identifiers, and the consumption counters and exclusivity latches of the metering companion ([I-D.draft-mcguinness-mission-metering]), is scoped to one Mission. A multi-node PDP therefore shards its state by the Mission Identifier with no cross-shard coordination; only a deployment-configured aggregate bound crosses that partition and is provisioned as its own consistency domain. Fail-closed applies per action class (Section 2.11): a PDP outage stops consequential work and nothing else.

Decision latency is budgeted by class. The synchronous cost of this profile is confined to the actions whose consequences warrant it. Classification (Section 5.3) is the first lever: only consequential actions need a permit, and only the high-consequence classes must hold a synchronous gate. For the rest of the governed surface the common-case decision is local: a PDP embedded in or colocated with its PEP evaluates against a materialized policy view (Section 7.1) whose network cost is paid once per freshness window, not per action; a permit's validity window covers the follow-through of one normalized action (Section 8); the decision API's batch evaluation amortizes fan-out (Section 15); and metering leases amortize the metered classes ([I-D.draft-mcguinness-mission-metering]). Offline attenuation ([I-D.draft-mcguinness-oauth-mission-attenuation]) removes the issuer from sub-agent fan-out entirely; its Experimental status tracks the maturity of its substrate, not a judgment that localized offline validation is optional at machine speed. A deployment for which a synchronous gate on a low-consequence class is too expensive reclassifies deliberately and records the choice in its Enforcement Scope Statement, rather than weakening the gate on the classes that matter.

Locality ends where the Mission's shared state begins. The single-use identifier store and idempotency match (Section 8), the metering counters and exclusivity latch ([I-D.draft-mcguinness-mission-metering]), and the per-Mission evidence sequence ([I-D.draft-mcguinness-mission-runtime-evidence]) are strongly consistent state scoped to one Mission. An embedded PDP evaluating an action that consults any of them pays the round trip to the Mission's consistency domain wherever the decision runs, so the materialized view localizes only the actions that touch none of them; for the high-consequence classes, whose permits are single-use, the Mission's domain, not PDP placement, sets the latency floor. A deployment prices this deliberately: colocate a Mission's domain with the PEPs that act under it, or accept the hop for the classes that require it.

14. Operational Considerations

Deployment Considerations (Section 13) describes sizing and placement. This section describes dependency outages and the operator's declared response. It composes with the Shared Consistency and Availability Rule section of [I-D.draft-mcguinness-mission-control-plane]: operational guidance does not manufacture freshness or add emergency authority to an ordinary Mission permit.

14.1. Outage Blast Radius

The primary axis is action class, as in Section 5.3 and Section 2.11. The security model's Revocation-to-Action Latency table describes a different axis: what a committed revocation stops ([I-D.draft-mcguinness-mission-security-model]).

Table 13
Action class / reliance Issuer or state-source outage PDP outage Signals outage
Local computation with no governed resource effect No new authority is needed; other dependencies can still halt it No permit dependency No state-delivery dependency
Governed low-consequence action using credential-lifetime freshness Existing credential and every other applicable bound remain authoritative; renewal stops if its issuer is unavailable Follow the declared gate, if any; an unavailable gate is not permission Credential expiry still bounds reliance
Consequential action requiring a permit Continue only if the required state and other inputs remain valid or can be obtained from an independently available authoritative source No new permit; an already-issued permit may be used only within all of its bounds and the declared posture Use an available authorized fallback within the existing state horizon, or stop
High-consequence action The active-freshness requirement still applies; no downgrade to credential-lifetime-only reliance Same permit rule, including single-use consumption and required online controls Fallback must still satisfy the class's active-freshness requirement

Every cell is conditional on dependency topology. An issuer outage does not imply that an independently operated authoritative state source is down. Conversely, a PDP or a fallback state source may depend on the failed issuer. New issuance or mutation stops when its required authoritative control-plane dependency is unavailable, not merely when a component with a particular name fails.

Continued execution requires the credential, state observation, permit, parameter binding, use limit, metering/latch state, and every other applicable input to remain valid. A fallback cannot re-stamp an older observation. Paths outside the enforcement claim remain outside it: continued effects or reconstructed provenance on such a path do not demonstrate available Mission enforcement. Per-entry perimeter dispositions can refine the table when that declaration shape is adopted; they do not change the action-class requirements.

14.2. The Remaining Window Is the Ride-Through

A deployment SHOULD publish, for each action class, the availability consequence of its declared staleness bound and the recovery objective considered when choosing it.

The ride-through is the minimum remaining applicable credential, state, permit, and other validity window at the point of use, subject to prior consumption and all non-temporal checks. It is not a new window that begins when an outage is detected. A bound shorter than the dependency's recovery objective describes a designed halt. Recovery objectives can inform a bound within the security ceiling; they cannot justify extending that ceiling during an incident or resetting a permit's validity.

The PDP-unavailability posture already declared in the Enforcement Scope Statement can choose a stricter immediate stop or bounded use of existing permits. It cannot authorize a missing decision, reuse a consumed permit, or skip parameter, action, state, and other permit conditions.

14.3. Positive Break-Glass Is a Declared Separate Mode

A deployment providing positive emergency authority SHOULD declare the mode in its Enforcement Scope Statement, require dual control and automatic expiry, retain truthful activation and action evidence, and identify the affected actions as excluded from its Mission enforcement claim.

Evidence identifies the independent authority, activation, scope, expiry, and excluded claim. It does not fabricate a PDP Decision or Mission permit when the ordinary path could not produce one. Activations are counted and reviewable. The ordinary Mission path continues to fail closed; emergency authority is a separate mode, not a successful result of that path. The Positive emergency authority is separate section of [I-D.draft-mcguinness-mission-control-plane] states that separation.

14.4. Replication Is a Declared Deployment Property

A deployment using replica-served state sources SHOULD disclose, in its Enforcement Scope Statement, the replication model and lag counted inside each published staleness bound.

This recommends no consensus protocol or leader architecture. The observation must be justified by the deployment's consistency mechanism; a signature or new signing key does not turn a lagging value into a fresh one, per the Fresh observations, not fresh signatures section of [I-D.draft-mcguinness-mission-control-plane]. Operators watch observation age, available fallback sources, propagation gaps, permit refusals, and recovery progress. Metrics targets and fleet benchmarks are separate deployment work.

15. Decision API Binding

The decision contract of Section 7 is abstract: it fixes the inputs, the permit, and the invariants, not a wire format. A decision API binding maps that contract onto a concrete PEP-PDP wire protocol. For deployments using the OpenID AuthZEN Authorization API [AUTHZEN], the normative binding is the Mission-Bound Runtime Enforcement: AuthZEN Profile [I-D.draft-mcguinness-mission-authzen], which specifies how the Mission and actor inputs, the decision and evidence objects, and the denial classification map onto the AuthZEN request and response. Other decision APIs may be bound by other specifications. A deployment that uses a different decision API MUST specify that binding in the same way.

This document defines no binding of its own. Keeping the binding in a separate specification preserves substrate-independence: the enforcement contract, action classification (Section 5.3), PEP placement (Section 5.5), parameter binding (Section 8), the consumption-bound failure posture (Section 10), and runtime enforcement evidence (Section 11) are the substance, and they do not depend on the decision wire.

16. Out of Scope

The following compose with this profile but are deferred to future work and are not required to enforce it:

Structured per-argument attenuation of tool grants ([I-D.draft-niyikiza-oauth-attenuating-agent-tokens]) is a related issuance/delegation-layer primitive, not part of this runtime profile.

17. Security Considerations

17.1. What This Layer Adds, and Its Limits

Gating every consequential action against the current Mission prevents an active Mission from acting as ambient authority (Section 7, Section 8, Section 11), closing the approval-to-execution gap the issuance profile leaves open.

It governs actions, not meaning. A request can satisfy every structural check while its content does harm no schema names: the approved send_email whose body carries what an injection extracted. The profile's answer is to convert semantic risk into structural signals rather than ask the PDP to judge content: provenance (the harness taint context and its default-taint polarity, [I-D.draft-mcguinness-mission-harness]), composition (the quarantine pattern, [I-D.draft-mcguinness-mission-architecture]), egress-channel enumeration (Section 9.5.2), volume bounds and exclusivity ([I-D.draft-mcguinness-mission-metering]), and action-bound re-consent for the highest classes (Section 5.4). A deployment that additionally runs a content evaluator (data-loss prevention, an LLM-based content policy) composes it as Resource policy at the PDP: the verdict enters the decision as deployment-defined context, only ever narrows, and its latency belongs to the action class that invokes it (Section 7.2).

It does not make a compromised enforcement component safe. A compromised PEP can decline to consult the PDP or ignore its decision; a compromised PDP can return whatever decisions it chooses. Decision and enforcement evidence make such behavior auditable after the fact; they do not prevent it in the moment. Signed, externally verifiable decisions are future work (Section 16).

17.2. Placement and Bypass

The strongest decision logic is void if the PEP is not at the last controllable boundary, or if an unmediated path can reach the action (Section 5.5). A deployment's claim is only as strong as the set of execution paths it actually mediates, and that set is the Enforcement Scope Statement's mediated-paths declaration (Section 5.2).

17.3. Prompt Injection and Exfiltration

This profile assumes the agent can be prompt-injected and does not try to prevent that. It constrains what an injected agent can do by gating the external-communication leg: external communication is a consequential action, so every attempt is checked against the Authority Set, bound to parameters, metered, and (with mediated execution, Section 5.6) made unreachable to an agent that does not hold the egress credential. This is the architectural defense, gate the exfiltration against an authority the injection cannot widen, rather than make the agent injection-proof. Least exposure (Section 5.8) is the input-side complement: it shrinks what an injected agent can read and what within-scope laundering can draw from, without changing the limits below.

Two limits are inherent and a deployment MUST NOT overstate the guarantee. First, it is exactly as strong as PEP-placement completeness: every exfiltration channel an agent runtime offers (DNS, logs, error strings, a write to a store another process reads) is a channel that must be mediated, and this profile gates the channels routed through a PEP but cannot prove a deployment enumerated them all (the Achilles' heel of Section 5.5). Second, this profile provides no information-flow control: it evaluates each action in isolation against authority over resources and actions, so a sequence of individually-authorized steps can compose into an exfiltration no single check catches (within-scope data laundering), and cumulative consumption bounds, where metered ([I-D.draft-mcguinness-mission-metering]), bound volume, not flow. Closing that needs a separate taint or information-flow layer. A coarse session-level mitigation, downgrading egress authority once untrusted content has entered a session, is available at the harness layer ([I-D.draft-mcguinness-mission-harness]); it raises the bar but is not information-flow control.

17.4. Relationship to Inspection-Based Controls

Inspection-based runtime defenses for agentic systems share this profile's premise that the agent application is part of the attack surface (Section 5.6), and combine deterministic checks over the message flow with semantic checks over the agent's intent. This profile is the authority half of that picture; it composes with, but does not replace, an inspection layer.

Two of this profile's mechanisms are deterministic checks of that kind. Parameter binding (Section 8) ties a permit to the concrete parameters the action executes with, so an application cannot alter a tool call's arguments after the decision. Capability-source binding, in the capability-binding companion ([I-D.draft-mcguinness-mission-capability-binding]), ties an approved action to the digest of the capability definition it was derived from, so a swapped or poisoned tool definition fails the decision. Both refuse the action; neither inspects the agent's reasoning.

Two adjacent checks are out of scope (Section 16). This profile evaluates the request path: it does not verify the integrity of the result a tool returns as the application relays it back to the agent's model, so an application can still falsify what the model sees; and it does not by itself establish that an executed action reflects the model's own decision rather than an application substitution. Mediated execution (Section 5.6) bounds the second case, since an action outside the Authority Set is refused however it arose, but it does not bind the executed action to the model's decision; a deployment that can establish that correspondence SHOULD. Both sit at the semantic and grounding boundary the issuance profile names a non-goal ([I-D.draft-mcguinness-oauth-mission]).

A semantic intent-alignment signal, for example a judgment that a requested tool fits the task extracted from the conversation, MAY be supplied to the PDP as advisory decision input. Such a signal MAY contribute to a denial; it MUST NOT widen, grant, or refresh authority, consistent with the inert treatment of goal and purpose in the issuance profile ([I-D.draft-mcguinness-oauth-mission]). Gating authority on intent inference is out of scope: verifying an agent's declared reasoning against the task is an attestation problem outside both layers, and intent inference is not reliable enough to be load-bearing for high-consequence authority.

17.5. Classification Integrity

Because "consequential" is partly deployment-defined, the classification floor of Section 5.3 is load-bearing: a deployment cannot evade enforcement by classifying a high-consequence action as non-consequential. A purpose may raise a class but never lower it below the resource owner's floor.

17.6. Freshness and Consumption Honesty

A permit is a lease, not a standing grant: stale Mission state MUST fail closed for consequential actions within the published bound (Section 2.5). A deployment MUST NOT advertise consumption enforcement it does not perform (Section 10); where cumulative bounds are metered, the exactness and consistency claims of the metering companion apply ([I-D.draft-mcguinness-mission-metering]).

17.7. The History Input

The history input (Section 2.7.8) makes prior evidence load-bearing for later decisions, so it is attacker-adjacent wherever evidence producers are compromised: a forged record is a forged precondition, and a suppressed record denies the step that depends on it. This is the existing evidence-integrity story, not a new one; the record integrity requirements of Section 11.3 and the transparency mechanisms of the audit companion ([I-D.draft-mcguinness-mission-audit]) are the countermeasures, and a deployment that makes history load-bearing weighs them as part of the decision path, not only as after-the-fact audit. Shaping Evidence is never an input to this or any authorization decision; the shaping profile's existing prohibition stands unchanged ([I-D.draft-mcguinness-mission-shaping]).

17.8. Resource Policy Remains Authoritative

Mission authority is a maximum authority envelope. It does not force a Resource Server to perform an action, bypass local authorization, or override object ACLs, tenant configuration, legal holds, service invariants, or risk policy. A runtime deployment that treats a Mission-bound permit as sufficient without Resource policy evaluation can perform actions that the resource owner or service would otherwise forbid.

17.9. TOCTOU and Replay

Parameter binding (Section 8) ties a permit to specific normalized parameters and a short window or single use, so a permit cannot be replayed for a different request or survive a parameter change between check and use. The executing PEP, not an upstream component, MUST perform the reverification.

Parameter binding freezes the request, not the target. Between decision and execution the resource itself can change meaning: a revised document, a reclassified record, a query that returns a different set. That residual is outside parameter_digest's reach, and the mitigations are operational: keep permit validity windows tight (Section 8), re-evaluate rather than re-present a permit on retry, and, where the resource exposes a version or revision identifier, bind it as a parameter so the permit commits the target state it was decided against. Evaluation-Context Binding (Section 9.1) declares and checks selected resolved facts for adopting classes. A reread does not close a remote check-to-act window; only a coupled resource-side precondition earns its enforced property. Uncovered facts and deployments not claiming the extension retain this residual and the operational mitigations above.

An idempotency key identifies one request, not the business event the request carries out (Section 9.3). Two requests that carry out the same event under different action names, parameters, or actors are separate operations, and each can execute. Where an event must take effect once, the Operation Profile names the parameters that identify it, and the resource deduplicates on them. Under a metered bound each execution is charged, so a second representation duplicates an effect within the bound but adds no capacity ([I-D.draft-mcguinness-mission-metering]).

17.10. Confused Deputy Across Resources

The permit binding of Section 2.9 ties a decision to the Mission, the credential audience or protected resource, the subject, the client identity, the actor context, the action, and the resource it evaluated. It follows that a PDP decision for one protected resource, audience, tenant, or operation is not reusable at another: the executing PEP, which reverifies those bindings before acting (Section 8), refuses a permit whose bindings do not match the boundary at which it is presented. A deployment MUST NOT relax those bindings in a way that would let a permit cross a resource, audience, tenant, or operation boundary it was not issued for.

17.11. Decision Channel and Credential Disclosure

A separate PDP becomes part of the Resource Server's trusted authorization path for the operations in its enforcement scope, which is why mutual authentication, integrity protection, and authorization for the declared scope are baseline requirements on that channel (Section 2.4), not deployment advice. Passing full credentials to a PDP also extends credential exposure beyond the Resource Server boundary; a deployment that does so needs the same credential handling, retention, and disclosure controls it applies at the Resource Server.

General OAuth security guidance [RFC9700] applies to the underlying OAuth credentials, where the binding is OAuth ([I-D.draft-mcguinness-mission-runtime-oauth]).

18. Privacy Considerations

Runtime enforcement evidence is intentionally durable and therefore sensitive. It can reveal a subject's resources, action timing, delegated actors, and Mission correlation identifier even when raw action parameters are not stored. Deployments SHOULD minimize recorded authority entries, store entry and parameter digests where full values are not needed for audit, restrict access to evidence by role, and document the retention window declared under Section 11. Access to Mission evidence is itself a privileged operation a deployment SHOULD audit, and classifying evidence fields by sensitivity lets access, export, and retention key on the class; the audit companion's minimization duties apply across the evidence this layer produces ([I-D.draft-mcguinness-mission-audit]). Evidence shared across resource boundaries can also correlate activity by mission.id and authority_hash; deployments that require unlinkability need an additional privacy design outside this profile.

19. IANA Considerations

This document defines no wire format and requests no IANA action. The protected resource metadata registration for a Resource-Owner Class Floor is the OAuth binding's ([I-D.draft-mcguinness-mission-runtime-oauth]); any decision-API wire members are defined by the decision-API binding (Section 15, [I-D.draft-mcguinness-mission-authzen]).

20. References

20.1. Normative References

[I-D.draft-mcguinness-mission-substrate]
McGuinness, K., "Mission Substrate Requirements", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-substrate.html>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC3339]
Klyne, G. and C. Newman, "Date and Time on the Internet: Timestamps", RFC 3339, DOI 10.17487/RFC3339, , <https://www.rfc-editor.org/rfc/rfc3339>.
[RFC6234]
Eastlake 3rd, D. and T. Hansen, "US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)", RFC 6234, DOI 10.17487/RFC6234, , <https://www.rfc-editor.org/rfc/rfc6234>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/rfc/rfc8174>.
[RFC8785]
Rundgren, A., Jordan, B., and S. Erdtman, "JSON Canonicalization Scheme (JCS)", RFC 8785, DOI 10.17487/RFC8785, , <https://www.rfc-editor.org/rfc/rfc8785>.
[RFC9711]
Lundblade, L., Mandyam, G., O'Donoghue, J., and C. Wallace, "The Entity Attestation Token (EAT)", RFC 9711, DOI 10.17487/RFC9711, , <https://www.rfc-editor.org/rfc/rfc9711>.

20.2. Informative References

[AUTHZEN]
OpenID Foundation, "OpenID AuthZEN Authorization API 1.0", , <https://openid.net/specs/authorization-api-1_0-final.html>.
[I-D.draft-ietf-oauth-attestation-based-client-auth]
Looker, T., Bastian, P., and C. Bormann, "OAuth 2.0 Attestation-Based Client Authentication", Work in Progress, Internet-Draft, draft-ietf-oauth-attestation-based-client-auth-11, , <https://datatracker.ietf.org/doc/html/draft-ietf-oauth-attestation-based-client-auth-11>.
[I-D.draft-ietf-oauth-spiffe-client-auth]
Schwenkschuster, A., Kasselman, P., Rose, S., Thorgersen, S., and N. Cam-Winget, "OAuth SPIFFE Client Authentication", Work in Progress, Internet-Draft, draft-ietf-oauth-spiffe-client-auth-02, , <https://datatracker.ietf.org/doc/html/draft-ietf-oauth-spiffe-client-auth-02>.
[I-D.draft-jiang-oauth-intent-admission]
Jiang, Y., Lun, L., Song, Y., and F. Liu, "Intent Admission Assertions for Agentic Systems", Work in Progress, Internet-Draft, draft-jiang-oauth-intent-admission-00, , <https://datatracker.ietf.org/doc/html/draft-jiang-oauth-intent-admission-00>.
[I-D.draft-mcguinness-mission-aauth]
McGuinness, K., "Mission Context Binding for AAuth", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-aauth.html>.
[I-D.draft-mcguinness-mission-architecture]
McGuinness, K., "An Architecture for Mission-Bound Authorization", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-architecture.html>.
[I-D.draft-mcguinness-mission-audit]
McGuinness, K., "Mission Audit Transparency", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-audit.html>.
[I-D.draft-mcguinness-mission-authority-server]
McGuinness, K., "Mission Authority Server", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-authority-server.html>.
[I-D.draft-mcguinness-mission-authzen]
McGuinness, K., "Mission-Bound Runtime Enforcement: AuthZEN Profile", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-authzen.html>.
[I-D.draft-mcguinness-mission-capability-binding]
McGuinness, K., "Mission Capability Binding", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-capability-binding.html>.
[I-D.draft-mcguinness-mission-control-plane]
McGuinness, K., "Mission Control-Plane Consistency", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-control-plane.html>.
[I-D.draft-mcguinness-mission-harness]
McGuinness, K., "Mission-Aware Agent Harnesses", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-harness.html>.
[I-D.draft-mcguinness-mission-mandate]
McGuinness, K., "Mission Mandate", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-mandate.html>.
[I-D.draft-mcguinness-mission-metering]
McGuinness, K., "Mission Consumption Metering", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-metering.html>.
[I-D.draft-mcguinness-mission-orchestration]
McGuinness, K., "Mission Orchestration and Unwinding", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-orchestration.html>.
[I-D.draft-mcguinness-mission-runtime-evidence]
McGuinness, K., "Mission Runtime Evidence", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-runtime-evidence.html>.
[I-D.draft-mcguinness-mission-runtime-oauth]
McGuinness, K., "Mission-Bound Runtime Enforcement: OAuth 2.0 Profile", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-runtime-oauth.html>.
[I-D.draft-mcguinness-mission-security-model]
McGuinness, K., "Mission Security Model", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-security-model.html>.
[I-D.draft-mcguinness-mission-shaping]
McGuinness, K., "Mission Intent Shaping", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-shaping.html>.
[I-D.draft-mcguinness-oauth-actor-proofs]
McGuinness, K., "OAuth Actor-Signed Hop Proofs", Work in Progress, Internet-Draft, draft-mcguinness-oauth-actor-proofs-00, , <https://datatracker.ietf.org/doc/html/draft-mcguinness-oauth-actor-proofs-00>.
[I-D.draft-mcguinness-oauth-actor-receipts]
McGuinness, K., "OAuth Actor Receipts for Delegation Provenance", Work in Progress, Internet-Draft, draft-mcguinness-oauth-actor-receipts-00, , <https://datatracker.ietf.org/doc/html/draft-mcguinness-oauth-actor-receipts-00>.
[I-D.draft-mcguinness-oauth-client-instance-id]
McGuinness, K., "Client Instance Identification for Attestation-Based Client Authentication", Work in Progress, Internet-Draft, draft-mcguinness-oauth-client-instance-id-00, , <https://datatracker.ietf.org/doc/html/draft-mcguinness-oauth-client-instance-id-00>.
[I-D.draft-mcguinness-oauth-mission]
McGuinness, K., "Mission-Bound Authorization for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission.html>.
[I-D.draft-mcguinness-oauth-mission-attenuation]
McGuinness, K., "Mission Offline Attenuation for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-attenuation.html>.
McGuinness, K., "Mission Consent Evidence for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-consent-evidence.html>.
[I-D.draft-mcguinness-oauth-mission-containment]
McGuinness, K., "Mission Containment for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-containment.html>.
[I-D.draft-mcguinness-oauth-mission-cross-domain]
McGuinness, K., "Mission Cross-Domain Projection for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-cross-domain.html>.
[I-D.draft-mcguinness-oauth-mission-discharge]
McGuinness, K., "Mission Entry Discharge for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-discharge.html>.
[I-D.draft-mcguinness-oauth-mission-signals]
McGuinness, K., "Mission Lifecycle Signals for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-signals.html>.
[I-D.draft-mcguinness-oauth-mission-transaction-authorization]
McGuinness, K., "Mission Transaction Authorization Profile for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-transaction-authorization.html>.
[I-D.draft-niyikiza-oauth-attenuating-agent-tokens]
Aimable, N., "Attenuating Authorization Tokens for Agentic Delegation Chains", Work in Progress, Internet-Draft, draft-niyikiza-oauth-attenuating-agent-tokens-01, , <https://datatracker.ietf.org/doc/html/draft-niyikiza-oauth-attenuating-agent-tokens-01>.
[I-D.draft-rosomakho-oauth-txn-challenge]
Rosomakho, Y., Campbell, B., McGuinness, K., and P. Kasselman, "OAuth Transaction Authorization Challenge", Work in Progress, Internet-Draft, draft-rosomakho-oauth-txn-challenge-00, , <https://datatracker.ietf.org/doc/html/draft-rosomakho-oauth-txn-challenge-00>.
[RFC9470]
Bertocci, V. and B. Campbell, "OAuth 2.0 Step Up Authentication Challenge Protocol", RFC 9470, DOI 10.17487/RFC9470, , <https://www.rfc-editor.org/rfc/rfc9470>.
[RFC9700]
Lodderstedt, T., Bradley, J., Labunets, A., and D. Fett, "Best Current Practice for OAuth 2.0 Security", BCP 240, RFC 9700, DOI 10.17487/RFC9700, , <https://www.rfc-editor.org/rfc/rfc9700>.

Appendix A. Parameter Digest Worked Example

This non-normative example shows an Operation Profile and the parameter_digest it produces (Section 8), so two implementations can confirm they normalize and digest the same way.

Consider a journal-entries.write operation under an ERP reconciliation Mission (msn_8RfX2Lqv9TqMv4z7sA2bN1k0YpEdHc9-) whose applicable entry carries a max_amount ceiling of 500.00 USD. The Operation Profile fixes the parameter set and normalization: the members are amount_usd and source_invoice_id; amount_usd is a decimal string with exactly two fractional digits; no defaults are inserted and no optional members are omitted; there are no set-like arrays to order. For the entry's max_amount ceiling the profile declares the constraint binding Section 8 requires: the authoritative input is amount_usd, mapped into the constraint's value domain as { "amount": <amount_usd>, "currency": "USD" } with no conversion; the Common Constraint's own decimal value-space comparison applies unchanged; a missing or malformed amount_usd fails closed. For a 423.50 USD journal entry, within the ceiling, the normalized parameter object is:

{
  "amount_usd": "423.50",
  "source_invoice_id": "inv_2026Q3_842"
}

The parameter_digest is sha-256: followed by the base64url, no-padding SHA-256 of the JCS [RFC8785] serialization of that object, under the issuance profile's canonicalization rules (no envelope; the normalized parameter object is digested directly). The JCS canonical bytes are a single line with sorted member names and no whitespace:

{"amount_usd":"423.50","source_invoice_id":"inv_2026Q3_842"}
parameter_digest =
  sha-256:WPVi6EnQ7H9Fh-qk9ADxmTg8zruOdVUX1esl-v3TfCI

The PDP binds its permit to this value, and the executing PEP recomputes it over the parameters it is about to use immediately before acting (Section 8); any change to a normalized parameter yields a different digest and the permit is refused.

The profile's constraint-evaluation fixtures, separate from the digest vector above: "500.00" permits (the exact bound); "500.01" refuses (over the bound); an absent amount_usd refuses (missing input); "4,235.0" refuses (malformed decimal); and a ceiling denominated in EUR against this USD mapping refuses as incomparable, with no conversion.

Appendix B. Policy View Worked Example

This non-normative example shows the policy_view_id computation of Section 7.1 over a materialized-view manifest for the same Mission. This deployment compiles to an engine-native artifact, so the manifest carries artifact rather than policy_ir; a deployment that serves a state version records it in Decision Evidence and consumes it through freshness processing instead, never embedding it in this manifest (Section 7.1).

{
  "typ": "mission-policy-view",
  "iss": "https://as.example.com",
  "value": {
    "mission_id": "msn_8RfX2Lqv9TqMv4z7sA2bN1k0YpEdHc9-",
    "authority_hash":
      "sha-256:l3KvZ4mP5x0wQrR6tY2nD9bM7sX1cF8gH2vJ4kE5pNQ",
    "policy_version": "deploy-policy:v17",
    "compiler": {
      "profile": "https://as.example.com/policy-compiler",
      "version": "1.4.0"
    },
    "artifact": {
      "digest":
        "sha-256:9ZqK3mP7xR2vN4tY6bD1eF8jC5wH0pV2nR3kQ4mZ7tX",
      "encoding": "application/vnd.example.policy-engine+bin"
    }
  }
}

The JCS canonical bytes are a single line with sorted member names and no whitespace, shown here wrapped for layout only; remove the layout line breaks, adding no characters, to recover the canonical form:

{"iss":"https://as.example.com","typ":"mission-policy-view","value":
{"artifact":{"digest":"sha-256:9ZqK3mP7xR2vN4tY6bD1eF8jC5wH0pV2nR3kQ
4mZ7tX","encoding":"application/vnd.example.policy-engine+bin"},"aut
hority_hash":"sha-256:l3KvZ4mP5x0wQrR6tY2nD9bM7sX1cF8gH2vJ4kE5pNQ","
compiler":{"profile":"https://as.example.com/policy-compiler","versi
on":"1.4.0"},"mission_id":"msn_8RfX2Lqv9TqMv4z7sA2bN1k0YpEdHc9-","po
licy_version":"deploy-policy:v17"}}
policy_view_id = sha-256:kFxuopgt9C4G7S4BhP7ayGhP49wG55HBnq0BzH09UZ8

Because the identifier is a content hash, any change to the manifest yields a different policy_view_id (Section 7.1).

Appendix C. Runtime Evidence Worked Examples

These non-normative scenarios illustrate the minimum record content of Section 11 for the operation of Appendix A, in the concrete record schemas and worked examples the runtime evidence companion defines ([I-D.draft-mcguinness-mission-runtime-evidence]); this document carries no evidence JSON of its own. In this deployment, the Resource Server runtime profile classifies journal-entries.write as an irreversible action (a posted entry is corrected only by a compensating entry), so the permit is single-use and execution-outcome evidence is required. The policy-view version cites the view of Appendix B.

A permit decision on the 423.50 USD journal entry of Appendix A, within the ceiling, for subject user_3p2q8mN1a0kV7tR and client s6BhdRkqt3 against audience https://erp.example.com: the Decision Evidence record cites the Mission, the authorizing mission_resource_access entry and its max_amount constraint, and the parameter_digest of Appendix A, correlated by evaluation_id dec_4NqX7rT2vB9mK5sL8pJ0eW3yZ6cQ. The companion's own worked example shows the concrete record ([I-D.draft-mcguinness-mission-runtime-evidence]).

The executing PEP then acts and produces the execution-outcome record keyed to that same evaluation_id: outcome completed, the authorized and effective parameter digests equal, the binding-held case, reconciling the decision and its execution one to one. The companion's own worked example shows the concrete record ([I-D.draft-mcguinness-mission-runtime-evidence]).

A later attempt on the same operation shows a parameter deviation instead. A distinct permit (evaluation_id dec_9HtV3wN6xQ1rB8mP5kS2eL7jY4zA) bound the digest of the same 423.50 entry; between check and use the parameters became 780.00 (normalized object {"amount_usd":"780.00","source_invoice_id":"inv_2026Q3_842"}). The executing PEP recomputed the digest over the parameters it was about to use, found it differed from the authorized digest, and suppressed the release (Section 8): a post-decision suppression is a final disposition and is recorded as Execution Evidence, never as a Refusal Record, carrying both the authorized digest and the differing effective digest it recomputed. The companion's parameter-deviation worked example shows the concrete record ([I-D.draft-mcguinness-mission-runtime-evidence]).

Appendix D. Document History

[[ To be removed from the final specification ]]

Acknowledgments

This document builds on the Mission Substrate and the OpenID AuthZEN Authorization API. Its OAuth 2.0 profile carries the realization built on the OAuth 2.0 Rich Authorization Requests and JWT access token specifications.

Author's Address

Karl McGuinness
Independent