Reference

Reason codes

Stable identifiers returned on assurance claims, decisions, evidence acknowledgements, and errors. Adding a code is a contract change; removing one requires a new API version. Match on the code, never on the human-readable text.

Claim statuses

Each Assurance Profile claim carries one of these statuses. Unsupported statuses are reported so a policy can never depend on a claim GrayPass does not make.

CodeMeaning
operator_continuity.insufficient_evidenceNot enough template-backed evidence in this session.
operator_continuity.likelyCurrent behavior is consistent with the enrolled operator's Brainprint.
operator_continuity.not_confirmedBehavior diverged from the enrolled operator.
operator_continuity.uncertainBehavior is only partly consistent with the enrolled operator.
operator_change.detectedThe change detector flagged a shift from the session's own operator baseline.
operator_change.insufficient_evidenceThe change detector is not armed with enough fresh, identity-bearing baseline evidence.
operator_change.not_detectedNo shift from the session baseline was detected.
operator_change.uncertainThe session was idle or too sparse to evaluate change.
automation.detectedInteraction timing or kinematics matched scripted or replayed input.
automation.insufficient_evidenceNo calibrated automation conclusion is available from this evidence.
automation.not_detectedNo automation or replay indicator fired.
human_presence.unsupportedDerived interaction activity does not establish human presence or liveness.
explicit_action_approval.confirmedAn action-bound challenge was completed for this exact request.
explicit_action_approval.not_presentNo action-bound approval exists for this request.
device_integrity.unsupportedNo device attestation evidence is accepted in this deployment.
identity_anchor_validity.unsupportedGrayPass did not verify the identity anchor declared at enrollment.
personhood.unsupportedGrayPass does not assess personhood.
agent_mandate_validity.unsupportedAgent mandates are not available.
approval_method.manual_reviewApproval used an attributed manual review; behavioral limitations remain in the profile.
approval_method.passkeyApproval used a phishing-resistant WebAuthn passkey with user verification.
approval_method.sandbox_confirmApproval used a labeled sandbox-only confirmation, not a passkey.

Coverage, freshness, and evidence

Coverage and freshness describe the evidence behind a claim. Evidence codes explain why a submitted window was not counted.

CodeMeaning
coverage.noneNo evidence windows.
coverage.partialSome evidence, below the sufficient threshold.
coverage.sparseFewer windows or active seconds than the policy minimum.
coverage.sufficientEnough evidence for the policy.
freshness.staleThe newest template-backed evidence is older than the policy allows.
evidence.rejected_qualityThe evidence window failed integrity or quality checks and was not counted.
evidence.rejected_replayThe evidence window repeated, overlapped, or predated already counted evidence and was not counted.
evidence.rejected_unsignedThe evidence window carried no valid frame signature and was not counted.

Limitations

Limitations travel with the profile and remain visible in the decision trace. A challenge never removes them.

CodeMeaning
limitation.adaptation_frozenTemplate adaptation is disabled for this subject.
limitation.compromised_endpoint_not_detectableA fully compromised device can fabricate evidence.
limitation.enrollment_unanchoredEnrollment relied only on the customer's session; the original enrollee was not independently verified.
limitation.experimental_assessmentBehavioral claim statuses are experimental and are not approved for live enforcement.
limitation.legacy_enrollmentThe Brainprint was created under the frozen legacy contract.
limitation.no_calibrated_confidenceNo real-human calibration exists; confidence values are not emitted.
limitation.single_modalityOnly one behavioral modality contributed.

Decision reasons

Every decision carries at least one reason code explaining which policy branch produced it.

CodeMeaning
decision.challenge_completedA completed challenge satisfied the explicit approval requirement.
decision.deny_conditionA deny condition in the policy matched.
decision.hold_conditionA hold condition in the policy matched.
decision.insufficient_evidenceCoverage or freshness below the policy minimum.
decision.manual_review_approvedAn authorized reviewer explicitly approved this exact held request; behavioral limitations remain unchanged.
decision.manual_review_rejectedAn authorized reviewer explicitly rejected this exact held request.
decision.manual_review_supersededAn authorized reviewer approved this held request, but a policy deny condition or hard attack indicator was firing at approval time, so the evaluated decision stands and no enforcement proof was issued.
decision.policy_satisfiedAll policy requirements were met.
decision.requirement_unmetA required claim status was not reached.
decision.session_missingNo active session for the subject.
decision.shadow_modeThe action is in shadow mode; no enforceable proof was issued.
decision.subject_revokedThe subject is revoked.
decision.test_modeThe action is in test mode inside a sandbox environment.

Errors

Errors are returned as RFC 9457 problem details with the code in the code field. See the troubleshooting guide for the usual causes.

CodeMeaning
error.action_archivedThe action is archived.
error.action_not_registeredThe action key is not registered in this environment.
error.audience_not_allowedThe audience is not permitted for this action.
error.browser_credential_not_allowedBrowser credentials cannot perform this operation.
error.caller_not_allowedThe authenticated credential is not registered for this action or request chain.
error.challenge_expiredThe challenge expired.
error.challenge_mismatchThe challenge is bound to a different request.
error.context_invalidThe context did not match the action's context schema.
error.enforcement_not_approvedLive enforcement is blocked until a real-human validation and calibration release is approved.
error.environment_mismatchThe credential's environment does not match the resource.
error.idempotency_conflictThe idempotency key was reused with a different request.
error.idempotency_staleA stored idempotent result is no longer safe after subject, action, or policy state changed.
error.nonce_reusedThe nonce was already used in this environment.
error.not_foundThe resource does not exist in this environment. Returned identically for a resource owned by another tenant.
error.policy_conflictA concurrent policy change conflicted with this request.
error.policy_inactiveThe action has no active policy version.
error.policy_integrityImmutable policy content did not match its recorded digest.
error.proof_unavailableThe signing service is unavailable; no proof was issued.
error.rate_limitedThe caller exceeded the bounded request rate for this surface.
error.request_in_progressAnother request with this idempotency key is still being decided.
error.request_staleThe authorization request timestamp is outside the accepted freshness window.
error.subject_not_enrolledThe operation requires an enrolled subject and enrollment has not completed.
error.subject_not_foundThe subject does not exist in this environment.

Generated from the API contract in contracts/ and the source in docs/. The build fails if this page disagrees with the running API.