Design question: verifiable approval provenance for cMCP tool catalogs #24
Replies: 1 comment
|
Yes, this belongs within cMCP's governance scope, with a narrower first boundary than embedding a claimed verification status in the runtime object. The accepted first iteration is a detached, signed catalog-change record plus verifier behavior and deterministic vectors. The verifier—not the catalog author—produces the status and binds the record's Reuse RFC 8785/JCS and AgenTrust key identifiers/signing conventions where compatible. Treat anti-rollback as a separate assurance: a hash chain proves continuity of what was presented, while freshness requires an externally pinned checkpoint or transparency receipt. And yes, Phase 2 wording should distinguish measurement from approval provenance. Measurement detects post-approval drift; it cannot prove the approved input was benign. Tracked as cmcp#517. Closing this discussion as decided and moving implementation detail to the issue. |
Uh oh!
There was an error while loading. Please reload this page.
Context
cMCP already provides strong integrity controls for an approved tool catalog.
The gateway validates catalog entries, verifies tool-definition hashes, rejects duplicate tool names, computes a deterministic full-catalog hash, and carries the active catalog hash in the GatewayClaim.
That answers:
I think there may be a separate governance gap:
The current catalog carries an
approved_bystring, but not independently verifiable evidence showing:LIMITATIONS.mdalready notes that the gateway trusts the approved catalog and cannot detect when a look-alike or malicious entry was introduced through a compromised reviewer or social-engineering process.Integrity versus approval provenance
I see these as two separate properties:
Post-approval catalog integrity
The running catalog has not changed from the approved catalog hash.
Pre-activation approval provenance
The approved catalog was produced through a verifiable review and authorization process.
The existing catalog hash addresses the first property. It does not, by itself, establish the second.
This also appears relevant to the Phase 2 statement that measuring the tool catalog closes the typosquatting threat. Measurement can prove that a catalog did not change after approval, but it cannot determine whether a deceptive entry was already present when the catalog was approved.
Possible bounded direction
Would it make sense for cMCP to support a signed catalog-change record for operations such as:
A minimal record might bind:
The approval policy could support configurable M-of-N authorization rather than a fixed number of reviewers, including:
Possible runtime binding
For an initial cMCP-specific implementation, a verified summary could potentially live under:
{ "gateway": { "catalog": { "hash": "sha256:...", "drift_detected": false, "provenance": { "record_id": "...", "chain_tip": "sha256:...", "approval_policy_hash": "sha256:...", "verification_status": "verified" } } } }The verifier would require:
The provenance status should be produced by the verifier, not accepted from a user-editable catalog field.
Anti-rollback consideration
A signed hash chain can prove internal continuity of the records presented, but it cannot alone prove that the operator supplied the latest valid record.
A production design may therefore also require one of:
This may be unnecessary for a first schema iteration, but it seems important to define the assurance boundary explicitly.
Non-goals
This would not prove that:
It would only establish that the active catalog is bound to a verifiable approval process under a configured policy.
Questions for maintainers
gateway.catalog.provenancebe an appropriate initial location, or should this remain a detached sidecar artifact?I would be interested in contributing a focused design and verification implementation after maintainer feedback on the appropriate scope.
All reactions