Auth Credential Semantics
Auth Credential Semantics
Section titled “Auth Credential Semantics”This document defines the canonical credential eligibility and resolution semantics used across:
resolveAuthProfileOrderresolveApiKeyForProfilemodels status --probedoctor-auth
The goal is to keep selection-time and runtime behavior aligned.
Stable Reason Codes
Section titled “Stable Reason Codes”okmissing_credentialinvalid_expiresexpiredunresolved_ref
Token Credentials
Section titled “Token Credentials”Token credentials (type: "token") support inline token and/or tokenRef.
Eligibility rules
Section titled “Eligibility rules”- A token profile is ineligible when both
tokenandtokenRefare absent. expiresis optional.- If
expiresis present, it must be a finite number greater than0. - If
expiresis invalid (NaN,0, negative, non-finite, or wrong type), the profile is ineligible withinvalid_expires. - If
expiresis in the past, the profile is ineligible withexpired. tokenRefdoes not bypassexpiresvalidation.
Resolution rules
Section titled “Resolution rules”- Resolver semantics match eligibility semantics for
expires. - For eligible profiles, token material may be resolved from inline value or
tokenRef. - Unresolvable refs produce
unresolved_refinmodels status --probeoutput.
OAuth SecretRef Policy Guard
Section titled “OAuth SecretRef Policy Guard”- SecretRef input is for static credentials only.
- If a profile credential is
type: "oauth", SecretRef objects are not supported for that profile credential material. - If
auth.profiles.<id>.modeis"oauth", SecretRef-backedkeyRef/tokenRefinput for that profile is rejected. - Violations are hard failures in startup/reload auth resolution paths.
Legacy-Compatible Messaging
Section titled “Legacy-Compatible Messaging”For script compatibility, probe errors keep this first line unchanged:
Auth profile credentials are missing or expired.
Human-friendly detail and stable reason codes may be added on subsequent lines.