Gateway
Semantica delle credenziali di autenticazione
Queste semantiche mantengono allineato il comportamento dell'autenticazione al momento della selezione e durante l'esecuzione. Sono condivise da:
resolveAuthProfileOrder(ordinamento dei profili)resolveApiKeyForProfile(risoluzione delle credenziali in fase di esecuzione)openclaw models status --probe- controlli di autenticazione di
openclaw doctor(doctor-auth)
Codici motivo stabili delle verifiche
I risultati delle verifiche includono una categoria status (ok, auth, rate_limit, billing, timeout, format, unknown, no_model) e un reasonCode stabile quando la verifica non ha mai raggiunto una chiamata al modello:
reasonCode |
Significato |
|---|---|
excluded_by_auth_order |
Profilo omesso dall'ordine di autenticazione esplicito del relativo provider. |
missing_credential |
Non è configurata alcuna credenziale inline o SecretRef. |
expired |
Il valore expires del token è nel passato. |
invalid_expires |
expires non è un timestamp Unix valido, positivo ed espresso in millisecondi. |
unresolved_ref |
Non è stato possibile risolvere il SecretRef configurato. |
ineligible_profile |
Il profilo non è compatibile con la configurazione del provider (incluso un input chiave non valido). |
no_model |
Le credenziali esistono, ma non è stato risolto alcun modello candidato verificabile. |
I controlli di idoneità riportano ok come codice motivo per le credenziali utilizzabili.
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 (missing_credential). expiresè facoltativo. Quando presente, deve essere un numero finito di millisecondi dall'epoca Unix maggiore di0e non superiore al timestamp massimo diDatein JavaScript (8640000000000000).- Se
expiresnon è valido (tipo errato,NaN,0, negativo, non finito o superiore a tale massimo), il profilo non è idoneo coninvalid_expires. - Se
expiresè nel passato, il profilo non è idoneo conexpired. tokenRefnon elude la convalida diexpires.
Regole di risoluzione
- Le semantiche del resolver corrispondono a quelle 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 degli agenti
L'ereditarietà dell'autenticazione degli agenti avviene mediante lettura diretta. Quando un agente non dispone di un profilo locale, in fase di esecuzione risolve i profili dall'archivio dell'agente predefinito/principale senza copiare il materiale segreto nel proprio archivio delle credenziali (agents/<agentId>/agent/openclaw-agent.sqlite).
I flussi di copia espliciti, come openclaw agents add, utilizzano questa politica di portabilità:
- I profili
api_keyetokensono portabili, a meno che non sia impostatocopyToAgents: false. - I profili
oauthnon sono portabili per impostazione predefinita, perché i token di aggiornamento possono essere monouso o sensibili alla rotazione. - I flussi OAuth gestiti dal provider possono aderire tramite
copyToAgents: truesolo quando è noto che la copia del materiale di aggiornamento tra agenti è sicura; l'adesione si applica solo quando il profilo contiene inline il materiale di accesso/aggiornamento.
I profili non portabili restano disponibili tramite ereditarietà con lettura diretta, a meno che l'agente di destinazione non esegua l'accesso separatamente e crei un proprio profilo locale.
Route di autenticazione basate solo sulla configurazione
Le voci di auth.profiles con mode: "aws-sdk" sono metadati di instradamento, non credenziali archiviate. Sono valide quando il provider di destinazione utilizza models.providers.<id>.auth: "aws-sdk", la route scritta dalla configurazione di Amazon Bedrock gestita dal plugin. Questi ID profilo possono comparire in auth.order e nelle sostituzioni di sessione anche quando nell'archivio delle credenziali non esiste alcuna voce corrispondente.
Non scrivere type: "aws-sdk" nell'archivio delle credenziali; le credenziali archiviate possono essere solo api_key, token o oauth. Se un file auth-profiles.json legacy contiene un indicatore di questo tipo, openclaw doctor --fix lo sposta in auth.profiles e lo rimuove dall'archivio.
Filtraggio dell'ordine di autenticazione esplicito
- Quando per un provider è impostato
auth.order.<provider>o la sostituzione dell'ordine dell'archivio di autenticazione,models status --probeverifica solo gli ID profilo che rimangono nell'ordine di autenticazione risolto per quel provider. La sostituzione archiviata ha la precedenza sulla configurazioneauth.order. - Un profilo archiviato per quel provider ma omesso dall'ordine esplicito non viene provato silenziosamente in seguito. L'output della verifica lo riporta con
reasonCode: excluded_by_auth_ordere il dettaglioEscluso da auth.order per questo provider.
Risoluzione della destinazione della verifica
- Le destinazioni delle verifiche possono provenire dai profili di autenticazione, dalle credenziali di ambiente o da
models.json(sourcedel risultato:profile,env,models.json). - Se un provider dispone di credenziali ma OpenClaw non riesce a risolvere un modello candidato verificabile,
models status --proberiportastatus: no_modelconreasonCode: no_model.
Individuazione delle credenziali delle CLI esterne
- Le credenziali disponibili solo in fase di esecuzione e gestite da CLI esterne (Claude CLI per
claude-cli, Codex CLI peropenai, MiniMax CLI perminimax-portal) vengono individuate solo quando il provider, l'ambiente di esecuzione o il profilo di autenticazione rientra nell'ambito dell'operazione corrente, oppure quando esiste già un profilo locale archiviato per quella fonte esterna. - I chiamanti dell'archivio di autenticazione scelgono una modalità esplicita di individuazione delle CLI esterne:
nonesolo per l'autenticazione persistita/del plugin,existingper aggiornare i profili CLI esterni già archiviati oppurescopedper un insieme concreto di provider/profili. - I percorsi di sola lettura/stato passano
allowKeychainPrompt: false; utilizzano solo credenziali delle CLI esterne basate su file e non leggono né riutilizzano i risultati del Portachiavi di macOS.
Protezione della politica SecretRef per OAuth
L'input SecretRef è destinato esclusivamente alle credenziali statiche. Le credenziali OAuth sono modificabili in fase di esecuzione (i flussi di aggiornamento persistono i token ruotati), pertanto il materiale OAuth basato su SecretRef suddividerebbe lo stato modificabile tra più archivi.
- Se la credenziale di un profilo è
type: "oauth", gli oggetti SecretRef vengono rifiutati per qualsiasi campo contenente materiale delle credenziali in tale profilo. - Se
auth.profiles.<id>.modeè"oauth", l'inputkeyRef/tokenRefbasato su SecretRef per tale profilo viene rifiutato. - Le violazioni causano errori irreversibili (eccezioni generate) nei percorsi di preparazione dei segreti all'avvio/ricaricamento e di risoluzione dei profili.
Messaggistica compatibile con le versioni legacy
Per la compatibilità degli script, gli errori delle verifiche mantengono invariata questa prima riga:
Auth profile credentials are missing or expired.
I dettagli leggibili e il codice motivo stabile seguono nelle righe successive nel formato ↳ Motivo dell'autenticazione [codice]: ....