v1.2.2

Runtime Action Authorization

AIGP decides whether one external agent operation is allowed. Your runtime still owns the tool and must enforce the answer immediately before it runs.

What This Protects

An agent can read information, form a plan, and propose a tool call. A consequential tool call—transferring money, changing a production record, sending a message, or deleting a file—needs a separate check. Runtime Action Authorization gives that check a narrow question: may this authenticated runtime perform this exact action on this exact resource for this registered execution right now?

A valid login answers only who is calling. It does not answer whether a particular transfer, update, or deletion is in scope. AIGP combines the caller's authenticated identity with a server-stored delegation and the active policy set before returning ALLOW or DENY.

A bank-sized mental model

Think of the delegation as a signed, short-lived permission slip for one job: it names the worker, the account, the operation, and when it expires. The agent can say “this is urgent,” but it cannot rewrite the slip. AIGP checks the slip and the bank's current rules; the runtime gate performs the transfer only when that check says yes.

Who Does What

RoleOwnsDoes not get to decide
Policy ownerCreates and activates the standing policies before a run.Which individual tool call will be made by an agent.
Delegation issuerUses its own authorized identity to issue a limited, execution-scoped delegation.A broader scope than its issuance policy permits.
Runtime / agentProposes the operation and enforces the result before its tool runs.The delegation, policy choice, expiry, or trusted authority facts.
AIGP PDPResolves trusted state and evaluates all applicable active policies.Running the external tool or changing its business data.
Runtime PEPStops or permits the exact tool call at the runtime boundary.Overriding a denial, expiry, or argument mismatch.

PDP means Policy Decision Point: it decides. PEP means Policy Enforcement Point: it is the gate in front of the real tool. Keeping those jobs separate matters because AIGP cannot directly execute or observe an external database, payment gateway, or SaaS API.

Bring Your Own Identity

AIGP needs a trustworthy answer to “which workload is calling?” Your cloud or identity provider can supply that answer. The provider identity authenticates the issuer and runtime; AIGP still owns the separate, execution-scoped delegation and policy decision. This is an integration boundary, not a claim that these providers are native AIGP integrations.

Identity sourceWhat it can establishHow it fits this authorization flow
AWS AgentCore Identity and GatewayAn AWS workload or JWT identity can authenticate an agent at AgentCore Gateway; the gateway also manages inbound and outbound authentication for tool traffic.Use a stable workload principal as the AIGP runtime or issuer identity. Keep the AgentCore gateway's access control and the AIGP delegation check in place: each protects a different boundary.
Google Cloud Agent Identity and Agent GatewayGoogle assigns an agent a strongly attested SPIFFE-based identity and can bind credentials to that identity. Agent Gateway enforces access policies for calls to tools and destinations.Map the deployed agent's stable subject to the AIGP runtime identity. Use a separate workload or approved issuer path to create the delegation; an agent's own identity does not let it mint its own authority.
OpenAI API project service accountA project service account and its scoped API key identify the application when it calls OpenAI's API and constrain its access to that project.Treat this as the model-provider credential, not as an AIGP delegation. Use your workload's separate OIDC, cloud, or service identity when the same application calls AIGP for runtime authorization.
OIDC / OAuth providerKeycloak, Microsoft Entra ID, or another OIDC provider can issue bearer tokens whose subject AIGP validates for a workload.Create distinct runtime and issuer principals, use short-lived tokens from a secret manager or workload identity system, and let AIGP derive the caller identity from the validated token.

Choose identity before delegation

First decide which deployed workload is the runtime and which separately authorized workload is the issuer. Then configure token validation and tenant membership for each. Only after that should the policy owner activate the two AIGP policies and allow the issuer to create a delegation for a registered execution.

The Decision Sequence

The trusted delegation is stored before the agent proposes an action. AIGP resolves it again during authorization; the PEP then either runs the exact bound operation or stops it.

  1. Register the execution. The application creates a canonical AIGP execution for the external run.
  2. Issue the delegation. A separately authorized issuer creates a short-lived grant for that execution, runtime identity, action, and resource scope. AIGP evaluates the active delegation-issuance policy, then stores the immutable grant.
  3. Prepare the actual tool arguments. The runtime canonicalizes those arguments and computes their SHA-256 digest.
  4. Ask for authorization. The runtime sends its authenticated request, the delegation ID/version/digest, action/resource identity, and tool-argument digest.
  5. Resolve trusted state. The PDP reads the delegation from its own tenant-scoped store and discovers every active policy registered for that action and resource type.
  6. Decide. Mismatched identity, execution, scope, digest, expiry, revocation, or policy state produces DENY. Otherwise matching safe APPROVE rules can produce ALLOW; REJECT and BLOCK override an allow.
  7. Enforce immediately. The PEP checks the unexpired response against the actual pending call, including the arguments digest. Only then does the runtime invoke its protected tool.

Trusted and Agent Inputs

