Error Code Registry¶
This is the normative registry for all error codes used across the cMCP Runtime. Every error code MUST be registered here before it is referenced in code, configuration, or other spec documents. Implementations MUST NOT emit error codes that do not appear in this registry.
Runtime Errors¶
| error_code | HTTP status | log level | description | spec reference |
|---|---|---|---|---|
ATTESTATION_REPORT_UNAVAILABLE | 503 | FATAL | TEE provider did not return an attestation report within timeout | failure-modes.md FM-1 |
ATTESTATION_PROVIDER_UNSUPPORTED | 500 | FATAL | No supported TEE provider detected and CMCP_DEV_MODE is not set | attestation.md §1.1 |
ATTESTATION_PROVIDER_NOT_IMPLEMENTED | 501 | FATAL | A recognized provider was explicitly selected but is not yet implemented (e.g. opaque) | attestation.md §1.1 |
POLICY_HASH_MISMATCH | 500 | FATAL | Measured policy bundle hash does not match deployment manifest | failure-modes.md FM-4 |
POLICY_RELOAD_PINNED_HASH | 500 | FATAL | policy_reload_interval_seconds > 0 configured alongside a pinned CMCP_POLICY_HASH. Every reload is validated against that hash, so a changed bundle could never be installed; refused at startup rather than appearing to work | policy-hot-reload.md |
POLICY_SIGNATURE_INVALID | 500 | FATAL | A policy bundle's manifest signature is absent, malformed, or does not verify under the pinned CMCP_POLICY_SIGNING_KEY; or its version did not increase, which would allow a genuinely signed older bundle to be replayed | policy-hot-reload.md |
CONFORMANCE_PROFILE_UNSATISFIED | 500 | FATAL | A named conformance_profile requires something the deployment has not configured; aarm requires an Agent Manifest binding (AARM R6) | STATUS.md |
CATALOG_HASH_MISMATCH | 500 | FATAL | Measured catalog hash does not match deployment manifest | attestation.md §5 |
CATALOG_RESTART_REQUIRED | startup | FATAL | Runtime catalog mutation was configured, but routing authority remains immutable until a newly pinned gateway restart | catalog-lifecycle.md |
AGENT_MANIFEST_BINDING_FAILED | 500 | FATAL | Signed Agent Manifest signature, authenticated subject, policy hash, or catalog hash did not match the runtime session inputs | session-policy.md |
TOOL_NOT_IN_CATALOG | 403 | WARN | Agent requested a tool not present in the attested catalog | cedar-policy.md |
POLICY_DENY | 403 | INFO | Cedar policy evaluation returned deny for this call | cedar-policy.md |
CATALOG_TOOL_NAME_COLLISION | 500 | FATAL | Two catalog entries register the same tool_name | tool-identity.md |
CATALOG_DRIFT_DETECTED | 409 | ERROR | Upstream server changed a tool definition since catalog was sealed | attestation.md §5 |
MCP_PARSE_FAILURE | 400 | WARN | Incoming MCP JSON-RPC message failed to parse | failure-modes.md FM-5 |
MCP_INVALID_REQUEST | 400 | WARN | Parsed JSON is not a valid JSON-RPC request shape | failure-modes.md FM-5 |
RESPONSE_SIZE_EXCEEDED | 413 | WARN | Tool response exceeds max_response_size_bytes | response-inspection.md Stage 1 |
RESPONSE_INJECTION_DETECTED | 403 | ERROR | Response inspection detected indirect injection pattern | response-inspection.md Stage 4 |
RESPONSE_SCHEMA_VIOLATION_STRICT | 409 | WARN | Tool response contains fields outside approved output_schema (strict mode) | response-inspection.md Stage 2 |
SESSION_SENSITIVITY_POLICY_DENY | 403 | INFO | Call denied due to session sensitivity state | session-policy.md |
SESSION_RESET_REQUIRED | 428 | INFO | Agent attempted call that requires session reset first | session-policy.md |
TEE_FAULT | 500 | ERROR | TEE process fault during call execution | failure-modes.md FM-3 |
ATTESTATION_STALE | 412 | WARN | Attestation report validity period has expired | attestation.md §3 |
BREAK_GLASS_ACTIVE | 200 | WARN | Call allowed via catalog exception (break-glass procedure active) | tool-identity.md |
Verification Library Errors¶
The following error codes are defined and documented in verification-library.md. They are listed here for cross-reference completeness; the verification library spec is authoritative for their semantics.
| error_code |
|---|
UNSUPPORTED_PROVIDER |
SIGNATURE_INVALID |
PUBLIC_KEY_NOT_BOUND |
POLICY_HASH_MISMATCH |
CATALOG_HASH_MISMATCH |
AGENT_MANIFEST_MISMATCH |
ATTESTATION_STALE |
CHAIN_BROKEN |
CLAIM_MALFORMED |
EXTERNAL_EVIDENCE_VERIFICATION_FAILED |
Note:
POLICY_HASH_MISMATCH,CATALOG_HASH_MISMATCH, andATTESTATION_STALEappear in both tables. The Runtime emits them during startup or request handling; the verification library emits them during offline or client-side verification. The semantics are consistent across both contexts.