Design question: verifiable approval provenance for cMCP tool catalogs #24
SomeshZanwar
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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