The Agent Action Evidence Contract: What Every AI Action Must Record

TL;DR

The Agent Action Evidence Contract defines what a consequential AI action must record, which component is responsible for each fact, and what evidence is required before the workflow can call the action complete. It connects authenticated identity, delegated authority, approved intent, execution attempts, independently observed results, and recovery obligations.

Version 0.1 is a proposed DTD design contract, not an industry standard or a completed implementation. Its central requirement is that an agent’s explanation cannot substitute for an authorization record or independent confirmation of the result. Missing evidence must remain visible as uncertainty, with defined consequences for execution, reconciliation, and escalation.

An action is not complete because the agent wrote a convincing completion report.

Introduction

Consider a hypothetical access-management workflow. An agent requests a temporary deployment role for one service identity in one production project. Approval permits execution during a five-minute window and fixes the grant’s expiration at a specific time twenty minutes after the request.

The execution call times out. A separate observer then finds a matching grant in the identity system.

Did this attempt create it? Was it already present? Did another workflow create it concurrently? Can the system retry without creating another grant or extending the access period?

A report saying “failed” is premature. A report saying “verified” may be equally premature. The observed configuration answers one question, but the missing operation record leaves another unresolved.

Article 3 assessed the independence of assurance boundaries. This installment defines the records those boundaries must produce for each action. The example assumes a custom access service with supported expiry enforcement and an independently readable identity record; it does not assume that every identity platform provides native expiring role assignments.

The objective is practical: let an operator reconstruct the action without trusting the agent’s account of its own behavior.

Define the Contract Before Choosing the Logging Backend

The Agent Action Evidence Contract, version 0.1, specifies the evidence obligations around a bounded action: required records, trusted producers, binding rules, verification criteria, retention, and behavior when evidence is missing or contradictory.

This builds on established audit practice. NIST SP 800-53 Revision 5, control AU-3, describes audit-record content covering the event, timing, location, source, outcome, and associated identities. The proposed contract extends that foundation into delegated AI execution. NIST does not define this contract or its field names.

Three artifacts should remain separate:

The action profile defines what evidence an action class requires. Its owner decides, for example, which observations are sufficient to verify a temporary role assignment.

The action record collects the applicable intent, authority, attempts, observations, and outstanding obligations for one action.

The disposition states what those records currently support: denied, pending, verified for the declared checks, violated, or unresolved.

Existing DTD guidance on how to execute, verify, and roll back agent actions addresses the runtime. This contract addresses the evidence that allows another party to examine that runtime’s decisions and effects.

A suitable implementation needs authenticated identities, an execution boundary outside the model, durable record acceptance, and an observation path appropriate to the target system. Where a required capability is absent, narrow the permitted operating mode rather than filling the gap with an agent-generated assertion.

Make the Action Smaller Than the Agent Run

One agent run can contain retrieval, planning, several mutations, delegated work, and recovery. A single run identifier cannot adequately distinguish all those effects.

Assign an action identifier to each independently authorizable change or disclosure. Assign a separate attempt identifier whenever the executor attempts that same action. Preserve parent-child relationships for batches and delegated work.

A batch may share approval when the approval explicitly binds its members and constraints. It still needs per-target results where partial execution is possible. “Nine of ten completed” must identify which nine and what happened to the tenth.

Bind the action to stable resource identity, tenant, environment, operation, and normalized parameters. Preserve the normalization version and an immutable representation or digest of the approved proposal. A resource name alone is insufficient when names can be reused.

A material change to scope, target, or expiry creates a revised proposal requiring reassessment. Do not overwrite the original action so that its history appears consistent with a later decision.

Specify Who Supplies Each Part of the Record

An evidence contract needs more than mandatory field names. It must identify who is allowed to establish each fact.

The following groups form the proposed baseline. An action profile determines the exact fields and conditional requirements for its workflow.

