resolveAuthProfileOrder(ordenación de perfiles)resolveApiKeyForProfile(resolución de credenciales en tiempo de ejecución)openclaw models status --probe- comprobaciones de autenticación de
openclaw doctor(doctor-auth)
Códigos de motivo de sondeo estables
Los resultados del sondeo llevan un grupostatus (ok, auth, rate_limit, billing, timeout, format, unknown, no_model) más un reasonCode estable cuando el sondeo nunca llegó a una llamada al modelo:
reasonCode | Significado |
|---|---|
excluded_by_auth_order | Perfil omitido del orden de autenticación explícito para su proveedor. |
missing_credential | No hay ninguna credencial en línea ni SecretRef configurada. |
expired | El token expires está en el pasado. |
invalid_expires | expires no es una marca de tiempo Unix válida, positiva y en ms. |
unresolved_ref | La SecretRef configurada no se pudo resolver. |
ineligible_profile | El perfil es incompatible con la configuración del proveedor (incluye entrada de clave mal formada). |
no_model | Existen credenciales, pero no se resolvió ningún candidato de modelo sondeable. |
ok como el código de motivo para credenciales utilizables.
Credenciales de token
Las credenciales de token (type: "token") admiten token en línea y/o tokenRef.
Reglas de elegibilidad
- Un perfil de token no es elegible cuando tanto
tokencomotokenRefestán ausentes (missing_credential). expireses opcional. Cuando está presente, debe ser un número finito de milisegundos desde la época Unix mayor que0y no superior a la marca de tiempo máxima de JavaScriptDate(8640000000000000).- Si
expiresno es válido (tipo incorrecto,NaN,0, negativo, no finito o por encima de ese máximo), el perfil no es elegible coninvalid_expires. - Si
expiresestá en el pasado, el perfil no es elegible conexpired. tokenRefno omite la validación deexpires.
Reglas de resolución
- Las semánticas del resolvedor coinciden con las semánticas de elegibilidad para
expires. - Para perfiles elegibles, el material del token se puede resolver desde el valor en línea o desde
tokenRef. - Las referencias irresolubles producen
unresolved_refen la salida demodels status --probe.
Portabilidad de copia de agentes
La herencia de autenticación de agentes es de lectura indirecta. Cuando un agente no tiene perfil local, resuelve perfiles desde el almacén del agente predeterminado/principal en tiempo de ejecución sin copiar material secreto en su propio almacén de credenciales (agents/<agentId>/agent/openclaw-agent.sqlite).
Los flujos de copia explícitos, como openclaw agents add, usan esta política de portabilidad:
- Los perfiles
api_keyytokenson portátiles salvo quecopyToAgents: false. - Los perfiles
oauthno son portátiles de forma predeterminada porque los tokens de actualización pueden ser de un solo uso o sensibles a la rotación. - Los flujos OAuth propiedad del proveedor pueden optar por participar con
copyToAgents: truesolo cuando se sepa que copiar material de actualización entre agentes es seguro; la opción solo se aplica cuando el perfil lleva material de acceso/actualización en línea.
Rutas de autenticación solo por configuración
Las entradas deauth.profiles con mode: "aws-sdk" son metadatos de enrutamiento, no credenciales almacenadas. Son válidas cuando el proveedor de destino usa models.providers.<id>.auth: "aws-sdk", la ruta que escribe la configuración de Amazon Bedrock propiedad del Plugin. Estos ids de perfil pueden aparecer en auth.order y en anulaciones de sesión incluso cuando no existe una entrada coincidente en el almacén de credenciales.
No escribas type: "aws-sdk" en el almacén de credenciales; las credenciales almacenadas solo son api_key, token u oauth. Si un auth-profiles.json heredado tiene tal marcador, openclaw doctor --fix lo mueve a auth.profiles y elimina el marcador del almacén.
Filtrado explícito del orden de autenticación
- Cuando
auth.order.<provider>o la anulación de orden del almacén de autenticación está configurada para un proveedor,models status --probesolo sondea ids de perfil que permanecen en el orden de autenticación resuelto para ese proveedor. La anulación almacenada prevalece sobre la configuraciónauth.order. - Un perfil almacenado para ese proveedor que se omite del orden explícito no se prueba silenciosamente más tarde. La salida del sondeo lo informa con
reasonCode: excluded_by_auth_ordery el detalleExcluded by auth.order for this provider.
Resolución del destino de sondeo
- Los destinos de sondeo pueden provenir de perfiles de autenticación, credenciales de entorno o
models.json(sourcedel resultado:profile,env,models.json). - Si un proveedor tiene credenciales, pero OpenClaw no puede resolver un candidato de modelo sondeable para él,
models status --probeinformastatus: no_modelconreasonCode: no_model.
Descubrimiento de credenciales de CLI externo
- Las credenciales solo de tiempo de ejecución propiedad de CLI externos (Claude CLI para
claude-cli, Codex CLI paraopenai, MiniMax CLI paraminimax-portal) se descubren solo cuando el proveedor, el runtime o el perfil de autenticación están en el alcance de la operación actual, o cuando ya existe un perfil local almacenado para esa fuente externa. - Los llamadores del almacén de autenticación eligen un modo explícito de descubrimiento de CLI externo:
nonepara autenticación persistida/de Plugin únicamente,existingpara actualizar perfiles de CLI externo ya almacenados, oscopedpara un conjunto concreto de proveedor/perfil. - Las rutas de solo lectura/estado pasan
allowKeychainPrompt: false; usan solo credenciales de CLI externo respaldadas por archivos y no leen ni reutilizan resultados de macOS Keychain.
Protección de política de OAuth SecretRef
La entrada SecretRef es solo para credenciales estáticas. Las credenciales OAuth son mutables en tiempo de ejecución (los flujos de actualización persisten tokens rotados), por lo que el material OAuth respaldado por SecretRef dividiría el estado mutable entre almacenes.- Si una credencial de perfil es
type: "oauth", los objetos SecretRef se rechazan para cualquier campo de material de credencial en ese perfil. - Si
auth.profiles.<id>.modees"oauth", se rechaza la entradakeyRef/tokenRefrespaldada por SecretRef para ese perfil. - Las infracciones son fallos estrictos (errores lanzados) en las rutas de preparación de secretos de inicio/recarga y de resolución de perfiles.
Mensajería compatible con versiones heredadas
Por compatibilidad con scripts, los errores de sondeo mantienen esta primera línea sin cambios:Auth profile credentials are missing or expired.
El detalle legible para humanos y el código de motivo estable siguen en líneas posteriores con la forma ↳ Auth reason [code]: ....