Platte tekst werkt nog steeds. SecretRefs zijn opt-in per referentie.
Doelen en runtime-model
Secrets worden opgelost naar een runtime-snapshot in het geheugen.- Resolutie gebeurt eager tijdens activering, niet lazy op aanvraagpaden.
- Opstarten faalt snel wanneer een effectief actieve SecretRef niet kan worden opgelost.
- Herladen gebruikt een atomische wissel: volledig succes, of de laatst bekende goede snapshot behouden.
- SecretRef-beleidsschendingen (bijvoorbeeld auth-profielen in OAuth-modus gecombineerd met SecretRef-invoer) laten activering falen vóór de runtime-wissel.
- Runtime-aanvragen lezen alleen uit de actieve snapshot in het geheugen.
- Na de eerste succesvolle configuratieactivering/-load blijven runtime-codepaden die actieve snapshot in het geheugen lezen totdat een succesvolle herlaadactie deze vervangt.
- Uitgaande leveringspaden lezen ook uit die actieve snapshot (bijvoorbeeld Discord-antwoord-/threadlevering en Telegram-actieverzendingen); ze lossen SecretRefs niet bij elke verzending opnieuw op.
Grens voor agenttoegang
SecretRefs beschermen referenties tegen persistentie in ondersteunde configuratie en gegenereerde modeloppervlakken, maar ze vormen geen procesisolatiegrens. Als een referentie in platte tekst op schijf blijft staan in een pad dat de agent kan lezen, kan de agent API-niveau-redactie omzeilen door bestands- of shell-tools te gebruiken om dat bestand te inspecteren. Voor productie-implementaties waarin voor agents toegankelijke bestanden binnen scope vallen, behandel SecretRef-migratie alleen als voltooid wanneer al het volgende waar is:- ondersteunde referenties gebruiken SecretRefs in plaats van waarden in platte tekst
- legacy-resten in platte tekst zijn opgeschoond uit
openclaw.json,auth-profiles.json,.env, en gegenereerdemodels.json-bestanden openclaw secrets audit --checkis schoon na de migratie- resterende niet-ondersteunde of roterende referenties worden beschermd door isolatie van het besturingssysteem, containerisolatie, of een externe referentieproxy
Filtering van actieve oppervlakken
SecretRefs worden alleen gevalideerd op effectief actieve oppervlakken.- Ingeschakelde oppervlakken: niet-opgeloste refs blokkeren opstarten/herladen.
- Inactieve oppervlakken: niet-opgeloste refs blokkeren opstarten/herladen niet.
- Inactieve refs geven niet-fatale diagnostiek met code
SECRETS_REF_IGNORED_INACTIVE_SURFACE.
Examples of inactive surfaces
Examples of inactive surfaces
- Uitgeschakelde kanaal-/accountvermeldingen.
- Kanaalreferenties op topniveau die door geen enkel ingeschakeld account worden geërfd.
- Uitgeschakelde tool-/functieoppervlakken.
- Webzoek-providerspecifieke sleutels die niet zijn geselecteerd door
tools.web.search.provider. In automatische modus (provider niet ingesteld) worden sleutels op basis van prioriteit geraadpleegd voor automatische providerdetectie totdat er één wordt opgelost. Na selectie worden niet-geselecteerde providersleutels als inactief behandeld totdat ze worden geselecteerd. - Sandbox-SSH-authmateriaal (
agents.defaults.sandbox.ssh.identityData,certificateData,knownHostsData, plus overrides per agent) is alleen actief wanneer de effectieve sandbox-backendsshis voor de standaardagent of een ingeschakelde agent. gateway.remote.token/gateway.remote.passwordSecretRefs zijn actief als een van de volgende dingen waar is:gateway.mode=remotegateway.remote.urlis geconfigureerdgateway.tailscale.modeisserveoffunnel- In lokale modus zonder die remote oppervlakken:
gateway.remote.tokenis actief wanneer token-auth kan winnen en er geen env-/auth-token is geconfigureerd.gateway.remote.passwordis alleen actief wanneer wachtwoord-auth kan winnen en er geen env-/auth-wachtwoord is geconfigureerd.
gateway.auth.tokenSecretRef is inactief voor auth-resolutie bij het opstarten wanneerOPENCLAW_GATEWAY_TOKENis ingesteld, omdat env-tokeninvoer wint voor die runtime.
Diagnostiek voor Gateway-authoppervlak
Wanneer een SecretRef is geconfigureerd opgateway.auth.token, gateway.auth.password, gateway.remote.token, of gateway.remote.password, logt Gateway-opstarten/-herladen de oppervlaktestatus expliciet:
active: de SecretRef maakt deel uit van het effectieve auth-oppervlak en moet worden opgelost.inactive: de SecretRef wordt genegeerd voor deze runtime omdat een ander auth-oppervlak wint, of omdat remote auth is uitgeschakeld/niet actief is.
SECRETS_GATEWAY_AUTH_SURFACE en bevatten de reden die door het beleid voor actieve oppervlakken wordt gebruikt, zodat je kunt zien waarom een referentie als actief of inactief is behandeld.
Onboarding-referentiepreflight
Wanneer onboarding in interactieve modus draait en je SecretRef-opslag kiest, voert OpenClaw preflight-validatie uit voordat er wordt opgeslagen:- Env-refs: valideert de naam van de env-var en bevestigt dat een niet-lege waarde zichtbaar is tijdens setup.
- Provider-refs (
fileofexec): valideert providerselectie, lostidop, en controleert het type van de opgeloste waarde. - Quickstart-hergebruikpad: wanneer
gateway.auth.tokenal een SecretRef is, lost onboarding deze op vóór probe-/dashboard-bootstrap (voorenv-,file-, enexec-refs) met dezelfde fail-fast-poort.
SecretRef-contract
Gebruik overal één objectvorm:- env
- file
- exec
providermoet overeenkomen met^[a-z][a-z0-9_-]{0,63}$idmoet overeenkomen met^[A-Z][A-Z0-9_]{0,127}$
Providerconfiguratie
Definieer providers ondersecrets.providers:
Env provider
Env provider
- Optionele allowlist via
allowlist. - Ontbrekende/lege env-waarden laten resolutie falen.
File provider
File provider
- Leest lokaal bestand uit
path. mode: "json"verwacht een JSON-objectpayload en lostidop als pointer.mode: "singleValue"verwacht ref-id"value"en retourneert bestandsinhoud.- Pad moet eigendoms-/machtigingscontroles doorstaan.
- Windows fail-closed-opmerking: als ACL-verificatie niet beschikbaar is voor een pad, faalt resolutie. Stel voor alleen vertrouwde paden
allowInsecurePath: truein op die provider om padbeveiligingscontroles te omzeilen.
Exec provider
Exec provider
- Voert geconfigureerd absoluut binair pad uit, zonder shell.
- Standaard moet
commandnaar een normaal bestand verwijzen (geen symlink). - Stel
allowSymlinkCommand: truein om symlink-commandopaden toe te staan (bijvoorbeeld Homebrew-shims). OpenClaw valideert het opgeloste doelpad. - Combineer
allowSymlinkCommandmettrustedDirsvoor package-managerpaden (bijvoorbeeld["/opt/homebrew"]). - Ondersteunt timeout, timeout bij geen uitvoer, byte-limieten voor uitvoer, env-allowlist, en vertrouwde mappen.
- Windows fail-closed-opmerking: als ACL-verificatie niet beschikbaar is voor het commandopad, faalt resolutie. Stel voor alleen vertrouwde paden
allowInsecurePath: truein op die provider om padbeveiligingscontroles te omzeilen. - Door Plugin beheerde exec-providers kunnen
pluginIntegrationgebruiken in plaats van gekopieerdecommand/args. OpenClaw lost de huidige commandodetails op uit het geïnstalleerde pluginmanifest tijdens opstarten/herladen. Als de plugin is uitgeschakeld, verwijderd, niet vertrouwd, of de integratie niet langer declareert, falen actieve SecretRefs die die provider gebruiken fail-closed.
Bestandsgebaseerde API-sleutels
Plaats geenfile:...-strings in het configuratieblok env. Het blok env is
letterlijk en niet-overschrijvend, dus file:... wordt niet opgelost.
Gebruik in plaats daarvan een file-SecretRef op een ondersteund referentieveld:
mode: "singleValue" is de SecretRef-id "value". Voor
mode: "json" gebruik je een absolute JSON-pointer zoals
"/providers/xai/apiKey".
Zie SecretRef-referentieoppervlak voor
de configuratievelden die SecretRefs accepteren.
Exec-integratievoorbeelden
1Password CLI
1Password CLI
Bitwarden Secrets Manager (`bws`)
Bitwarden Secrets Manager (`bws`)
Gebruik een resolver-wrapper wanneer je SecretRef-id’s wilt koppelen aan itemsleutels van Bitwarden
Secrets Manager. De repository bevat
De resolver batchet aangevraagde id’s, voert
scripts/secrets/openclaw-bws-resolver.mjs; installeer of kopieer deze naar een absoluut
vertrouwd pad op de host waarop de Gateway draait.Vereisten:- Bitwarden Secrets Manager CLI (
bws) geinstalleerd op de Gateway-host. BWS_ACCESS_TOKENbeschikbaar voor de Gateway-service.PATHdoorgegeven aan de resolver, ofBWS_BINingesteld op het absolute pad naar debws-binary.BWS_SERVER_URLmoet in de omgeving zijn ingesteld wanneer je een zelfgehoste Bitwarden-instantie gebruikt.
bws secret list uit en retourneert
waarden voor overeenkomende geheime key-velden. Gebruik sleutels die voldoen aan het exec
SecretRef-idcontract, zoals openclaw/providers/openai/apiKey; env-var-achtige
sleutels met underscores worden geweigerd voordat de resolver wordt uitgevoerd. Als meer
dan een zichtbaar Bitwarden-geheim dezelfde aangevraagde sleutel heeft, laat de resolver
dat id mislukken als dubbelzinnig in plaats van er een te kiezen. Controleer na het bijwerken van de configuratie
het resolver-pad:HashiCorp Vault CLI
HashiCorp Vault CLI
password-store (`pass`)
password-store (`pass`)
Gebruik een kleine resolver-wrapper wanneer je SecretRef-id’s rechtstreeks wilt koppelen aan
Configureer vervolgens de exec-provider en laat Houd het geheim op de eerste regel van de
pass-vermeldingen. Sla deze op als uitvoerbaar bestand in een absoluut pad dat slaagt
voor je padcontroles voor exec-providers, bijvoorbeeld
/usr/local/bin/openclaw-pass-resolver. De shebang #!/usr/bin/env node
lost node op vanuit het PATH van het resolver-proces, dus neem PATH op in
passEnv. Als pass niet op dat PATH staat, stel dan PASS_BIN in de bovenliggende
omgeving in en neem het ook op in passEnv:apiKey verwijzen naar het pad van de pass-vermelding:pass-vermelding, of pas de
wrapper aan als je in plaats daarvan de volledige uitvoer van pass show wilt retourneren. Controleer na
het bijwerken van de configuratie zowel de statische audit als het exec-resolver-pad:sops
sops
MCP-serveromgevingsvariabelen
MCP-server-env vars die viaplugins.entries.acpx.config.mcpServers zijn geconfigureerd, ondersteunen SecretInput. Dit houdt API-sleutels en tokens uit plaintext-configuratie:
${MCP_SERVER_API_KEY} en SecretRef-objecten worden opgelost tijdens Gateway-activering voordat het MCP-serverproces wordt gestart. Net als bij andere SecretRef-oppervlakken blokkeren onopgeloste verwijzingen de activering alleen wanneer de acpx-plugin effectief actief is.
Sandbox-SSH-authenticatiemateriaal
De coressh-sandboxbackend ondersteunt ook SecretRefs voor SSH-authenticatiemateriaal:
- OpenClaw lost deze verwijzingen op tijdens sandbox-activering, niet lazy tijdens elke SSH-aanroep.
- Opgeloste waarden worden naar tijdelijke bestanden geschreven met beperkende rechten en gebruikt in gegenereerde SSH-configuratie.
- Als de effectieve sandboxbackend niet
sshis, blijven deze verwijzingen inactief en blokkeren ze het opstarten niet.
Ondersteund credential-oppervlak
Canonieke ondersteunde en niet-ondersteunde credentials staan vermeld in:Door runtime aangemaakte of roterende credentials en OAuth-verversingsmateriaal zijn opzettelijk uitgesloten van alleen-lezen SecretRef-resolutie.
Vereist gedrag en voorrang
- Veld zonder verwijzing: ongewijzigd.
- Veld met een verwijzing: vereist op actieve oppervlakken tijdens activering.
- Als zowel plaintext als verwijzing aanwezig zijn, heeft de verwijzing voorrang op ondersteunde voorrangspaden.
- De redaction-sentinel
__OPENCLAW_REDACTED__is gereserveerd voor interne configuratieredactie/herstel en wordt geweigerd als letterlijke ingediende configuratiedata.
SECRETS_REF_OVERRIDES_PLAINTEXT(runtimewaarschuwing)REF_SHADOWED(auditbevinding wanneerauth-profiles.json-credentials voorrang hebben opopenclaw.json-verwijzingen)
serviceAccountRefheeft voorrang op plaintextserviceAccount.- Plaintext-waarde wordt genegeerd wanneer een naastgelegen verwijzing is ingesteld.
Activeringstriggers
Geheimactivering wordt uitgevoerd bij:- Opstarten (preflight plus definitieve activering)
- Configuratieherlaadpad met hot-apply
- Configuratieherlaadpad met herstartcontrole
- Handmatig herladen via
secrets.reload - Gateway-configuratieschrijf-RPC-preflight (
config.set/config.apply/config.patch) voor SecretRef-oplosbaarheid van actieve oppervlakken binnen de ingediende configuratiepayload voordat wijzigingen worden opgeslagen
- Succes wisselt de snapshot atomisch om.
- Opstartfout breekt het opstarten van de Gateway af.
- Runtime-herlaadfout behoudt de laatst bekende goede snapshot.
- Schrijf-RPC-preflightfout weigert de ingediende configuratie en laat zowel de schijfconfiguratie als de actieve runtime-snapshot ongewijzigd.
- Het opgeven van een expliciet kanaaltoken per aanroep aan een outbound helper/tool-aanroep triggert geen SecretRef-activering; activeringspunten blijven opstarten, herladen en expliciet
secrets.reload.
Signalen voor degraded en recovered
Wanneer activering tijdens herladen faalt na een gezonde status, gaat OpenClaw naar een degraded secrets-status. Eenmalige systeemevent- en logcodes:SECRETS_RELOADER_DEGRADEDSECRETS_RELOADER_RECOVERED
- Degraded: runtime behoudt de laatst bekende goede snapshot.
- Recovered: eenmaal uitgezonden na de volgende succesvolle activering.
- Herhaalde fouten terwijl al degraded wordt waarschuwingen gelogd, maar events worden niet gespamd.
- Fail-fast bij opstarten zendt geen degraded-events uit omdat runtime nooit actief is geworden.
Resolutie van commandopaden
Commandopaden kunnen ondersteunde SecretRef-resolutie inschakelen via Gateway-snapshot-RPC. Er zijn twee brede gedragingen:- Strikte opdrachtpaden
- Alleen-lezen opdrachtpaden
Bijvoorbeeld paden voor extern geheugen van
openclaw memory en openclaw qr --remote wanneer externe verwijzingen naar gedeelde geheimen nodig zijn. Ze lezen uit de actieve snapshot en falen snel wanneer een vereiste SecretRef niet beschikbaar is.- Snapshot-verversing na rotatie van backend-geheimen wordt afgehandeld door
openclaw secrets reload. - Gateway-RPC-methode die door deze opdrachtpaden wordt gebruikt:
secrets.resolve.
Audit- en configuratieworkflow
Standaard operatorstroom: Behandel de migratie niet als voltooid totdat de nieuwe audit schoon is. Als de audit nog steeds platte-tekstwaarden in rust rapporteert, is het risico op agenttoegang nog steeds aanwezig, zelfs wanneer runtime-API’s geredigeerde waarden retourneren. Als je tijdensconfigure een plan opslaat in plaats van het toe te passen, pas dat opgeslagen plan dan
toe met openclaw secrets apply --from <plan-path> vóór de nieuwe audit.
secrets audit
secrets audit
Bevindingen omvatten:
- platte-tekstwaarden in rust (
openclaw.json,auth-profiles.json,.enven gegenereerdeagents/*/agent/models.json) - resten van gevoelige providerheaders in platte tekst in gegenereerde
models.json-items - onopgeloste verwijzingen
- overschaduwing door prioriteit (
auth-profiles.jsonkrijgt prioriteit boven verwijzingen inopenclaw.json) - legacy-resten (
auth.json, OAuth-herinneringen)
- Standaard slaat audit controles op oplosbaarheid van exec-SecretRefs over om bijwerkingen van opdrachten te vermijden.
- Gebruik
openclaw secrets audit --allow-execom exec-providers tijdens audit uit te voeren.
- Detectie van gevoelige providerheaders is gebaseerd op naamheuristiek (veelvoorkomende auth-/referentiegegevensheadernamen en fragmenten zoals
authorization,x-api-key,token,secret,passwordencredential).
secrets configure
secrets configure
Interactieve helper die:
- eerst
secrets.providersconfigureert (env/file/exec, toevoegen/bewerken/verwijderen) - je ondersteunde velden met geheimen laat selecteren in
openclaw.jsonplusauth-profiles.jsonvoor één agentscope - direct in de doelkiezer een nieuwe
auth-profiles.json-mapping kan maken - SecretRef-details vastlegt (
source,provider,id) - preflight-resolutie uitvoert
- direct kan toepassen
- Preflight slaat exec-SecretRef-controles over tenzij
--allow-execis ingesteld. - Als je direct toepast vanuit
configure --applyen het plan exec-verwijzingen/-providers bevat, houd--allow-execdan ook ingesteld voor de toepasstap.
openclaw secrets configure --providers-onlyopenclaw secrets configure --skip-provider-setupopenclaw secrets configure --agent <id>
configure:- bijbehorende statische referentiegegevens uit
auth-profiles.jsonopschonen voor gerichte providers - legacy statische
api_key-items uitauth.jsonopschonen - bijbehorende bekende geheime regels uit
<config-dir>/.envopschonen
secrets apply
secrets apply
Een opgeslagen plan toepassen:Opmerking voor exec:
- dry-run slaat exec-controles over tenzij
--allow-execis ingesteld. - schrijfmodus weigert plannen die exec-SecretRefs/-providers bevatten tenzij
--allow-execis ingesteld.
Eenrichtingsveiligheidsbeleid
Veiligheidsmodel:- preflight moet slagen vóór schrijfmodus
- runtime-activering wordt gevalideerd vóór commit
- toepassen werkt bestanden bij met atomische bestandsvervanging en best-effort herstel bij fouten
Compatibiliteitsopmerkingen voor legacy-authenticatie
Voor statische referentiegegevens is de runtime niet langer afhankelijk van legacy-authenticatieopslag in platte tekst.- Bron van runtime-referentiegegevens is de opgeloste snapshot in geheugen.
- Legacy statische
api_key-items worden opgeschoond wanneer ze worden gevonden. - OAuth-gerelateerd compatibiliteitsgedrag blijft gescheiden.
Opmerking over de Web-UI
Sommige SecretInput-unies zijn gemakkelijker te configureren in de ruwe-editormodus dan in formuliermodus.Gerelateerd
- Authenticatie — auth-installatie
- CLI: secrets — CLI-opdrachten
- Omgevingsvariabelen — omgevingsprioriteit
- SecretRef-oppervlak voor referentiegegevens — oppervlak voor referentiegegevens
- Contract voor Secrets Apply-plan — contractdetails voor plannen
- Beveiliging — beveiligingshouding