Evidence groupRequired contentResponsible producer
Action identityRun, action, attempt, parent action, tenant, environment, and stable target identifiers.Trusted controller and executor.
Initiating identity and delegationAuthenticated initiating human or service, agent identity, execution identity, and the applicable delegation chain and scope.Identity boundary and authorization service.
Intent and proposed changeOriginal request reference, concise purpose, exact bounded operation, normalized parameters, preconditions, and proposal version.Request service and controller, preserving agent text as a claim.
Inputs and contextVersioned input references, provenance, collection times, and a manifest of the material actually supplied to the model.Governed context and source-access services.
Behavior baselineRuntime release, requested and reported model identifiers, provider, prompt version, tool contract, context configuration, and evaluator versions where used.Deployment records and instrumented execution components.
Authorization and approvalPolicy version, decision, evaluated proposal, delegated scope, approval basis, approver where required, validity window, and exceptions.Policy and approval services.
Execution attemptsPrepared attempt, actual invocation, endpoint identity, request identifier, target operation identifier where available, timestamps, and reported result.Executor and target service.
Independent verificationObserver identity, source and observation time, target version, required checks, observed values, conclusions, and limitations.Separately governed verifier.
Recovery and continuing obligationsRecovery procedure, ownership, reversibility limits, later expiry checks, and references to actual recovery actions.Service owner, controller, and recovery executor.
Evidence handlingProducer identity, event identifiers, schema and profile versions, integrity metadata, classification, retention policy, and access rules.Evidence service and records owner.

A denied proposal should have denial evidence, not invented execution fields. A policy-authorized action without human review should explicitly identify that authorization mode and its governing rule. It should not fabricate an approver or use an unexplained empty field.

Similarly, distinguish “not applicable,” “not exposed by the provider,” “not collected,” and “collection failed.” Those conditions have different consequences. The acting agent must not decide that an inconvenient mandatory field is optional.

Preserve Delegation, Not Merely the Last Credential

The identity used by the final tool may differ from the identity that initiated the work. Retain the authenticated relationship between them and the authority granted at each relevant delegation boundary.

A username copied into a prompt is not authenticated attribution. A broadly privileged executor credential does not establish that the initiating user authorized every operation the credential can perform.

Keep credentials themselves out of the evidence. Record validated identities and protected references to the authorization records instead.

Bind Approval to the Proposal That Actually Executes

OWASP’s AI Agent Security Cheat Sheet recommends action-specific approvals covering the actor, tool, target, normalized parameters, timing, and expiry. Preserve that binding in the evidence, including what the reviewer actually saw.

Approval to execute until 14:05 is different from permission for the resulting grant to remain active until 14:20. Record both conditions.

Revalidate the current authority and relevant preconditions before dispatch. A historical permit record explains an earlier decision; it is not permission to execute indefinitely after the request has waited in a queue.

Record the Available Behavior Baseline Honestly

Capture the model identifiers actually available from the deployment and response, alongside the local runtime, prompt, tools, and context configuration. Where an immutable provider revision is unavailable, document that limitation rather than treating a stable endpoint name as an exact model version.

Preserve which source versions and transformations formed the model’s input. A policy snapshot retrieved after the incident is not necessarily the policy text the model received before acting.

This supports reconstruction, not a promise of identical model output on replay. The contract requires decision-relevant artifacts and concise rationale, not access to hidden model reasoning.

Assemble Evidence from Multiple Producers

The action record should be a view assembled from protected events and artifacts, not a document the agent can edit until it looks complete.

In the following diagram, the arrows carry evidence. The executor changes the target through a separately controlled execution path; the observer reads the target through its own authorized path.

Authenticate producers at ingestion and restrict which event types each producer can assert. An agent may submit a proposal; it should not be able to submit an event that the evidence service accepts as an independent observation merely by setting producer: verifier.

Append corrections and later findings as new events linked to the records they revise. Preserve the original record. An assembled dashboard may update, but the underlying history should show why its interpretation changed.

Include event occurrence time and collection time, using a consistent time representation such as Coordinated Universal Time (UTC). Preserve causal links and source sequencing where available. Do not infer an exact cross-system order solely by sorting clocks that may differ.

Most importantly, an evidence-service receipt establishes acceptance at its declared durability boundary. It does not establish the truth of every statement in the accepted event.

Require Durable Intent Before a Consequential Mutation

For the high-impact operating mode proposed here, the executor should not dispatch until the required intent and authorization evidence have been durably accepted. Record an attempt as prepared before crossing the external execution boundary.

“Prepared” must not mean “executed.” The executor may crash between those two events.

A successful write to process memory, standard output, or an unverified queue is not sufficient evidence of durable acceptance. Define the failure domain the record must survive and validate that the chosen persistence mechanism meets it.

There remains a gap between updating the journal and changing an external system. Unless both participate in an appropriate transaction protocol, the design cannot assume they commit atomically. A crash can leave a prepared attempt without an action, or a completed action without its final local record.

The contract must preserve that uncertainty and make it recoverable.

Distinguish Pre-Execution Failure from Post-Execution Uncertainty

Before dispatch, failure to accept mandatory evidence should hold the high-impact action. After dispatch, loss of a response or evidence delivery cannot undo the mutation. Preserve the attempt, suspend dependent actions that require a confirmed result, and reconcile through the target system.

NIST AU-5 calls for alerts and organization-defined responses to audit-logging failures. OWASP’s agent-specific guidance recommends failing closed when required high-impact checks, including audit logging, fail. The proposed design applies that gate to consequential dispatch, not indiscriminately to every running service.

A separately authorized containment procedure must remain available. Stopping further agent changes should not prevent responders from revoking dangerous access through an approved emergency path.

Protected local buffering can support a degraded mode only when it satisfies the accepted durability and tamper-resistance requirements. Define capacity limits and what happens when they are reached. Do not turn an evidence outage into a hidden audit_required: false configuration change.

Separate Reported Results from Verified Outcomes

Keep execution status and assurance status distinct. The following are proposed meanings, not product-defined status codes.

Record conditionWhat it supportsWhat it does not establish
Attempt preparedAn authorized attempt was recorded before dispatch.That the target received or applied it.
Result reportedA named component returned a particular result.That all required system or business conditions hold.
Verified for profileRequired checks are supported by acceptable evidence for the stated scope and time.Permanent safety or correctness beyond those checks.
Unresolved or violatedEvidence is insufficient, contradictory, or establishes a failed requirement.Permission to retry, ignore the finding, or close the action as successful.

Define the verification profile before execution. It should specify the authoritative observation path, required checks, acceptable freshness, completion deadline, and what constitutes a conflict.

Compare the received checks with the required set. An empty list must not pass because “all returned checks succeeded.” Missing checks remain missing.

A Matching State Does Not Necessarily Establish Causation

In the opening scenario, the observer sees the expected role, principal, project, and expiry. That supports a claim about the observed configuration.

It does not, without additional correlation, prove which request created the grant. The contract may require the target’s operation record, request identifier, or other trustworthy change history to associate the effect with this action.

Nor does observing configured expiry establish that every downstream session will lose effective access at that moment. Treat expiry enforcement as a separate continuing obligation where the service requires it.

For irreversible actions, observation after the event is even more limited. Evidence that a dataset was exported does not prevent disclosure. The necessary preventive conditions must be enforced before execution.

Preserve Intent Across Retries

Amazon’s Builders’ Library explains how caller-provided request identifiers support idempotent retry handling and why reusing an identifier with changed parameters should be treated as a mismatch. It also notes that retention of those identifiers is service-dependent.

Apply that distinction to the contract: preserve one logical action and its idempotency key across legitimate retries, while recording separate attempts. Do not change the expiry or regenerate the intended operation merely because the first response was lost.

An idempotency key is not an authorization token. Its protection depends on the target’s documented behavior and retention window. A journal alone does not provide exactly-once execution across arbitrary external systems.

Where the target cannot safely deduplicate, hold uncertain mutations for reconciliation or an explicitly approved alternative. Blind retry is not an evidence-repair strategy.

A Machine-Readable Example with an Unresolved Outcome

The following YAML illustrates an assembled view for the hypothetical role grant. It is not a vendor configuration, a complete validation schema, or a record of an actual production action.

Opaque references stand for protected, versioned artifacts containing the detailed inputs, behavior baseline, approval, and event history. The timeout and missing target operation identifier are intentional: the example shows why a matching observation can still leave attribution unresolved.

contract_version: "0.1"
profile_ref: scoped-role-grant/v1
record_kind: assembled_action_view
action_id: act-031
run_id: run-014
environment: production
tenant_ref: tenant-a

