OpenClaw підтримує адитивні SecretRefs, тож підтримувані облікові дані не потрібно зберігати як відкритий текст у конфігурації.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Відкритий текст усе ще працює. SecretRefs вмикаються окремо для кожних облікових даних.
Цілі та модель виконання
Секрети розв’язуються в runtime-знімок у пам’яті.- Розв’язання виконується завчасно під час активації, а не ліниво на шляхах запитів.
- Запуск швидко завершується помилкою, коли фактично активний SecretRef неможливо розв’язати.
- Перезавантаження використовує атомарну заміну: повний успіх або збереження останнього відомого справного знімка.
- Порушення політики SecretRef (наприклад, профілі автентифікації в режимі OAuth у поєднанні з введенням SecretRef) зупиняють активацію до заміни runtime.
- Runtime-запити читають лише з активного знімка в пам’яті.
- Після першої успішної активації/завантаження конфігурації runtime-шляхи коду продовжують читати цей активний знімок у пам’яті, доки успішне перезавантаження не замінить його.
- Шляхи вихідної доставки також читають із цього активного знімка (наприклад, доставка відповідей/гілок Discord і надсилання дій Telegram); вони не розв’язують SecretRefs повторно під час кожного надсилання.
Фільтрація активної поверхні
SecretRefs перевіряються лише на фактично активних поверхнях.- Увімкнені поверхні: нерозв’язані refs блокують запуск/перезавантаження.
- Неактивні поверхні: нерозв’язані refs не блокують запуск/перезавантаження.
- Неактивні refs створюють нефатальні діагностичні повідомлення з кодом
SECRETS_REF_IGNORED_INACTIVE_SURFACE.
Examples of inactive surfaces
Examples of inactive surfaces
- Вимкнені записи каналів/облікових записів.
- Облікові дані каналу верхнього рівня, які не успадковує жоден увімкнений обліковий запис.
- Вимкнені поверхні інструментів/функцій.
- Ключі, специфічні для постачальника вебпошуку, які не вибрані через
tools.web.search.provider. В автоматичному режимі (постачальник не заданий) ключі перевіряються за пріоритетом для автоматичного визначення постачальника, доки один не буде розв’язано. Після вибору ключі невибраних постачальників вважаються неактивними, доки їх не виберуть. - Матеріал автентифікації SSH для sandbox (
agents.defaults.sandbox.ssh.identityData,certificateData,knownHostsData, а також перевизначення для окремих агентів) активний лише тоді, коли ефективний backend sandbox дорівнюєsshдля стандартного агента або увімкненого агента. - SecretRefs
gateway.remote.token/gateway.remote.passwordактивні, якщо виконується одна з цих умов:gateway.mode=remote- налаштовано
gateway.remote.url gateway.tailscale.modeдорівнюєserveабоfunnel- У локальному режимі без цих віддалених поверхонь:
gateway.remote.tokenактивний, коли автентифікація токеном може мати пріоритет і не налаштовано env/auth токен.gateway.remote.passwordактивний лише тоді, коли автентифікація паролем може мати пріоритет і не налаштовано env/auth пароль.
- SecretRef
gateway.auth.tokenнеактивний для розв’язання автентифікації під час запуску, коли заданоOPENCLAW_GATEWAY_TOKEN, бо введення токена з env має пріоритет для цього runtime.
Діагностика поверхні автентифікації Gateway
Коли SecretRef налаштовано вgateway.auth.token, gateway.auth.password, gateway.remote.token або gateway.remote.password, запуск/перезавантаження Gateway явно записує стан поверхні в журнал:
active: SecretRef є частиною ефективної поверхні автентифікації та має бути розв’язаний.inactive: SecretRef ігнорується для цього runtime, бо інша поверхня автентифікації має пріоритет або віддалена автентифікація вимкнена/неактивна.
SECRETS_GATEWAY_AUTH_SURFACE і містять причину, використану політикою активної поверхні, тож можна побачити, чому облікові дані були визнані активними або неактивними.
Попередня перевірка посилань під час онбордингу
Коли онбординг працює в інтерактивному режимі й ви вибираєте зберігання SecretRef, OpenClaw виконує попередню перевірку перед збереженням:- Env refs: перевіряє назву env-змінної та підтверджує, що непорожнє значення видиме під час налаштування.
- Provider refs (
fileабоexec): перевіряє вибір постачальника, розв’язуєidі перевіряє тип розв’язаного значення. - Шлях повторного використання quickstart: коли
gateway.auth.tokenуже є SecretRef, онбординг розв’язує його перед bootstrap probe/dashboard (для refsenv,fileіexec) за допомогою того самого fail-fast gate.
Контракт SecretRef
Використовуйте одну форму об’єкта всюди:- env
- file
- exec
providerмає відповідати^[a-z][a-z0-9_-]{0,63}$idмає відповідати^[A-Z][A-Z0-9_]{0,127}$
Конфігурація постачальника
Визначайте постачальників уsecrets.providers:
Env provider
Env provider
- Необов’язковий allowlist через
allowlist. - Відсутні/порожні env-значення призводять до помилки розв’язання.
File provider
File provider
- Читає локальний файл із
path. mode: "json"очікує JSON-об’єкт як payload і розв’язуєidяк pointer.mode: "singleValue"очікує ref id"value"і повертає вміст файлу.- Шлях має пройти перевірки власника/дозволів.
- Примітка про fail-closed у Windows: якщо перевірка ACL недоступна для шляху, розв’язання завершується помилкою. Лише для довірених шляхів задайте
allowInsecurePath: trueдля цього постачальника, щоб обійти перевірки безпеки шляху.
Exec provider
Exec provider
- Запускає налаштований абсолютний шлях до binary без shell.
- За замовчуванням
commandмає вказувати на звичайний файл (не symlink). - Задайте
allowSymlinkCommand: true, щоб дозволити symlink-шляхи команд (наприклад, Homebrew shims). OpenClaw перевіряє розв’язаний цільовий шлях. - Поєднуйте
allowSymlinkCommandізtrustedDirsдля шляхів package manager (наприклад,["/opt/homebrew"]). - Підтримує timeout, timeout без виводу, обмеження байтів виводу, env allowlist і довірені каталоги.
- Примітка про fail-closed у Windows: якщо перевірка ACL недоступна для шляху команди, розв’язання завершується помилкою. Лише для довірених шляхів задайте
allowInsecurePath: trueдля цього постачальника, щоб обійти перевірки безпеки шляху.
Приклади інтеграції exec
1Password CLI
1Password CLI
HashiCorp Vault CLI
HashiCorp Vault CLI
sops
sops
Змінні середовища MCP server
Env vars MCP server, налаштовані черезplugins.entries.acpx.config.mcpServers, підтримують SecretInput. Це тримає API keys і токени поза конфігурацією у відкритому тексті:
${MCP_SERVER_API_KEY} і об’єкти SecretRef розв’язуються під час активації Gateway перед запуском процесу MCP server. Як і з іншими поверхнями SecretRef, нерозв’язані refs блокують активацію лише тоді, коли plugin acpx фактично активний.
Матеріал автентифікації SSH для sandbox
Core backend sandboxssh також підтримує SecretRefs для матеріалу автентифікації SSH:
- OpenClaw розв’язує ці refs під час активації пісочниці, а не ліниво під час кожного SSH-виклику.
- Розв’язані значення записуються в тимчасові файли з обмежувальними дозволами та використовуються у згенерованій SSH-конфігурації.
- Якщо ефективний бекенд пісочниці не
ssh, ці refs залишаються неактивними й не блокують запуск.
Підтримувана поверхня облікових даних
Канонічні підтримувані й непідтримувані облікові дані наведено тут:Облікові дані, створені під час виконання або ротаційні, а також матеріал оновлення OAuth навмисно виключено з розв’язання SecretRef лише для читання.
Обов’язкова поведінка та пріоритет
- Поле без ref: без змін.
- Поле з ref: обов’язкове на активних поверхнях під час активації.
- Якщо наявні і відкритий текст, і ref, ref має пріоритет на підтримуваних шляхах пріоритету.
- Маркер редагування
__OPENCLAW_REDACTED__зарезервовано для внутрішнього редагування/відновлення конфігурації, і його відхиляють як буквальні надіслані конфігураційні дані.
SECRETS_REF_OVERRIDES_PLAINTEXT(попередження під час виконання)REF_SHADOWED(аудиторська знахідка, коли облікові даніauth-profiles.jsonмають пріоритет над refs зopenclaw.json)
serviceAccountRefмає пріоритет над відкритотекстовимserviceAccount.- Відкритотекстове значення ігнорується, коли встановлено сусідній ref.
Тригери активації
Активація секретів запускається під час:- Запуску (preflight плюс фінальна активація)
- Шляху гарячого застосування перезавантаження конфігурації
- Шляху перевірки перезапуску під час перезавантаження конфігурації
- Ручного перезавантаження через
secrets.reload - Preflight для RPC запису Gateway-конфігурації (
config.set/config.apply/config.patch) щодо розв’язності SecretRef активної поверхні в надісланому конфігураційному payload перед збереженням змін
- Успіх атомарно замінює snapshot.
- Помилка запуску перериває запуск gateway.
- Помилка перезавантаження під час виконання зберігає останній відомий справний snapshot.
- Помилка preflight для write-RPC відхиляє надіслану конфігурацію та залишає як дискову конфігурацію, так і активний runtime snapshot без змін.
- Надання явного токена каналу для окремого виклику outbound helper/tool не запускає активацію SecretRef; точками активації залишаються запуск, перезавантаження та явний
secrets.reload.
Сигнали погіршення та відновлення
Коли активація під час перезавантаження завершується невдало після справного стану, OpenClaw переходить у погіршений стан секретів. Одноразова системна подія та коди журналу:SECRETS_RELOADER_DEGRADEDSECRETS_RELOADER_RECOVERED
- Погіршений стан: runtime зберігає останній відомий справний snapshot.
- Відновлено: надсилається один раз після наступної успішної активації.
- Повторні помилки, коли система вже в погіршеному стані, журналюють попередження, але не засмічують події.
- Startup fail-fast не надсилає події погіршення, бо runtime ніколи не ставав активним.
Розв’язання шляхів команд
Шляхи команд можуть увімкнути підтримуване розв’язання SecretRef через snapshot RPC Gateway. Є дві широкі моделі поведінки:- Strict command paths
- Read-only command paths
Наприклад, шляхи remote-memory
openclaw memory і openclaw qr --remote, коли йому потрібні refs віддаленого спільного секрету. Вони читають з активного snapshot і швидко завершуються з помилкою, коли потрібний SecretRef недоступний.- Оновлення snapshot після ротації секрету бекенда обробляється через
openclaw secrets reload. - Метод Gateway RPC, який використовують ці шляхи команд:
secrets.resolve.
Робочий процес аудиту та налаштування
Типовий потік оператора:secrets audit
secrets audit
Знахідки включають:
- відкритотекстові значення у стані спокою (
openclaw.json,auth-profiles.json,.envі згенерованіagents/*/agent/models.json) - залишки чутливих заголовків провайдера у відкритому тексті в згенерованих записах
models.json - нерозв’язані refs
- затінення пріоритету (
auth-profiles.jsonмає пріоритет над refs зopenclaw.json) - застарілі залишки (
auth.json, нагадування OAuth)
- За замовчуванням audit пропускає перевірки розв’язності exec SecretRef, щоб уникнути побічних ефектів команд.
- Використовуйте
openclaw secrets audit --allow-exec, щоб виконувати exec-провайдери під час аудиту.
- Виявлення чутливих заголовків провайдера базується на евристиках назв (поширені назви й фрагменти auth/credential-заголовків, як-от
authorization,x-api-key,token,secret,passwordіcredential).
secrets configure
secrets configure
Інтерактивний helper, який:
- спочатку налаштовує
secrets.providers(env/file/exec, додати/редагувати/видалити) - дає змогу вибрати підтримувані поля, що містять секрети, в
openclaw.jsonплюсauth-profiles.jsonдля однієї області agent - може створити нове зіставлення
auth-profiles.jsonбезпосередньо в target picker - збирає деталі SecretRef (
source,provider,id) - запускає preflight-розв’язання
- може застосувати зміни негайно
- Preflight пропускає перевірки exec SecretRef, якщо не встановлено
--allow-exec. - Якщо ви застосовуєте безпосередньо з
configure --applyі план містить exec refs/providers, залиште--allow-execвстановленим і для кроку застосування.
openclaw secrets configure --providers-onlyopenclaw secrets configure --skip-provider-setupopenclaw secrets configure --agent <id>
configure:- очищати відповідні статичні облікові дані з
auth-profiles.jsonдля цільових провайдерів - очищати застарілі статичні записи
api_keyзauth.json - очищати відповідні відомі рядки секретів з
<config-dir>/.env
secrets apply
secrets apply
Застосувати збережений план:Примітка щодо exec:
- dry-run пропускає exec-перевірки, якщо не встановлено
--allow-exec. - режим запису відхиляє плани, що містять exec SecretRefs/providers, якщо не встановлено
--allow-exec.
Одностороння політика безпеки
Модель безпеки:- preflight має завершитися успішно перед режимом запису
- runtime-активація перевіряється перед commit
- apply оновлює файли за допомогою атомарної заміни файлів і best-effort restore у разі помилки
Нотатки щодо сумісності застарілої автентифікації
Для статичних облікових даних runtime більше не залежить від застарілого відкритотекстового сховища auth.- Джерелом runtime-облікових даних є розв’язаний in-memory snapshot.
- Застарілі статичні записи
api_keyочищаються, коли їх виявлено. - Поведінка сумісності, пов’язана з OAuth, залишається окремою.
Нотатка Web UI
Деякі об’єднання SecretInput легше налаштовувати в режимі raw editor, ніж у form mode.Пов’язане
- Автентифікація — налаштування auth
- CLI: secrets — CLI-команди
- Змінні середовища — пріоритет середовища
- Поверхня облікових даних SecretRef — поверхня облікових даних
- Контракт плану застосування секретів — подробиці контракту плану
- Безпека — позиція безпеки