InputSourceHow it is used
Runtime identity and tenant scopeValidated bearer token and server-side tenant resolution.Identifies the runtime; caller-supplied actor and tenant authority claims are not accepted.
Delegation identity, status, scope, expiry, and digestAIGP's delegation store.Must bind the runtime, canonical execution, requested action/resource, and current time.
Applicable policy versionsAIGP's active policy repository.The PDP discovers all applicable policies. A runtime cannot select a favourable policy or version.
Action, resource, delegation reference, and argument digestRuntime request, checked against server state and the PEP's actual call.Identifies the proposed operation; a mismatch denies it.
Purpose, task description, or claimed authorityAgent-controlled context.Cannot grant permission. It may only support a restrictive REJECT or BLOCK rule.

Never make an agent narrative an allow condition

A runtime authorization APPROVE rule cannot depend on context.*or agent_context.*. Activation rejects new policies that do this, and the PDP denies legacy policies that attempt it. This prevents a misleading purpose or authority claim from becoming permission.

Policies and Delegation

Setup has two separate policies. The first governs who may issue a delegation. The second governs whether a delegated runtime operation may be allowed. Create and activate both before the first protected run; they are standing control-plane rules, not inputs chosen by an individual agent request.

PolicyRequired scopePurpose
Delegation issuanceissuer.id, runtime_actor.id, action.id, resource.type, and resource.reference.Allows a named issuer to create only the requested bounded delegation.
Runtime action authorizationaction.id, resource.type, resource.reference, authenticated actor.id, and trusted delegation.* facts.Allows or denies the runtime's protected operation after a valid delegation has been resolved.

A runtime-action policy opts into this decision path through definition metadata. Its policy version must target AgentExecution and contain the ordinary structured rules that match the server-resolved facts.

json
{
  "runtime_action_authorization": {
    "purpose": "runtime_action_authorization",
    "registered_actions": ["payments.transfer"],
    "registered_resource_types": ["bank.account"]
  }
}

The issuer additionally needs the runtime_action_delegation.issue platform permission. That permission alone is not enough: the active issuance policy must also match the requested scope.

Authorization Request

The runtime calls the authorization endpoint for one operation. It sends bounded identifiers and digests, not raw tool arguments, prompts, credentials, model responses, or reasoning. The exact public schema is runtime-action-authorization/v2.

json
{
  "schema_version": "runtime-action-authorization/v2",
  "execution_id": "exec_01J...",
  "correlation_id": "transfer-request-4821",
  "action_id": "payments.transfer",
  "resource": {
    "resource_type": "bank.account",
    "resource_reference": "account:operating-001"
  },
  "delegation_id": "delegation_01J...",
  "delegation_version": "1",
  "delegation_digest": "sha256:...",
  "tool_arguments_digest": "sha256:...",
  "idempotency_key": "transfer-4821-authorize",
  "context": { "request_channel": "scheduled-maintenance" }
}

A successful response contains the ALLOW or DENY outcome, reason code, decision and expiry times, request fingerprint, delegation bindings, and the policy ID/version set evaluated by the PDP. A decision is not a reusable bearer grant: it is bound to this operation and expires quickly.

Runtime Enforcement

The authorizer is not the tool runner. Your runtime must place a PEP directly before the consequential call. Recompute the canonical tool-arguments digest from the arguments about to be executed, require a current ALLOW, and compare the execution, runtime identity, action, resource, delegation, and digest bindings. Any timeout, malformed response, denial, expiry, revocation, or mismatch stops the tool.

prepare exact arguments
  → compute canonical arguments digest
  → request AIGP authorization
  → verify current ALLOW and every binding
  → invoke protected tool once
  → report bounded outcome evidence

Authorization is not a bypass-proof wrapper

AIGP cannot stop code that bypasses its PEP and calls the external tool directly. Protect that boundary in your runtime, and keep the target system's own authentication, authorization, validation, audit, and transaction controls in place.

Evidence and Review

AIGP persists the authorization result as a RUNTIME_ACTION_AUTHORIZATIONevent on the canonical execution. The event carries bounded operational facts such as the outcome, reason code, action/resource identity, policy references, decision expiry, and digests. If the runtime performs the tool call, it reports a TOOL_CALL event with the authorization decision as its causation ID.

This proves the decision AIGP made and the tool outcome the runtime reported. It does not turn AIGP into an independent observer of the external database or API. Review the ordered timeline in Studio's Agents Runtime area, and use the LangGraph governed operations guide for a live local walkthrough.

REST API

  • POST /api/v1/runtime-action-delegations — issue a bounded immutable delegation as the authorized issuer.
  • POST /api/v1/runtime-action-delegations/{delegation_id}/revoke — record a one-way revocation; it affects new decisions.
  • POST /api/v1/runtime-action-authorizations/authorize — request the decision for one protected operation.

Use the interactive API reference for the published request and response schema. The Policy Engine guide covers policy lifecycle and the Agent Runtime Integration guide covers execution and event evidence.

Boundaries

  • AIGP does not schedule the agent, choose its branch, execute its tool, or store the raw tool arguments.
  • The control plane owns delegation state and authorization decisions; the external runtime owns PEP enforcement and the protected-system integration.
  • Revocation blocks a new decision. A previously issued ALLOW is usable only until its own short expiry.
  • The arguments digest binds exactly what the PEP intended to call; it does not replace domain validation such as transfer limits or database constraints.
  • Use durable SQLite or PostgreSQL control-plane storage for a deployed integration. In-memory storage is appropriate only for isolated tests.