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
| Role | Owns | Does not get to decide |
|---|---|---|
| Policy owner | Creates and activates the standing policies before a run. | Which individual tool call will be made by an agent. |
| Delegation issuer | Uses its own authorized identity to issue a limited, execution-scoped delegation. | A broader scope than its issuance policy permits. |
| Runtime / agent | Proposes the operation and enforces the result before its tool runs. | The delegation, policy choice, expiry, or trusted authority facts. |
| AIGP PDP | Resolves trusted state and evaluates all applicable active policies. | Running the external tool or changing its business data. |
| Runtime PEP | Stops 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 source | What it can establish | How it fits this authorization flow |
|---|---|---|
| AWS AgentCore Identity and Gateway | An 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 Gateway | Google 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 account | A 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 provider | Keycloak, 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.
- Register the execution. The application creates a canonical AIGP execution for the external run.
- 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.
- Prepare the actual tool arguments. The runtime canonicalizes those arguments and computes their SHA-256 digest.
- Ask for authorization. The runtime sends its authenticated request, the delegation ID/version/digest, action/resource identity, and tool-argument digest.
- 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.
- Decide. Mismatched identity, execution, scope, digest, expiry, revocation, or policy state produces
DENY. Otherwise matching safeAPPROVErules can produceALLOW;REJECTandBLOCKoverride an allow. - 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
| Input | Source | How it is used |
|---|---|---|
| Runtime identity and tenant scope | Validated 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 digest | AIGP's delegation store. | Must bind the runtime, canonical execution, requested action/resource, and current time. |
| Applicable policy versions | AIGP'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 digest | Runtime request, checked against server state and the PEP's actual call. | Identifies the proposed operation; a mismatch denies it. |
| Purpose, task description, or claimed authority | Agent-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 authorizationAPPROVE 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.
| Policy | Required scope | Purpose |
|---|---|---|
| Delegation issuance | issuer.id, runtime_actor.id, action.id, resource.type, and resource.reference. | Allows a named issuer to create only the requested bounded delegation. |
| Runtime action authorization | action.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.
{
"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.
{
"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
ALLOWis 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.
