Gateway
Semântica das credenciais de autenticação
Este documento define a elegibilidade canônica de credenciais e a semântica de resolução usadas em:
resolveAuthProfileOrderresolveApiKeyForProfilemodels status --probedoctor-auth
O objetivo é manter alinhados o comportamento no momento da seleção e o comportamento em tempo de execução.
Códigos de motivo estáveis da sondagem
okexcluded_by_auth_ordermissing_credentialinvalid_expiresexpiredunresolved_refno_model
Credenciais de token
Credenciais de token (type: "token") aceitam token inline e/ou tokenRef.
Regras de elegibilidade
- Um perfil de token é inelegível quando
tokenetokenRefestão ausentes. expiresé opcional.- Se
expiresestiver presente, ele deve ser um número finito maior que0. - Se
expiresfor inválido (NaN,0, negativo, não finito ou do tipo errado), o perfil é inelegível cominvalid_expires. - Se
expiresestiver no passado, o perfil é inelegível comexpired. tokenRefnão contorna a validação deexpires.
Regras de resolução
- A semântica do resolvedor corresponde à semântica de elegibilidade para
expires. - Para perfis elegíveis, o material do token pode ser resolvido a partir do valor inline ou de
tokenRef. - Referências que não podem ser resolvidas produzem
unresolved_refna saída demodels status --probe.
Portabilidade da cópia de agentes
A herança de autenticação do agente é por leitura direta. Quando um agente não tem perfil local, ele
pode resolver perfis do armazenamento do agente padrão/principal em tempo de execução sem
copiar material secreto para seu próprio auth-profiles.json.
Fluxos de cópia explícitos, como openclaw agents add, usam esta política de portabilidade:
- Perfis
api_keysão portáveis, a menos quecopyToAgents: false. - Perfis
tokensão portáveis, a menos quecopyToAgents: false. - Perfis
oauthnão são portáveis por padrão porque tokens de atualização podem ser de uso único ou sensíveis a rotação. - Fluxos OAuth pertencentes ao provedor podem optar por participar com
copyToAgents: truesomente quando a cópia de material de atualização entre agentes for reconhecidamente segura.
Perfis não portáveis continuam disponíveis por herança de leitura direta, a menos que o agente de destino faça login separadamente e crie seu próprio perfil local.
Rotas de autenticação somente por configuração
Entradas auth.profiles com mode: "aws-sdk" são metadados de roteamento, não credenciais
armazenadas. Elas são válidas quando o provedor de destino usa
models.providers.<id>.auth: "aws-sdk" ou a rota padrão integrada da AWS SDK do Amazon Bedrock.
Esses ids de perfil podem aparecer em auth.order e substituições de sessão
mesmo quando não existe uma entrada correspondente em auth-profiles.json.
Não grave type: "aws-sdk" em auth-profiles.json. Se uma instalação legada
tiver esse marcador, openclaw doctor --fix o move para auth.profiles e
remove o marcador do armazenamento de credenciais.
Filtragem explícita da ordem de autenticação
- Quando
auth.order.<provider>ou a substituição de ordem do armazenamento de autenticação é definida para um provedor,models status --probesó sonda ids de perfil que permanecem na ordem de autenticação resolvida para esse provedor. - Um perfil armazenado para esse provedor que é omitido da ordem explícita
não é tentado silenciosamente mais tarde. A saída da sondagem o relata com
reasonCode: excluded_by_auth_ordere o detalheExcluded by auth.order for this provider.
Resolução do destino da sondagem
- Destinos de sondagem podem vir de perfis de autenticação, credenciais de ambiente ou
models.json. - Se um provedor tem credenciais, mas o OpenClaw não consegue resolver um candidato de modelo
sondável para ele,
models status --proberelatastatus: no_modelcomreasonCode: no_model.
Descoberta de credenciais de CLI externa
- Credenciais somente de tempo de execução pertencentes a CLIs externas são descobertas somente quando o provedor, runtime ou perfil de autenticação está no escopo da operação atual, ou quando um perfil local armazenado para essa fonte externa já existe.
- Chamadores do armazenamento de autenticação devem escolher um modo explícito de descoberta de CLI externa:
nonepara autenticação persistida/de Plugin apenas,existingpara atualizar perfis de CLI externa já armazenados, ouscopedpara um conjunto concreto de provedor/perfil. - Caminhos somente leitura/de status passam
allowKeychainPrompt: false; eles usam credenciais de CLI externa respaldadas por arquivo apenas e não leem nem reutilizam resultados do macOS Keychain.
Proteção da política OAuth SecretRef
- Entrada SecretRef é apenas para credenciais estáticas.
- Se uma credencial de perfil for
type: "oauth", objetos SecretRef não são aceitos para o material de credencial desse perfil. - Se
auth.profiles.<id>.modefor"oauth", entradakeyRef/tokenRefrespaldada por SecretRef para esse perfil é rejeitada. - Violações são falhas graves em caminhos de resolução de autenticação de inicialização/recarregamento.
Mensagens compatíveis com legado
Para compatibilidade de scripts, erros de sondagem mantêm esta primeira linha inalterada:
Auth profile credentials are missing or expired.
Detalhes mais amigáveis para humanos e códigos de motivo estáveis podem ser adicionados nas linhas subsequentes.