Skip to content

fix(compliance): default governance_agent_url to seller-local stub (#5665) [Option B — alternative]#5677

Closed
danyliukmykola wants to merge 1 commit into
adcontextprotocol:mainfrom
danyliukmykola:fix/5665-governance-agent-url-seller-local-stub
Closed

fix(compliance): default governance_agent_url to seller-local stub (#5665) [Option B — alternative]#5677
danyliukmykola wants to merge 1 commit into
adcontextprotocol:mainfrom
danyliukmykola:fix/5665-governance-agent-url-seller-local-stub

Conversation

@danyliukmykola

Copy link
Copy Markdown
Contributor

Alternative to the Option A PR for #5665, per the triage's Option B. Opened for completeness so the A-vs-B call can be made against concrete diffs.

Defaults governance_agent_url to a seller-served stub (the seller's own comply_test_controller), removing the counterparty-supplied-URL egress/SSRF surface.

Two caveats vs Option A:

  1. It keeps the scenario mandatory — it does not create the not_applicable opt-out the issue title asks for. Sellers still must implement outbound governance consultation (now against a local stub instead of an external agent).
  2. It depends on the runner exposing a controller-self-URL placeholder — {{runner.controller_url}} doesn't exist yet (only {{runner.webhook_url:…}} and {{prior_step.…}} are runner-managed today), so this spans adcp-client too, not just scenario YAML.

We'd lean Option A — self-contained, and it actually creates the opt-out.

…dcontextprotocol#5665)

Option B (alternative) for adcontextprotocol#5665: point the default governance_agent_url at a
seller-served stub instead of the external training agent, removing the
counterparty-supplied-URL egress/SSRF surface. Keeps the scenario mandatory;
depends on runner support for a controller-self-URL placeholder.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@aao-ipr-bot

aao-ipr-bot Bot commented Jun 24, 2026

Copy link
Copy Markdown

IPR Policy Agreement Required

@danyliukmykola — thanks for the contribution. Before this PR can be merged, the AgenticAdvertising.Org IPR Policy requires your agreement.

To agree, post a new comment on this PR with the exact phrase:

I have read the IPR Policy

Your signature is recorded once and covers all contributions to AAO repositories. See signatures/README.md for what gets recorded and why.

@bokelley

Copy link
Copy Markdown
Contributor

Closing in favor of Option A (#5676), now merged.

Recap of why A over B, after independent verification of the runner:

  • B isn't shippable today{{runner.controller_url}} exists nowhere in @adcp/sdk (the only runner placeholders are {{runner.webhook_base}} and {{runner.webhook_url:<step>}}). It would emit a literal unresolved token.
  • B keeps the scenario mandatory — it never creates the not_applicable opt-out the issue asks for.
  • B doesn't remove the egress — it re-defaults governance_agent_url to a self-URL, but the outbound check_governance call still happens and an explicit --context override is still honored, so the counterparty-URL path remains.

The SSRF concern B was reaching for is real and tracked separately as a docs follow-up (governance_agents[].url missing from the security.mdx SSRF enumeration).

@bokelley bokelley closed this Jun 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants