Gateway
Semantiek van authenticatiegegevens
Deze semantiek houdt het authenticatiegedrag tijdens selectie en runtime op elkaar afgestemd. Ze wordt gedeeld door:
resolveAuthProfileOrder(profielvolgorde)resolveApiKeyForProfile(oplossen van runtime-aanmeldgegevens)openclaw models status --probe- authenticatiecontroles van
openclaw doctor(doctor-auth)
Stabiele redencodes voor probes
Proberesultaten bevatten een status-categorie (ok, auth, rate_limit, billing, timeout, format, unknown, no_model) en een stabiele reasonCode wanneer de probe nooit een modelaanroep heeft bereikt:
reasonCode |
Betekenis |
|---|---|
excluded_by_auth_order |
Profiel weggelaten uit de expliciete authenticatievolgorde voor de bijbehorende provider. |
missing_credential |
Er is geen inline-aanmeldgegeven of SecretRef geconfigureerd. |
expired |
De waarde expires van het token ligt in het verleden. |
invalid_expires |
expires is geen geldige positieve Unix-tijdstempel in milliseconden. |
unresolved_ref |
De geconfigureerde SecretRef kon niet worden opgelost. |
ineligible_profile |
Het profiel is incompatibel met de providerconfiguratie (inclusief onjuist gevormde sleutelinvoer). |
no_model |
Er zijn aanmeldgegevens, maar er is geen modelkandidaat opgelost dat kan worden geprobed. |
Geschiktheidscontroles rapporteren ok als redencode voor bruikbare aanmeldgegevens.
Tokenaanmeldgegevens
Tokenaanmeldgegevens (type: "token") ondersteunen inline token en/of tokenRef.
Geschiktheidsregels
- Een tokenprofiel is ongeschikt wanneer zowel
tokenalstokenRefontbreken (missing_credential). expiresis optioneel. Indien aanwezig, moet het een eindig aantal milliseconden sinds de Unix-epoch zijn, groter dan0en niet groter dan de maximale JavaScript-Date-tijdstempel (8640000000000000).- Als
expiresongeldig is (verkeerd type,NaN,0, negatief, niet-eindig of groter dan dat maximum), is het profiel ongeschikt metinvalid_expires. - Als
expiresin het verleden ligt, is het profiel ongeschikt metexpired. tokenRefomzeilt de validatie vanexpiresniet.
Oplosregels
- De semantiek van de resolver komt voor
expiresovereen met de geschiktheidssemantiek. - Voor geschikte profielen kan tokenmateriaal worden opgelost vanuit de inline-waarde of
tokenRef. - Niet-oplosbare verwijzingen leveren
unresolved_refop in de uitvoer vanmodels status --probe.
Overdraagbaarheid bij het kopiëren van agents
Overerving van agentauthenticatie werkt via doorlezing. Wanneer een agent geen lokaal profiel heeft, worden profielen tijdens runtime opgelost vanuit de opslag van de standaard-/hoofdagent, zonder geheim materiaal naar de eigen opslag voor aanmeldgegevens (agents/<agentId>/agent/openclaw-agent.sqlite) te kopiëren.
Expliciete kopieerstromen, zoals openclaw agents add, gebruiken dit overdraagbaarheidsbeleid:
- Profielen van het type
api_keyentokenzijn overdraagbaar, tenzijcopyToAgents: false. - Profielen van het type
oauthzijn standaard niet overdraagbaar, omdat vernieuwingstokens eenmalig bruikbaar of gevoelig voor rotatie kunnen zijn. - OAuth-stromen die eigendom zijn van de provider mogen alleen met
copyToAgents: truehiervoor kiezen wanneer bekend is dat het veilig is om vernieuwingsmateriaal tussen agents te kopiëren; deze expliciete inschakeling is alleen van toepassing wanneer het profiel inline toegangs-/vernieuwingsmateriaal bevat.
Niet-overdraagbare profielen blijven beschikbaar via overerving door doorlezing, tenzij de doelagent zich afzonderlijk aanmeldt en een eigen lokaal profiel maakt.
Authenticatieroutes die alleen in de configuratie bestaan
Vermeldingen in auth.profiles met mode: "aws-sdk" zijn routeringsmetadata, geen opgeslagen aanmeldgegevens. Ze zijn geldig wanneer de doelprovider models.providers.<id>.auth: "aws-sdk" gebruikt, de route die door de Plugin beheerde Amazon Bedrock-installatie schrijft. Deze profiel-ID's mogen voorkomen in auth.order en sessieoverschrijvingen, zelfs wanneer er geen overeenkomende vermelding in de opslag voor aanmeldgegevens bestaat.
Schrijf geen type: "aws-sdk" naar de opslag voor aanmeldgegevens; opgeslagen aanmeldgegevens zijn uitsluitend api_key, token of oauth. Als een verouderd auth-profiles.json zo'n markering bevat, verplaatst openclaw doctor --fix deze naar auth.profiles en verwijdert het de markering uit de opslag.
Expliciete filtering op authenticatievolgorde
- Wanneer
auth.order.<provider>of de volgordeoverschrijving van de authenticatieopslag voor een provider is ingesteld, probetmodels status --probealleen profiel-ID's die in de opgeloste authenticatievolgorde voor die provider overblijven. De opgeslagen overschrijving heeft voorrang op de configuratie vanauth.order. - Een opgeslagen profiel voor die provider dat uit de expliciete volgorde is weggelaten, wordt later niet stilzwijgend geprobeerd. De probe-uitvoer rapporteert het met
reasonCode: excluded_by_auth_orderen het detailUitgesloten door auth.order voor deze provider.
Oplossen van probedoelen
- Probedoelen kunnen afkomstig zijn van authenticatieprofielen, omgevingsaanmeldgegevens of
models.json(sourcein het resultaat:profile,env,models.json). - Als een provider aanmeldgegevens heeft, maar OpenClaw er geen modelkandidaat voor kan oplossen dat kan worden geprobed, rapporteert
models status --probestatus: no_modelmetreasonCode: no_model.
Detectie van aanmeldgegevens van externe CLI's
- Aanmeldgegevens die uitsluitend tijdens runtime worden gebruikt en eigendom zijn van externe CLI's (Claude CLI voor
claude-cli, Codex CLI vooropenai, MiniMax CLI voorminimax-portal) worden alleen gedetecteerd wanneer de provider, runtime of het authenticatieprofiel binnen het bereik van de huidige bewerking valt, of wanneer er al een opgeslagen lokaal profiel voor die externe bron bestaat. - Aanroepers van de authenticatieopslag kiezen een expliciete detectiemodus voor externe CLI's:
nonevoor alleen permanente/Plugin-authenticatie,existingvoor het vernieuwen van reeds opgeslagen externe CLI-profielen, ofscopedvoor een concrete set providers/profielen. - Alleen-lezen-/statuspaden geven
allowKeychainPrompt: falsedoor; ze gebruiken alleen bestandsgebaseerde aanmeldgegevens van externe CLI's en lezen of hergebruiken geen resultaten uit macOS Keychain.
Beleidsbeveiliging voor OAuth-SecretRef
SecretRef-invoer is uitsluitend bedoeld voor statische aanmeldgegevens. OAuth-aanmeldgegevens zijn tijdens runtime wijzigbaar (vernieuwingsstromen slaan geroteerde tokens op), waardoor OAuth-materiaal op basis van SecretRef de wijzigbare status over meerdere opslaglocaties zou verdelen.
- Als een profielaanmeldgegeven
type: "oauth"heeft, worden SecretRef-objecten voor elk veld met aanmeldgegevensmateriaal in dat profiel geweigerd. - Als
auth.profiles.<id>.modegelijk is aan"oauth", wordt invoer voorkeyRef/tokenRefop basis van SecretRef voor dat profiel geweigerd. - Overtredingen zijn harde fouten (opgeworpen fouten) in de paden voor het voorbereiden van geheimen bij opstarten/herladen en voor het oplossen van profielen.
Berichten die compatibel zijn met oudere versies
Voor compatibiliteit met scripts blijft deze eerste regel van probefouten ongewijzigd:
Auth profile credentials are missing or expired.
Gebruiksvriendelijke details en de stabiele redencode volgen op de daaropvolgende regels in de vorm ↳ Auth reason [code]: ....