For agents

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_evidenceThis session lacks sufficient fresh, template-backed evidence for continuity assessment.
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_evidenceThere is not enough fresh evidence to compare current activity with the session's operator baseline.
operator_change.not_detectedNo shift from the session baseline was detected.
operator_change.uncertainReserved for an inconclusive change assessment. Current assessments use operator_change.insufficient_evidence when a comparison cannot be made.
automation.detectedAn indicator flagged timing or movement patterns consistent with automation or replay; this does not establish general bot detection.
automation.insufficient_evidenceThe evidence does not support an automation conclusion. Absence of an indicator is not proof of human origin.
automation.not_detectedReserved for an assessment with no detected automation indicator. Current assessments use automation.insufficient_evidence when no indicator fires; absence does not establish human origin.
human_presence.unsupportedDerived interaction activity does not establish human presence or liveness.
explicit_action_approval.confirmedThis exact request has approval from a completed bound challenge or an authorized manual review. Check the approval method and final decision.
explicit_action_approval.not_presentNo action-bound approval exists for this request.
device_integrity.unsupportedCurrent assurance does not establish device integrity.
identity_anchor_validity.unsupportedGrayPass did not verify the identity anchor declared at enrollment.
personhood.unsupportedGrayPass does not assess personhood.
agent_mandate_validity.unsupportedThis assessment provides no assurance of agent-mandate validity.
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 accepted evidence windows are available.
coverage.partialAccepted activity provides partial coverage below the sufficient category. The policy's required coverage is evaluated separately.
coverage.sparseAccepted activity is sparse in windows, active time, or observed modalities. The policy's required coverage is evaluated separately.
coverage.sufficientAccepted activity meets the sufficient coverage category. This does not by itself satisfy the policy's other requirements.
freshness.staleFresh template-backed evidence is absent or too old for the applicable freshness requirement.
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_frozenAutomatic updates to the subject's Brainprint from new observations are disabled. Freezing does not delete an existing template or stop evidence collection.
limitation.compromised_endpoint_not_detectableA fully compromised device can fabricate evidence.
limitation.enrollment_unanchoredEnrollment declared no anchor or only a customer-session anchor; GrayPass did not independently verify the original enrollee.
limitation.experimental_assessmentBehavioral categories summarize observed patterns, not verified identity or calibrated accuracy. Apply the stated coverage, freshness and policy requirements.
limitation.legacy_enrollmentThis enrollment uses an earlier contract; re-enrollment may be required for current features.
limitation.no_calibrated_confidenceInterpret claim statuses with their coverage, freshness and limitations, rather than as identity probabilities.
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_completedExplicit approval satisfied the evaluated policy. Inspect the approval method to distinguish a bound challenge from an authorized manual review.
decision.deny_conditionA deny condition in the policy matched.
decision.hold_conditionA hold condition in the policy matched.
decision.insufficient_evidenceRequired coverage, freshness, or continuity evidence is missing or insufficient. Follow the returned decision for the next step.
decision.manual_review_approvedAn authorized reviewer explicitly approved this exact held request; behavioral limitations remain unchanged.
decision.manual_review_rejectedReserved for rejection of an exact held request by an authorized reviewer. Current rejections are recorded in review state and the manually_rejected outcome rather than emitting this code.
decision.manual_review_supersededThe review did not override a deny condition or attack indicator; no enforceable 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_archivedReserved for an archived action. Current authorization requests for archived actions return error.action_not_registered.
error.action_not_registeredNo active registered action with this key is available in the environment; the action may be missing or archived.
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 permitted for this action or request chain.
error.challenge_expiredThe challenge has expired or is no longer pending for this operation. Retrieve its current state before continuing.
error.challenge_mismatchThe challenge or passkey ceremony could not be validated for the intended subject and request. Read the problem detail for the failed prerequisite or validation.
error.commercial_access_unavailableConfirm commercial access for this tenant and environment with GrayPass, then request fresh authorization for the pending operation.
error.companion_unavailableOptional companion evidence is unavailable. No comparison result was returned.
error.context_invalidA request field, context, or operation prerequisite is invalid. Read the problem detail to identify the required correction.
error.enforcement_not_approvedThe requested mode requires an eligible environment configuration. Retain the effective action mode and contact support with the environment and trace ID.
error.environment_mismatchThe credential's environment does not match the resource.
error.idempotency_conflictThe request conflicts with an existing operation or its current state, including reuse of an idempotency key with a different payload. Inspect the existing record before retrying.
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_conflictThe current action or policy state conflicts with this request or continuation. Retrieve the current state before starting a fresh authorization.
error.policy_inactiveThe action has no active policy version.
error.policy_integrityImmutable policy content did not match its recorded digest.
error.proof_unavailableObtain a valid proof before proceeding with this enforce-mode request. Keep the operation pending while you resolve the proof response.
error.rate_limitedThe caller reached the request rate limit for this operation.
error.request_in_progressAnother request with this idempotency key is still being decided.
error.request_staleThe request timestamp or evidence-window bounds are missing, invalid, or 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.