Conversation
Closes the on-ramp loophole in the webhook-emission universal that let agents self-declare themselves out of the signature phase via `webhook_auth_mode == 'hmac_legacy'`. Operationalizes the "no new HMAC implementers after date X" lever from the RFC 9421 migration plan. Two changes to webhook-emission.yaml: 1. New `signing_keys_published` precheck phase. Runner fetches the agent's brand.json, resolves the `agents[].jwks_uri`, and asserts at least one key carries `adcp_use: "webhook-signing"`. Agents that only ever signed HMAC and never published a 9421 key fail here with a specific error code (`webhook_signing_keys_unpublished` / `webhook_signing_keys_wrong_purpose` / `webhook_signing_keys_all_revoked`) before the signature phase runs. 2. `signature_validity` phase is now required. Dropped `optional: true` and `skip_if: agent.webhook_auth_mode == 'hmac_legacy'`. The runner registers the trigger as a 9421-default buyer (no `authentication` block), so the agent is graded on the signatures it emits in that mode. Buyer-side HMAC registration choices are out of scope for grading the agent. Per-buyer registration is unaffected — buyers can still register HMAC-fallback at `push_notification_config.authentication` in 3.x. This change only addresses the agent-side capability claim. Refs #3360, #4205.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #3360 (Part A — webhook signing on-ramp lever).
What this does
Closes the on-ramp loophole in the
webhook-emissionuniversal that let agents self-declare themselves out of webhook signing viawebhook_auth_mode == 'hmac_legacy'. Operationalizes the "no new HMAC implementers after date X" lever from the RFC 9421 migration plan (#4205).Two changes to
static/compliance/source/universal/webhook-emission.yaml1. New
signing_keys_publishedprecheck phaseRunner fetches the agent's
brand.json, resolvesagents[].jwks_uri, and asserts at least one key carriesadcp_use: "webhook-signing". Agents that only ever signed HMAC and never published a 9421 key fail here, before the signature phase runs.Three specific error codes for diagnostic clarity:
webhook_signing_keys_unpublished— no JWKS or emptywebhook_signing_keys_wrong_purpose— JWKS present but no key with the webhook-signing purposewebhook_signing_keys_all_revoked— all webhook-signing keys revokedThis separates "did you set up keys" from "do you sign correctly," which previously produced
signature_key_unknowndeep in the verifier checklist with no operator-level diagnostic.2.
signature_validityphase is now requiredDropped
optional: trueandskip_if: agent.webhook_auth_mode == 'hmac_legacy'.The runner registers the trigger as a 9421-default buyer (no
authenticationblock onpush_notification_config, already the case at line 141). The agent is graded on the signatures it emits in that mode. Buyer-side HMAC registration choices are out of scope for grading the agent.What this does not change
push_notification_config.authenticationin 3.x. Schema-level removal is tracked at 4.0: drop required: ["authentication"] from reporting-webhook and artifact_webhook #4288 against the 4.0 milestone.idempotency_key_presenceandidempotency_key_stabilityindependently of signing.Net behavior
signature_validitywith specificwebhook_signature_*codesigning_keys_publishedwithwebhook_signing_keys_unpublishedRefs
required: ["authentication"])Out of scope (Part B → 3.2.0)
OAuth 2.1 + OIDC metadata grading (RFC 8414 / 9728 / 7591). Will be filed as a separate issue against the 3.2.0 milestone.
Changeset
minor— adds new fail conditions to the grader. Existing agents that already publish 9421 keys are unaffected; HMAC-only agents that previously passed the universal will now fail.