identity:
  initiating_principal_ref: user-042
  agent_principal_ref: access-agent-prod
  executor_principal_ref: access-executor-prod
  delegation_record_ref: delegation-017

intent_ref: request-208
inputs_manifest_ref: inputs-031
behavior_baseline_ref: behavior-release-12
proposal:
  immutable_record_ref: proposal-031
  operation: role_assignment.create
  principal_ref: deployment-service
  role_ref: project-deployer
  resource_ref: project-claims-prod
  expires_at: "2026-09-12T14:20:00Z"

authorization:
  decision: permit
  policy_version: role-grant-4
  decision_record_ref: decision-031
  approval_ref: approval-902
  bound_proposal_ref: proposal-031
  execution_deadline: "2026-09-12T14:05:00Z"

attempts:
  - attempt_id: attempt-031-1
    prepared_event_ref: event-744
    invocation_event_ref: event-745
    dispatched_at: "2026-09-12T14:02:00Z"
    idempotency_key: grant-031
    transport_result: timeout
    target_operation_id: null

verification:
  observer_ref: identity-verifier-prod
  observation_ref: observation-117
  observed_at: "2026-09-12T14:02:10Z"
  observed_state_matches: true
  attributable_to_action: unknown
  result: inconclusive

recovery:
  procedure_ref: revoke-grant-v3
  requires_separate_authorization: true

lifecycle_obligation_ref: expiry-check-031
evidence_manifest_ref: evidence-031
classification: confidential
retention_policy_ref: privileged-actions-v2

disposition:
  status: unresolved
  dependent_actions: hold

Change the action profile, operation, identities, resources, timing, and recovery procedure to match the real service. Resolve references through a governed artifact service rather than fetching arbitrary locations supplied by the agent.

For this profile, correct processing retains the action as unresolved and holds work that depends on confirmed completion. It does not convert observed_state_matches: true into a successful end-to-end verdict.

Syntax validation is only the first check. The implementation must authenticate producers, validate artifact integrity and reference resolution, confirm proposal binding, evaluate timing and policy, and enforce the required verification set. None of those properties is established by accepting well-formed YAML.

Use Traces for Diagnosis Without Sampling Away Accountability

OpenTelemetry for AI agents provides a useful instrumentation foundation. The official OpenTelemetry GenAI semantic-conventions project describes spans, metrics, and events for AI interactions. Reuse applicable conventions rather than inventing new names for every diagnostic attribute.

The evidence contract adds a different obligation: retaining the required records for every in-scope consequential action. OpenTelemetry’s sampling documentation distinguishes sampled traces that are exported from those not selected for export. A sampled diagnostic dataset therefore cannot be assumed to contain every required action record.

Keep mandatory evidence delivery independent of diagnostic sampling. The implementation may use the same backend where it supports the necessary controls; the delivery, retention, access, and completeness requirements still need separate validation.

Link evidence to traces for investigation, but make the action record usable when a diagnostic trace is absent. Conversely, complete tracing does not transform an agent-authored success claim into external verification.

Protect the Evidence Without Creating a Sensitive-Data Archive

NIST AU-9 covers protection of audit information and audit tools from unauthorized access, modification, and deletion. Apply that boundary to the collector configuration and ingestion path as well as the stored records.

A protected store is insufficient when the agent can stop collection, impersonate another producer, or redirect observations before they arrive. Preserve the administrative boundaries assessed in Article 3.

Cryptographic integrity also has limits. A valid signature can support origin and integrity checks; it does not prove that the signer observed the truth. A digest chain cannot, by itself, prove that every expected event was recorded. Use separately protected checkpoints and reconciliation with target-side records where the threat model requires them.

Retain Necessary Facts, Not Every Secret

OWASP’s Logging Cheat Sheet advises against directly recording access tokens, passwords, keys, and information beyond the logging system’s permitted classification. It also recommends validating and sanitizing event data to resist log injection.

Design the contract to keep secrets out of AI traces and logs. Put sensitive decision artifacts in appropriately restricted storage, expose redacted operational views, and record access to the evidence itself. Minimize content before it reaches lower-trust collectors or external analytics services.

A digest is an integrity reference, not a replacement for material that an investigator must later inspect. Conversely, a privacy requirement may prohibit retaining particular source content. Record the permitted retention basis and the resulting reconstruction limitation rather than promising unlimited replay.

