Skip to main content

check_governance

Experimental. Campaign governance (sync_plans, check_governance, report_plan_outcome, get_plan_audit_logs) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks’ notice. Sellers implementing it MUST declare governance.campaign in experimental_features. See experimental status for the full contract.
Universal governance check for campaign actions. Both the orchestrator (buyer-side) and the seller call this task. The governance agent infers the check type from the fields present: The governance agent maintains all state. Callers do not chain check IDs or track conversation history — they post the action, and the governance agent correlates by plan_id. On subsequent lifecycle checks, callers include governance_context from the prior response for continuity. An account binds to one governance agent (see sync_governance and One governance agent per account). All lifecycle calls for a governed action go to that same agent.
Per-specialist review surfaces here. Internal decomposition (legal, brand safety, category) is not exposed as separate endpoints — it appears as agent-internal labels in categories_evaluated and, on denied, conditions, or informational approved responses, in findings[].details. Treat these values as opaque audit values; do not pattern-match against a fixed list.

Check types

Intent checks (orchestrator)

The orchestrator calls check_governance with tool and payload before sending a tool call to a seller. The governance agent evaluates the intended action against the campaign plan.
  1. Orchestrator decides to call a seller tool (e.g., create_media_buy)
  2. Orchestrator calls check_governance with the tool name and full payload
  3. If approved, orchestrator sends the tool call to the seller
  4. If denied, orchestrator does not send the tool call
  5. If conditions, orchestrator adjusts the payload and re-calls check_governance
  6. If the governance agent needs human review, the task goes async and eventually resolves to approved or denied

Execution checks (seller)

The seller calls check_governance with governance_context and planned_delivery when processing a request on an account that has a governance agent configured (set via sync_governance). Execution checks are always binding — if the governance agent denies, the seller must not proceed. Before executing the check, the seller verifies the signed governance_context token that arrived on the protocol envelope from the buyer. The buyer produces an intent-phase token (per the JWS profile); the seller’s own execution check produces the purchase/modification/delivery-phase tokens bound to the assigned media_buy_id for the rest of the lifecycle.
Sellers that have not yet implemented verification MUST still persist and forward the token unchanged — auditors and regulators rely on this. Verification is the ramp from “forward-only” compliance to cryptographic accountability and can be adopted incrementally. Execution checks cover the full media buy lifecycle through three phases: Sellers can adopt committed governance checks incrementally:
  • Level 1: Purchase only — One call per create_media_buy. The minimum viable integration.
  • Level 2: + Modification — One call per update_media_buy.
  • Level 3: + Delivery reporting — Periodic calls during active delivery.

Invocation requirement

When a governance agent is configured on the plan, buyer agents MUST invoke check_governance before every spend-commit request (create_media_buy, update_media_buy, acquire_rights, update_rights, activate_signal, build_creative) — full stop. There is no dollar floor, no anomaly threshold, and no cold-start exemption; every commit goes through the governance agent. The buyer-side call is an intent check (tool + payload), which produces an intent-phase governance_context token the buyer attaches to its request to the seller. The governance agent decides internally whether to auto-approve, apply conditions, deny, or escalate to human review per the plan’s budget.reallocation_threshold and human_review_required fields. Seller-side enforcement makes the MUST real through the signed governance_context token: a seller receiving a spend-commit for a plan with a configured governance agent MUST require a valid, in-date intent-phase token (phase: "intent", sub equal to the plan_id, aud addressed to this seller), and MUST reject with PERMISSION_DENIED otherwise. The seller then performs its own execution check — calling check_governance with planned_delivery and the received governance_context — which produces the purchase-phase token bound to the newly assigned media_buy_id for the rest of the lifecycle. A buyer that skips the intent check cannot produce a valid intent token, so the commit is rejected before the seller ever reaches its execution check. When no governance agent is configured on the plan, check_governance invocation is neither required nor meaningful — there is nothing to call. Sellers MAY refuse to transact on plans lacking a configured governance agent as a matter of their own commercial policy. See the specification for the full definition, including audit requirements, seller-side retention MUSTs, and interaction with idempotency.

Status values

Expiration

expires_at is present when the verdict is approved or conditions. A lapsed approval is no approval — the caller must re-call check_governance before proceeding.

Conditions

When the verdict is conditions, the caller MUST re-call check_governance with adjusted parameters before proceeding. Conditions with a required_value are machine-actionable — the caller can programmatically apply the value. Conditions without a required_value are advisory — the caller should interpret the reason and adjust accordingly. Governance agents SHOULD return denied (not conditions) after 3 unsuccessful re-calls for the same action. This prevents infinite negotiation loops, particularly for seller-side checks where the seller has no visibility into the campaign plan.

Human review

When the governance agent determines that human review is required (e.g., the action exceeds the plan’s reallocation_threshold, or the plan carries human_review_required: true), it handles the escalation internally. The check_governance task goes async — the caller receives standard async task lifecycle statuses (submitted, working) and eventually gets approved or denied once the human acts. The caller does not need special handling for this case beyond supporting async tasks (see task lifecycle). For committed checks (seller-side), the seller sets a timeout. If the governance agent does not respond within the timeout, the seller treats it as denied and returns an error to the orchestrator. The orchestrator can re-initiate the media buy after the governance agent resolves.

Linking to outcomes

The response includes a check_id. Use this in report_plan_outcome to link outcomes to the governance check that authorized them.

When the governance agent is unavailable

If the governance agent is configured and the caller cannot reach it (timeout, network error), the caller MUST NOT proceed. Governance is a gate — when the gate is unreachable, the default is halt. The caller SHOULD retry with backoff and report the failure upstream.

Delivery cadence

The presence of next_check in a response is the signal that the governance agent expects ongoing delivery reporting. The seller SHOULD call no later than the next_check time. The governance agent MAY treat a missed deadline as a finding on the next delivery check.

Request

Intent check (orchestrator checking before sending to seller)

On the first check_governance call, the governance agent extracts what it needs from payload. The response includes a governance_context string that the caller attaches to the protocol envelope and includes on all subsequent governance calls for this governed action. In 3.0 the governance agent MUST emit a compact JWS signed per the AdCP JWS profile so sellers can verify authenticity, authorization scope, and freshness (the 15-step seller checklist). The token also carries a required plan_hash audit-layer claim — see Plan binding and audit for canonicalization rules, retention obligations, and the eleven reference vectors governance-agent implementers SHOULD validate against before shipping.

Intent check (rights license)

Execution check — purchase

Execution check — modification

Execution check — delivery

Response

approved (intent check)

The orchestrator proceeds to send the create_media_buy to the seller before expires_at.

approved (execution check — purchase with delivery opt-in)

The seller proceeds with the media buy. The presence of next_check signals that the governance agent expects delivery reporting starting at that time.

approved (execution check — delivery)

The seller continues delivery and schedules the next governance check for next_check.

denied (intent check)

The orchestrator MUST NOT send the tool call to the seller.

denied (execution check — delivery geo drift)

The seller MUST pause delivery immediately and correct the geo targeting before resuming.

conditions (execution check — purchase)

The seller MUST adjust its planned delivery, then re-call check_governance with the updated parameters before proceeding.

conditions (execution check — delivery overpacing)

The seller MUST adjust pacing and re-call check_governance immediately. The next_check is set closer than normal so the governance agent can verify the correction.

Fields

Request

Delivery metrics

Response

Error codes