fix(deps): require agent-manifest>=0.6.1 and report unappraisable manifests clearly - #422
Merged
Merged
Conversation
…ifests clearly verify_agent_manifest_binding runs the SDK verifier over a peer-supplied manifest. Before agent-manifest 0.6.1, a manifest declaring ML-DSA-65 or hybrid crashed the SDK with an uncaught RuntimeError on any install without the optional [pq] extra, so this path answered a crash rather than a rejection. The floor is now 0.6.1, where the SDK returns UNVERIFIABLE instead. cMCP already rejects UNVERIFIABLE, so the fail-closed behavior is unchanged. What changes is the message: "could not be verified" (no trusted key, or an algorithm this build cannot run) is now distinct from "verification failed" (a bad signature), and the verifier's own reason is surfaced. An operator seeing the first needs to install an extra or fix their trust anchor; one seeing the second has a bad manifest. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Picks up the verifier crash fixed in agent-manifest 0.6.1 (agent-manifest#245), which cMCP is exposed to.
Why this matters here specifically
verify_agent_manifest_bindingcalls the SDK verifier on a peer-supplied manifest. Before agent-manifest 0.6.1, a manifest declaringML-DSA-65orhybrid-Ed25519-ML-DSA-65reached_require_oqs()and crashed the SDK with an uncaughtRuntimeErroron any install without the optional[pq]extra, which is the default. So this path answered a crash rather than a rejection, triggered by input a peer controls, with no valid signature or trusted key needed.The existing floor was
>=0.5, which merely allows 0.6.1. The comment inpyproject.tomlsays why it is now a requirement rather than a preference.Behaviour change
Fail-closed behaviour is unchanged: cMCP already rejected
UNVERIFIABLE, which is what the SDK now returns. What changes is the message.UNVERIFIABLEpreviously raisedConfigError("Agent Manifest signature verification failed"), which is misleading. The signature did not fail; it could not be checked, either because there is no trusted key for it or because this build cannot run the algorithm. Those need opposite operator responses: install an extra or fix the trust anchor, versus reject a bad manifest. It now raises "Agent Manifest signature could not be verified" and appends the verifier's own reason:The
MISMATCH-with-signature-detail path keeps "signature verification failed", so a genuinely bad signature still reads that way.Verification
Exercised through cMCP's own entry point, not the SDK's, with agent-manifest 0.6.1 resolved from the new floor and no
[pq]extra installed. A peer-supplied ML-DSA-65 manifest yields theConfigErrorabove rather than aRuntimeError.pyproject.toml, confirming the floor resolves to 0.6.1