Reference: refusal codes
Status: shape-only inventory. The codes here are documented from the cloud handlers and SDK fixtures. The full taxonomy is not yet a stable enum; production will need a published taxonomy with stability guarantees. See 022 gap report item 18.
A refusal in Gestalt is not an error. It is a structured finding
about why an act could not enter the cited reality. Every refusal
carries a failed_gate, a refusal_reason (the code), and may
carry remedy_hint, required_evidence, required_intervention,
possible_projection_path, and whether_failure_is_recordable.
This page is the documented inventory of codes you may see today, grouped by family.
Auth and session
Section titled “Auth and session”session_expired bearer token has expiredsession_tampered bearer token signature does not verifyscope_mismatch token's scopes do not include the operationtoken_tampered bearer token contents tamperedcross_tenant_access call attempts cross-tenant accessReturned at the membrane authentication layer.
Intent and commit
Section titled “Intent and commit”required_evidence_missing a required evidence_bundle was not citedauthority_package_missing no active authority package supports this capabilityauthority_package_stale cited package is past its freshness windowstanding_missing the actor does not have standing for this actstanding_stale actor's standing has lapsedcapability_unrecognized cited capability is not known to the runtimecapability_superseded cited capability has been supersededeffect_grammar_violation proposed effects exceed the capability's declared grammarShop / hosted operator
Section titled “Shop / hosted operator”shop_prepare_token_expiredshop_prepare_token_usedhosted_operator_grant_missinghosted_operator_grant_revokedhosted_operator_scope_mismatchAuthority packages
Section titled “Authority packages”authority_package_tamper_refusedauthority_package_staleauthority_package_self_activation_refusedauthority_package_activation_requirements_missingauthority_package_revocation_unauthorizedAuthority context / presence
Section titled “Authority context / presence”m13_wrong_actorm13_wrong_vesselm13_human_presence_cannot_create_standingm13_session_revoke_unauthorizedm13_key_rotate_unauthorizedCapability publication / policy
Section titled “Capability publication / policy”capability_manifest_malformedcapability_manifest_imports_unresolvedcapability_manifest_imports_cycliccapability_publisher_unsigned (production-only)capability_attestation_missing (production-only)capability_self_publication_refusedcapability_policy_evaluation_failedEffects
Section titled “Effects”effect_human_presence_requiredeffect_idempotency_key_collisioneffect_capability_grammar_violationeffect_adapter_unknownEconomy
Section titled “Economy”economic_invoice_evidence_missingeconomic_payment_evidence_missingeconomic_bookkeeping_evidence_incompleteeconomic_closure_surface_openEvidence / connectors
Section titled “Evidence / connectors”connector_fixture_only request.fixture must be true todayevidence_stale stale: true was providedconnector_tenant_scope_mismatch outside_tenant: true was providedconnector_idempotency_collisionconnector_evidence_kind_unknownhuman_presence_creates_standing_refusedidentity_fallback_creates_standing_refusedReality
Section titled “Reality”reality_unspecifiedreality_record_cites_projectedreality_projected_cites_other_projectionreality_promotion_authority_missingreality_promotion_atom_missingreality_discard_attempts_deleteProof / receipt
Section titled “Proof / receipt”missing_entitlementproof_entitlement_missingproof_disclosure_scope_unauthorizedHuman auth
Section titled “Human auth”human_auth_face_match_consent_missinghuman_auth_passkey_user_not_verifiedhuman_auth_passkey_binding_unknownhuman_auth_challenge_expiredhuman_auth_challenge_replayedDefault posture (from contract)
Section titled “Default posture (from contract)”The contract publishes a default posture map that tells you the default refusal mode for several conditions:
{ "missing_standing": "refuse", "missing_authority_package": "pend", "stale_authority_package": "refuse", "low_confidence_extraction": "pend", "cross_tenant_access": "refuse", "projection_promotion_without_evidence": "refuse"}refuse produces an outcome: "refused" with the corresponding code.
pend produces outcome: "pending" with a pending action.
See default-posture.md.
How to handle a refusal
Section titled “How to handle a refusal”- Read the code. Map it to the canonical meaning above.
- Read the body. It usually includes
requiredEvidence/requiredIntervention/remedyHint. - Surface it. A Koerper should display the refusal as a
structured “this could not be admitted because
; to fix, .” Not as a generic error. - Respond. Gather the missing evidence, request the missing
intervention, or open a projection if the body suggests
possible_projection_path.
What refusal codes are not
Section titled “What refusal codes are not”- Not HTTP error codes. A refused operation returns HTTP 2xx.
- Not bugs. They are governed facts.
- Not strings to display directly. They are stable identifiers for code paths; human prose belongs in the Koerper.
- Not exhaustive (yet). New codes will appear as the runtime
fills gaps. Always introspect via
/v1/refusals/codesfor the current set.
Where to read next
Section titled “Where to read next”- Outcomes
- Capability state
- Default posture
- Concepts: the membrane — refusal semantics
- API: observability and misc —
the
refusal.codesintrospection endpoint