Technical reference
Permukaan kredensial SecretRef
Halaman ini mendefinisikan permukaan kredensial SecretRef kanonis: bidang kredensial mana yang menerima SecretRef (referensi yang didukung env/file/exec) sebagai pengganti nilai rahasia mentah.
Cakupan:
- Termasuk dalam cakupan: hanya kredensial yang diberikan pengguna dan tidak dibuat atau dirotasi oleh OpenClaw.
- Di luar cakupan: kredensial yang dibuat atau dirotasi saat runtime, materi penyegaran OAuth, dan artefak menyerupai sesi.
Daftar di bawah dibuat dari registri target sumber dan diperiksa terhadap docs/reference/secretref-user-supplied-credentials-matrix.json dalam CI; jangan mengedit entri secara manual.
Kredensial yang didukung
Target openclaw.json (secrets configure + secrets apply + secrets audit)
models.providers.*.apiKeymodels.providers.*.headers.*models.providers.*.request.auth.tokenmodels.providers.*.request.auth.valuemodels.providers.*.request.headers.*models.providers.*.request.proxy.tls.camodels.providers.*.request.proxy.tls.certmodels.providers.*.request.proxy.tls.keymodels.providers.*.request.proxy.tls.passphrasemodels.providers.*.request.tls.camodels.providers.*.request.tls.certmodels.providers.*.request.tls.keymodels.providers.*.request.tls.passphraseskills.entries.*.apiKeyagents.defaults.memorySearch.remote.apiKeyagents.list[].tts.providers.*.apiKeyagents.list[].memorySearch.remote.apiKeytalk.providers.*.apiKeytalk.realtime.providers.*.apiKeymessages.tts.providers.*.apiKeyplugins.entries.acpx.config.mcpServers.*.env.*plugins.entries.brave.config.webSearch.apiKeyplugins.entries.codex.config.appServer.authTokenplugins.entries.codex.config.appServer.headers.*plugins.entries.exa.config.webSearch.apiKeyplugins.entries.firecrawl.config.webFetch.apiKeyplugins.entries.google-meet.config.realtime.providers.*.apiKeyplugins.entries.google.config.webSearch.apiKeyplugins.entries.xai.config.webSearch.apiKeyplugins.entries.moonshot.config.webSearch.apiKeyplugins.entries.perplexity.config.webSearch.apiKeyplugins.entries.firecrawl.config.webSearch.apiKeyplugins.entries.minimax.config.webSearch.apiKeyplugins.entries.tavily.config.webSearch.apiKeyplugins.entries.parallel.config.webSearch.apiKeyplugins.entries.voice-call.config.realtime.providers.*.apiKeyplugins.entries.voice-call.config.streaming.providers.*.apiKeyplugins.entries.voice-call.config.tts.providers.*.apiKeyplugins.entries.voice-call.config.twilio.authTokenplugins.entries.webhooks.config.routes.*.secretgateway.auth.passwordgateway.auth.tokengateway.remote.tokengateway.remote.passwordcron.webhookTokenchannels.telegram.botTokenchannels.telegram.webhookSecretchannels.telegram.accounts.*.botTokenchannels.telegram.accounts.*.webhookSecretchannels.slack.botTokenchannels.slack.appTokenchannels.slack.relay.authTokenchannels.slack.userTokenchannels.slack.signingSecretchannels.slack.accounts.*.botTokenchannels.slack.accounts.*.appTokenchannels.slack.accounts.*.relay.authTokenchannels.slack.accounts.*.userTokenchannels.slack.accounts.*.signingSecretchannels.sms.authTokenchannels.sms.accounts.*.authTokenchannels.clickclack.tokenchannels.clickclack.accounts.*.tokenchannels.discord.tokenchannels.discord.pluralkit.tokenchannels.discord.voice.tts.providers.*.apiKeychannels.discord.accounts.*.tokenchannels.discord.accounts.*.pluralkit.tokenchannels.discord.accounts.*.voice.tts.providers.*.apiKeychannels.irc.passwordchannels.irc.nickserv.passwordchannels.irc.accounts.*.passwordchannels.irc.accounts.*.nickserv.passwordchannels.feishu.appSecretchannels.feishu.encryptKeychannels.feishu.verificationTokenchannels.feishu.accounts.*.appSecretchannels.feishu.accounts.*.encryptKeychannels.feishu.accounts.*.verificationTokenchannels.qqbot.clientSecretchannels.qqbot.accounts.*.clientSecretchannels.msteams.appPasswordchannels.mattermost.botTokenchannels.mattermost.accounts.*.botTokenchannels.matrix.accessTokenchannels.matrix.passwordchannels.matrix.accounts.*.accessTokenchannels.matrix.accounts.*.passwordchannels.nextcloud-talk.botSecretchannels.nextcloud-talk.apiPasswordchannels.nextcloud-talk.accounts.*.botSecretchannels.nextcloud-talk.accounts.*.apiPasswordchannels.zalo.botTokenchannels.zalo.webhookSecretchannels.zalo.accounts.*.botTokenchannels.zalo.accounts.*.webhookSecretchannels.googlechat.serviceAccountmelaluiserviceAccountRefsaudara (pengecualian kompatibilitas)channels.googlechat.accounts.*.serviceAccountmelaluiserviceAccountRefsaudara (pengecualian kompatibilitas)
Target auth-profiles.json (secrets configure + secrets apply + secrets audit)
profiles.*.keyRef(type: "api_key"; tidak didukung ketikaauth.profiles.<id>.mode = "oauth")profiles.*.tokenRef(type: "token"; tidak didukung ketikaauth.profiles.<id>.mode = "oauth")
Catatan:
- Target rencana profil autentikasi memerlukan
agentId; entri rencana menargetkanprofiles.*.key/profiles.*.tokendan menulis referensi saudara (keyRef/tokenRef). Referensi profil autentikasi disertakan dalam resolusi runtime dan cakupan audit. - Dalam
openclaw.json, SecretRef harus menggunakan objek terstruktur seperti{"source":"env","provider":"default","id":"DISCORD_BOT_TOKEN"}. String penandasecretref-env:<ENV_VAR>lama ditolak pada jalur kredensial SecretRef; jalankanopenclaw doctor --fixuntuk memigrasikan penanda yang valid. - Pengaman kebijakan OAuth:
auth.profiles.<id>.mode = "oauth"tidak dapat digabungkan dengan input SecretRef untuk profil tersebut. Startup/muat ulang dan resolusi profil autentikasi langsung gagal ketika kebijakan ini dilanggar. - Untuk penyedia model yang dikelola SecretRef, entri
agents/*/agent/models.jsonyang dihasilkan mempertahankan penanda nonrahasia (bukan nilai rahasia yang telah diresolusi) untuk permukaanapiKey/header. Persistensi penanda mengikuti sumber sebagai otoritas: OpenClaw menulis penanda dari snapshot konfigurasi sumber aktif (sebelum resolusi), bukan dari nilai rahasia runtime yang telah diresolusi. - Startup dingin Gateway dapat mengisolasi kegagalan resolusi yang dapat dicoba ulang untuk pemilik yang dipetakan dan bukan Gateway. Kelas yang saat ini dipetakan mencakup penyedia model dan Skills, penyedia media/TTS/cron, profil autentikasi yang memenuhi syarat, memori per agen, SSH sandbox, akun kanal, dan rute plugin yang dideklarasikan dalam manifes. Startup mempertahankan referensi eksplisit setiap pemilik yang gagal dalam snapshot runtime, melaporkan pemilik melalui status dan doctor, serta menolak permintaan untuk pemilik tersebut tanpa mencoba kredensial dengan prioritas lebih rendah. Pemeriksaan awal muat ulang dan penulisan konfigurasi menggunakan kebijakan sadar pemilik yang sama: pemilik yang sehat disegarkan; pemilik gagal yang memenuhi syarat tetap menggunakan kondisi lama hanya ketika identitas referensi, definisi penyedia, dan kontrak lengkap pemilik nonrahasia tidak berubah; kegagalan baru atau yang berubah menjadi dingin. Autentikasi ingress Gateway, referensi atau nilai yang secara struktural tidak valid, pemilik fail-closed, dan pemilik yang saat ini belum dipetakan tetap ketat.
- Untuk pencarian web: dalam mode penyedia eksplisit (
tools.web.search.providerditetapkan), hanya kunci penyedia yang dipilih yang aktif. Dalam mode otomatis (tools.web.search.providertidak ditetapkan), hanya kunci penyedia pertama yang diresolusi berdasarkan urutan prioritas yang aktif, dan referensi penyedia yang tidak dipilih dianggap tidak aktif hingga dipilih. Kredensial penyedia menggunakanplugins.entries.<plugin>.config.webSearch.*. - Slack
identity: "user"menggunakanchannels.slack.userTokenbersamachannels.slack.appTokenuntuk Socket Mode atauchannels.slack.signingSecretuntuk mode HTTP. Pemasangan yang sama berlaku di bawahchannels.slack.accounts.*; token bot tidak diperlukan untuk identitas ini.
Kredensial yang tidak didukung
Kredensial ini termasuk kelas yang dibuat, dirotasi, memuat sesi, atau persisten untuk OAuth dan tidak sesuai dengan resolusi SecretRef eksternal hanya-baca:
commands.ownerDisplaySecrethooks.tokenhooks.gmail.pushTokenhooks.mappings[].sessionKeyauth-profiles.oauth.*channels.discord.threadBindings.webhookTokenchannels.discord.accounts.*.threadBindings.webhookTokenchannels.whatsapp.creds.jsonchannels.whatsapp.accounts.*.creds.json
Terkait
Was this useful?