Gateway
Semantica delle credenziali di autenticazione
Questo documento definisce la semantica canonica di idoneità e risoluzione delle credenziali usata in:
resolveAuthProfileOrderresolveApiKeyForProfilemodels status --probedoctor-auth
L'obiettivo è mantenere allineati il comportamento in fase di selezione e quello a runtime.
Codici motivo stabili della verifica
okexcluded_by_auth_ordermissing_credentialinvalid_expiresexpiredunresolved_refno_model
Credenziali token
Le credenziali token (type: "token") supportano token inline e/o tokenRef.
Regole di idoneità
- Un profilo token non è idoneo quando sia
tokensiatokenRefsono assenti. expiresè facoltativo.- Se
expiresè presente, deve essere un numero finito maggiore di0. - Se
expiresnon è valido (NaN,0, negativo, non finito o di tipo errato), il profilo non è idoneo coninvalid_expires. - Se
expiresè nel passato, il profilo non è idoneo conexpired. tokenRefnon bypassa la validazione diexpires.
Regole di risoluzione
- La semantica del resolver corrisponde alla semantica di idoneità per
expires. - Per i profili idonei, il materiale del token può essere risolto dal valore inline o da
tokenRef. - I riferimenti non risolvibili producono
unresolved_refnell'output dimodels status --probe.
Portabilità della copia dell'agente
L'ereditarietà dell'autenticazione dell'agente è read-through. Quando un agente non ha un profilo locale, può risolvere i profili dallo store dell'agente predefinito/principale a runtime senza copiare materiale segreto nel proprio auth-profiles.json.
I flussi di copia espliciti, come openclaw agents add, usano questa policy di portabilità:
- I profili
api_keysono portabili salvocopyToAgents: false. - I profili
tokensono portabili salvocopyToAgents: false. - I profili
oauthnon sono portabili per impostazione predefinita perché i token di refresh possono essere monouso o sensibili alla rotazione. - I flussi OAuth di proprietà del provider possono optare per
copyToAgents: truesolo quando la copia del materiale di refresh tra agenti è nota come sicura.
I profili non portabili restano disponibili tramite ereditarietà read-through salvo che l'agente di destinazione acceda separatamente e crei il proprio profilo locale.
Filtraggio esplicito dell'ordine di autenticazione
- Quando
auth.order.<provider>o l'override dell'ordine dell'auth-store è impostato per un provider,models status --probeverifica solo gli ID profilo che rimangono nell'ordine di autenticazione risolto per quel provider. - Un profilo memorizzato per quel provider che è omesso dall'ordine esplicito non viene provato silenziosamente in seguito. L'output della verifica lo segnala con
reasonCode: excluded_by_auth_ordere il dettaglioExcluded by auth.order for this provider.
Risoluzione della destinazione della verifica
- Le destinazioni della verifica possono provenire da profili di autenticazione, credenziali d'ambiente o
models.json. - Se un provider ha credenziali ma OpenClaw non riesce a risolvere un candidato modello verificabile per esso,
models status --probesegnalastatus: no_modelconreasonCode: no_model.
Rilevamento delle credenziali da CLI esterna
- Le credenziali solo runtime di proprietà di CLI esterne vengono rilevate solo quando il provider, il runtime o il profilo di autenticazione rientra nell'ambito dell'operazione corrente, oppure quando esiste già un profilo locale memorizzato per quella sorgente esterna.
- I chiamanti dell'auth-store devono scegliere una modalità esplicita di rilevamento della CLI esterna:
noneper sola autenticazione persistente/Plugin,existingper aggiornare i profili CLI esterni già memorizzati oppurescopedper un insieme concreto di provider/profili. - I percorsi di sola lettura/stato passano
allowKeychainPrompt: false; usano solo credenziali CLI esterne basate su file e non leggono né riutilizzano risultati del Portachiavi macOS.
Guard della policy OAuth SecretRef
- L'input SecretRef è solo per credenziali statiche.
- Se una credenziale di profilo è
type: "oauth", gli oggetti SecretRef non sono supportati per il materiale della credenziale di quel profilo. - Se
auth.profiles.<id>.modeè"oauth", l'inputkeyRef/tokenRefbasato su SecretRef per quel profilo viene rifiutato. - Le violazioni sono errori bloccanti nei percorsi di risoluzione dell'autenticazione all'avvio/ricaricamento.
Messaggistica compatibile con versioni legacy
Per la compatibilità degli script, gli errori di verifica mantengono invariata questa prima riga:
Auth profile credentials are missing or expired.
Dettagli leggibili per l'utente e codici motivo stabili possono essere aggiunti nelle righe successive.