Preserve References Through Their Required Lifetime

An evidence manifest should remain usable for its approved retention period. Preserve the schema, policy, tool-contract, and verification-profile versions needed to interpret historical records.

When content is legitimately removed under its lifecycle policy, retain an appropriate disposition record where permitted. Do not let a dead reference silently appear equivalent to an artifact that was never collected.

There is no universal retention duration in this proposed contract. The records owner must set it for the action class and applicable obligations, including exceptions or holds, with security and privacy review.

Treat Recovery as Another Accountable Action

A rollback reference describes an available procedure. It does not establish that recovery ran or that its result was acceptable.

When recovery is necessary, create a linked action with its own authority, attempts, target checks, and result. Preserve the original failure or uncertainty. A later successful revocation should not rewrite the grant attempt as though it never happened.

Use recovery preconditions to avoid overwriting legitimate concurrent changes. Document irreversible effects separately. Removing access cannot establish that no information was obtained while that access existed.

For the role example, grant creation, expiry enforcement, emergency revocation, and any session-containment procedure can require different observations. A single green status should not conceal outstanding obligations.

Validate the Contract with Deliberate Evidence Failures

Begin in an authorized test environment with synthetic identities and records. The objective is to test evidence handling, not merely generate a clean success report.

Test conditionRequired behavior for the proposed high-impact profile
Target or parameters change after approval.Reject the binding and require reassessment before dispatch.
Evidence acceptance fails before execution.Hold the action; do not create the external side effect.
The target commits but the response is lost.Preserve the attempt, reconcile independently, and prevent an unsafe duplicate.
The tool reports success but required state differs.Record the conflict and prevent successful closure.
The agent submits a forged verifier event.Reject unauthorized provenance and flag the attempted substitution.
Required observation is missing, delayed, or from another tenant.Keep verification incomplete and escalate according to the profile.

Also test permitted actions, recovery, and an evidence-service outage that exhausts the approved buffer. These are proposed tests, not results reported here.

Then give an independent reviewer the protected records without the agent’s completion summary. The reviewer should be able to determine who initiated the action, which authority applied, what was attempted, what the target evidence supports, and what remains unknown.

A design that passes field-presence checks but cannot support that reconstruction has not achieved the contract’s purpose.

Operate Evidence Quality as a Service Obligation

Assign responsibility before enabling unattended execution. The service owner defines acceptable outcomes and verification requirements. Policy owners define authority. Platform engineering maintains capture and reference resolution. Security and records owners protect the evidence. Operations owns unresolved actions and escalation.

Measure evidence coverage against independently observed activity, not solely against records already present in the journal. Otherwise, entirely missing actions disappear from the denominator. Target-side activity without a matching authorized action record deserves investigation, with source coverage limitations stated explicitly.

Track the age of unresolved actions, missing verification, integrity failures, and the time required to reconstruct a sampled action. Keep these measures separate from task throughput and model quality.

Start with one action class, validate the contract in a representative environment, and enable a bounded production rollout only after accepting its evidence and recovery limitations. Version profile changes and retain the rules that governed earlier actions. A new schema must not quietly reinterpret yesterday’s incomplete record as today’s success.

Conclusion

The Agent Action Evidence Contract turns a broad demand for auditability into explicit obligations around each consequential action. It identifies the sources needed to establish intent, authority, execution, observed effects, and recovery, while keeping claims and uncertainty distinguishable.

The useful outcome is not a larger log archive. It is an action record that remains meaningful when the agent is wrong, the response is lost, or the investigation no longer trusts the component that performed the work.

The next installment, The Architecture That Keeps AI From Authorizing Itself, places these obligations across runtime, enforcement, execution, evidence, and human authority boundaries.

The control plane must not grade itself.

Choose one privileged action and reconstruct it without reading the agent’s summary. Can you establish its authority and effects from records the agent cannot rewrite?

Independent AI Assurance Series

This is Part 4 of the Independent AI Assurance series. Explore the Enterprise AI Strategy and Architecture hub for the wider operating model.

External References

The post The Agent Action Evidence Contract: What Every AI Action Must Record appeared first on Digital Thought Disruption.