Revalidate and atomically claim one execution-bound authorization
Deprecated
Deprecated alias of POST /v1/authority/grants/{grantId}/claims: the
same handler.
Required immediately before the downstream commit. Verifies the dossier
signature and complete execution binding, resolves current policy,
signal, and Presence state, then atomically claims the nonce and mutable
concurrency scope. Execution is authorized only when should_execute
is true, claim_token is non-null, and claim_lease_expires_at is
still live at the downstream boundary. valid alone is diagnostic;
in SHADOW it may describe hypothetical validity without execution
authority.
A live claim also returns claim_attestation: a compact EdDSA JWS,
signed with the execution-grant key, that a downstream system of
record can verify offline against
/.well-known/decionis-execution-grant-jwks.json. It names the
grant, the decision, the dossier, the binding the grant carried
(intent hash, canonical payload digest and its profile, expected
effect digest, nonce, correlation), a digest of the claim token, and
an expiry equal to the claim lease. The executor forwards it with the
downstream request; the provider checks that the request it received
is the one the attestation describes. See ClaimAttestationClaims.
Authorization
ApiKeyAuth An organization API key. Its scopes decide what it may call;
decision:shadow is the narrowest: SHADOW evaluations through
POST /v1/authority/grants or its alias
POST /v1/authority/enforce-and-bind only (DECISION_SHADOW_MODE_DENIED
in any other mode; DECISION_SHADOW_FIELD_DENIED for a body carrying
context.decionis_policy, evidence or escalation), with no
integration dispatch. A key whose only scope is decision:shadow
(an AgentSafe hosted gateway's) reaches exactly those two,
POST /v1/auth/credential-context, POST /v1/hosted-gateway/keys/confirm
and POST /v1/hosted-gateway/keys/revoke-self; every other route
answers 403 HOSTED_GATEWAY_KEY_PATH_DENIED.
decision:enforce is an enforced hosted gateway's key: evaluations
in SHADOW or ENFORCEMENT through POST /v1/authority/grants or its
alias (400 DECISION_ENFORCE_FIELD_DENIED for a body carrying
context.decionis_policy; it never holds policy:write), and the
grants and managed escalations they bind. A key whose scopes are
decision:enforce (with or without decision:shadow) reaches exactly
POST /v1/authority/enforce-and-bind, POST /v1/authority/grants,
GET /v1/authority/grants/{grant_id},
POST /v1/authority/grants/{grant_id}/claims,
POST /v1/authority/grants/{grant_id}/receipts,
POST /v1/authority/grants/{grant_id}/reconciliations,
POST /v1/execution/verify-token, POST /v1/execution/claim-token,
POST /v1/execution/consume-token, POST /v1/execution/finalize-token,
GET /v1/authority/escalations/{escalation_id},
DELETE /v1/authority/escalations/{escalation_id},
POST /v1/auth/credential-context, POST /v1/hosted-gateway/keys/confirm
and POST /v1/hosted-gateway/keys/revoke-self, each id a UUID; every
other route answers 403 HOSTED_GATEWAY_KEY_PATH_DENIED.
In: header
Request Body
application/json
1 <= length <= 20000^sha256:[0-9a-f]{64}$1 <= length <= 2001 <= length <= 200Pre-commit lease duration. This does not extend the signed execution grant lifetime.
5 <= value <= 30030Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/execution/claim-token" \ -H "Content-Type: application/json" \ -d '{ "execution_token": "string", "intent_hash": "string", "intent": { "protocol_version": "agent-safe.intent/1", "tenant_id": "34f5c98e-f430-457b-a812-92637d0c6fd0", "intent_id": "05704cef-194d-4987-b2cb-c2c20c9cd88a", "captured_at": "2019-08-24T14:15:22Z", "expires_at": "2019-08-24T14:15:22Z", "actor": { "id": "string", "type": "string" }, "action": { "type": "string", "resource": "string", "parameters": {} }, "context": {}, "downstream_target": { "system": "string", "operation": "string" } } }'{ "valid": true, "would_block": true, "verdict": "APPROVE", "reason_codes": [ "string" ], "claims": { "iss": "string", "sub": "string", "aud": "string", "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b", "dossier_id": "string", "decision_id": "string", "chain_id": "string", "action": "string", "decision": "allow", "scope": "execute", "binding": { "intent_hash": "string", "execution_binding_digest": "string", "execution_payload_digest": "string", "execution_payload_canonicalization_profile": "string", "execution_nonce": "string", "execution_correlation_id": "string", "expected_effect_digest": "string", "expected_state_version": "string", "authority_protocol_version": "1.0" }, "jti": "string", "iat": 0, "nbf": 0, "exp": 0 }, "evidence": {}, "evidence_durably_queued": true, "decision_chain_evidence_recorded": true, "should_execute": true, "claim_token": "string", "claim_validated_at": "2019-08-24T14:15:22Z", "claim_lease_expires_at": "2019-08-24T14:15:22Z", "claim_attestation": "string"}Compatibility alias for pre-commit claim and revalidation POST
Deprecated alias of `POST /v1/authority/grants/{grantId}/claims`: the same handler. The same handler as `/v1/execution/claim-token`, with the same body and responses. New adapters should use the explicit claim route and must finalize the claim before `claim_lease_expires_at`.
Public keys for execution grants and claim attestations GET
The Ed25519 public keys, as a JWKS, that sign execution grants and claim attestations. A deploy target or a downstream system of record verifies either offline against this set; during a signing-key rotation the previous key stays listed until the grants signed with it have drained. The `kid` in a token's protected header names the key to use.

