Звичайний текст усе ще підтримується. SecretRef вмикаються окремо для кожних облікових даних.
Модель середовища виконання
- Секрети перетворюються на знімок середовища виконання в пам’яті завчасно під час активації, а не ліниво в шляхах обробки запитів.
- Запуск негайно завершується помилкою, якщо фактично активний SecretRef неможливо розв’язати.
- Перезавантаження є атомарною заміною: або повний успіх, або збереження останнього справного знімка.
- Порушення політики (наприклад, профіль автентифікації в режимі OAuth у поєднанні з вхідними даними SecretRef) спричиняють помилку активації до заміни знімка середовища виконання.
- Запити середовища виконання читають лише активний знімок у пам’яті. Облікові дані SecretRef постачальника моделей проходять через сховище автентифікації та параметри потоку як локальні для процесу сторожові значення до моменту вихідного передавання. Шляхи вихідної доставки (доставка відповідей/гілок Discord, надсилання дій Telegram) також читають цей знімок і не розв’язують посилання повторно для кожного надсилання.
Впровадження під час вихідного передавання (сторожові значення)
Для облікових даних постачальника моделей, що використовують SecretRef, OpenClaw створює непрозоре локальне для процесу сторожове значення під час розв’язання автентифікації моделі. Тому сховище автентифікації, параметри потоку, конфігурація SDK, журнали, об’єкти помилок і більшість засобів перевірки середовища виконання бачать значення на кшталтoc-sent-v1-..., а не облікові дані постачальника. Захищений механізм отримання даних моделі та керовані перевірки справності локального постачальника замінюють відомі сторожові значення в URL і значеннях заголовків безпосередньо перед виходом кожного запиту з процесу.
Невідомі значення у форматі сторожових значень спричиняють безпечну відмову до початку мережевої активності. OpenClaw відмовляється надсилати запит замість передавання нерозв’язаного сторожового значення постачальнику. Розв’язані значення секретів також реєструються для редагування точних значень у журналах як додатковий захисний захід.
Адаптери постачальників використовують найпізнішу точку впровадження, яку підтримує їхній SDK:
- SDK із власним параметром отримання даних отримують захищений механізм отримання даних OpenClaw, тому SDK зберігає сторожове значення.
- SDK без власного параметра отримання даних розгортають сторожове значення безпосередньо перед створенням клієнта. Потоки постачальників, якими керують плагіни, та середовища агентів розгортають його під час остаточного передавання під керуванням ядра, оскільки ці транспорти не використовують спільний захищений механізм отримання даних OpenClaw.
OPENCLAW_SECRET_SENTINELS=off (також приймаються 0 або false, без урахування регістру), щоб вимкнути створення сторожових значень під час реагування на інциденти або усунення проблем сумісності. Цей аварійний перемикач не вимикає реєстрацію редагування точних значень.
Межа доступу агента
SecretRef запобігають збереженню облікових даних у конфігурації та згенерованих файлах моделей, але не є межею ізоляції процесу. Облікові дані у звичайному тексті, залишені на диску за шляхом, який агент може читати, усе одно доступні через файлові або оболонкові інструменти в обхід редагування на рівні API. Для робочих розгортань, де враховуються доступні агенту файли, вважайте міграцію завершеною лише за виконання всіх наведених умов:- Підтримувані облікові дані використовують SecretRef замість значень у звичайному тексті.
- Застарілі залишки звичайного тексту видалено з
openclaw.json,auth-profiles.json,.envі згенерованих файлівmodels.json. openclaw secrets audit --checkне виявляє проблем після міграції.- Усі інші непідтримувані або змінювані облікові дані захищено ізоляцією ОС, ізоляцією контейнера або зовнішнім проксі-сервером облікових даних.
Фільтрування активних поверхонь
SecretRef перевіряються лише на фактично активних поверхнях:- Увімкнені поверхні: нерозв’язані посилання блокують запуск/перезавантаження.
- Неактивні поверхні: нерозв’язані посилання не блокують запуск/перезавантаження; вони створюють некритичне діагностичне повідомлення
SECRETS_REF_IGNORED_INACTIVE_SURFACE.
Приклади неактивних поверхонь
Приклади неактивних поверхонь
- Вимкнені записи каналів/облікових записів.
- Облікові дані каналу верхнього рівня, які не успадковує жоден увімкнений обліковий запис.
- Вимкнені поверхні інструментів/функцій.
- Ключі, специфічні для постачальників вебпошуку, яких не вибрано параметром
tools.web.search.provider. В автоматичному режимі (постачальника не задано) ключі перевіряються за пріоритетом для автоматичного виявлення, доки один із них не буде розв’язано; після вибору ключі невибраних постачальників стають неактивними. - Матеріали автентифікації SSH пісочниці (
agents.defaults.sandbox.ssh.identityData,certificateData,knownHostsData, а також перевизначення для окремих агентів) активні лише тоді, коли фактичним серверним модулем пісочниці єssh, режим пісочниці не дорівнюєoff, а агент є типовим або ввімкненим. - SecretRef
gateway.remote.token/gateway.remote.passwordактивні, якщо виконується будь-яка з таких умов:gateway.mode=remotegateway.remote.urlналаштованоgateway.tailscale.modeмає значенняserveабоfunnel- У локальному режимі без цих віддалених поверхонь:
gateway.remote.tokenактивний, коли може бути вибрана автентифікація за токеном і не налаштовано токен середовища/автентифікації;gateway.remote.passwordактивний лише тоді, коли може бути вибрана автентифікація за паролем і не налаштовано пароль середовища/автентифікації.
- SecretRef
gateway.auth.tokenнеактивний для розв’язання автентифікації під час запуску, коли заданоOPENCLAW_GATEWAY_TOKEN, оскільки для цього середовища виконання перевагу має вхідний токен середовища.
Діагностика поверхні автентифікації Gateway
Коли SecretRef задано дляgateway.auth.token, gateway.auth.password, gateway.remote.token або gateway.remote.password, під час запуску/перезавантаження Gateway стан поверхні записується в журнал із кодом SECRETS_GATEWAY_AUTH_SURFACE:
active: SecretRef є частиною фактичної поверхні автентифікації та має бути розв’язаний.inactive: перевагу має інша поверхня автентифікації або віддалену автентифікацію вимкнено/не активовано.
Попередня перевірка посилань під час початкового налаштування
Під час інтерактивного початкового налаштування вибір зберігання SecretRef запускає попередню перевірку перед збереженням:- Посилання на середовище: перевіряє ім’я змінної середовища та підтверджує, що під час налаштування доступне непорожнє значення.
- Посилання постачальника (
fileабоexec): перевіряє вибір постачальника, розв’язуєidі перевіряє тип розв’язаного значення. - Процес швидкого старту: якщо
gateway.auth.tokenуже є SecretRef, початкове налаштування розв’язує його перед пробним запуском/ініціалізацією панелі керування (для посиланьenv,fileіexec) за допомогою того самого шлюзу негайної відмови.
Контракт SecretRef
Єдина форма об’єкта всюди:- env
- file
- exec
providerмає відповідати^[a-z][a-z0-9_-]{0,63}$idмає відповідати^[A-Z][A-Z0-9_]{0,127}$
Конфігурація постачальників
Визначте постачальників уsecrets.providers:
Постачальник середовища
Постачальник середовища
- Необов’язковий список дозволених точних імен через
allowlist. - Відсутні або порожні значення середовища спричиняють помилку розв’язання.
Файловий постачальник
Файловий постачальник
- Читає локальний файл за шляхом
path. mode: "json"(типово) очікує корисне навантаження у вигляді об’єкта JSON і розв’язуєidяк вказівник JSON.mode: "singleValue"очікує ідентифікатор посилання"value"і повертає необроблений вміст файлу (кінцевий символ нового рядка видаляється).- Шлях має пройти перевірки власника/дозволів;
timeoutMs(типово 5000) іmaxBytes(типово 1 MiB) обмежують читання. - Безпечна відмова у Windows: якщо перевірка ACL недоступна для шляху, розв’язання завершується помилкою. Лише для довірених шляхів установіть
allowInsecurePath: trueдля цього постачальника, щоб обійти перевірку.
Провайдер виконання
Провайдер виконання
- Запускає налаштований абсолютний шлях до бінарного файла безпосередньо, без оболонки.
- За замовчуванням
commandмає бути звичайним файлом, а не символічним посиланням. УстановітьallowSymlinkCommand: true, щоб дозволити шляхи команд із символічними посиланнями (наприклад, обгортки Homebrew), і поєднайте його зtrustedDirs(наприклад,["/opt/homebrew"]), щоб підходили лише шляхи менеджера пакетів. - Підтримує
timeoutMs(за замовчуванням 5000),noOutputTimeoutMs(за замовчуванням дорівнюєtimeoutMs),maxOutputBytes(за замовчуванням 1 MiB), список дозволених значеньenv/passEnvіtrustedDirs. jsonOnlyза замовчуванням має значенняtrue. ЗjsonOnly: falseі одним запитаним ідентифікатором звичайний вивід stdout не у форматі JSON приймається як значення цього ідентифікатора.- Безпечна відмова у Windows: якщо перевірка ACL для шляху команди недоступна, визначення шляху завершується помилкою. Лише для довірених шляхів установіть
allowInsecurePath: trueу цьому провайдері, щоб обійти перевірку. - Провайдери виконання, керовані плагінами, можуть використовувати
pluginIntegrationзамість скопійованихcommand/args. OpenClaw визначає поточні відомості про команду з маніфесту встановленого плагіна під час запуску або перезавантаження; якщо плагін вимкнено, видалено, він не є довіреним або більше не оголошує інтеграцію, активні SecretRef цього провайдера безпечно завершуються помилкою.
code — це необов’язкове машинозчитуване діагностичне повідомлення. OpenClaw відображає розпізнані
коди NOT_FOUND і AMBIGUOUS_DUPLICATE_KEY разом із провайдером та ідентифікатором посилання. Інші
коди й поля довільної форми, як-от message, приймаються для сумісності з протоколом версії 1,
але не відображаються, оскільки вивід засобу визначення може містити облікові дані.API-ключі у файлах
Не розміщуйте рядкиfile:... у блоці конфігурації env. Цей блок є буквальним і не допускає перевизначення, тому file:... у ньому ніколи не визначається.
Натомість використовуйте файловий SecretRef у підтримуваному полі облікових даних:
mode: "singleValue" значенням SecretRef id є "value". Для mode: "json" використовуйте абсолютний вказівник JSON, наприклад "/providers/xai/apiKey".
Перелік полів, які приймають SecretRef, наведено в розділі Область облікових даних SecretRef.
Приклади інтеграції виконання
Спеціальний посібник із 1Password, що охоплює службові облікові записи, вбудовану навичку агента та усунення несправностей, див. у розділі 1Password.CLI 1Password
CLI 1Password
Bitwarden Secrets Manager (`bws`)
Bitwarden Secrets Manager (`bws`)
Використовуйте обгортку засобу визначення, щоб зіставити ідентифікатори SecretRef із ключами елементів Bitwarden Secrets Manager. Репозиторій містить Засіб визначення об’єднує запитані ідентифікатори в пакет, запускає
scripts/secrets/openclaw-bws-resolver.mjs; установіть або скопіюйте його до абсолютного довіреного шляху на хості, де працює Gateway.Вимоги:- CLI Bitwarden Secrets Manager (
bws) установлено на хості Gateway. BWS_ACCESS_TOKENдоступний службі Gateway.PATHпередано засобу визначення абоBWS_BINустановлено як абсолютний шлях до бінарного файлаbws.BWS_SERVER_URLустановлено в середовищі під час використання власного екземпляра Bitwarden.
bws secret list і повертає значення відповідних секретних полів key. Використовуйте ключі, які відповідають контракту ідентифікатора SecretRef для виконання, наприклад openclaw/providers/openai/apiKey; ключі у стилі змінних середовища з підкресленнями відхиляються до запуску засобу визначення. Якщо запитаний ключ мають кілька видимих секретів Bitwarden, засіб визначення позначає цей ідентифікатор як неоднозначний і завершує його обробку помилкою замість припущення. Після оновлення конфігурації перевірте шлях засобу визначення:CLI HashiCorp Vault
CLI HashiCorp Vault
password-store (`pass`)
password-store (`pass`)
Використовуйте невелику обгортку засобу визначення, щоб безпосередньо зіставити ідентифікатори SecretRef із записами Потім налаштуйте провайдер виконання та спрямуйте Зберігайте секрет у першому рядку запису
pass. Збережіть її як виконуваний файл за абсолютним шляхом, який проходить перевірки шляхів провайдера виконання, наприклад /usr/local/bin/openclaw-pass-resolver. Рядок shebang #!/usr/bin/env node визначає node зі змінної PATH процесу засобу визначення, тому додайте PATH до passEnv. Якщо pass відсутній у цьому PATH, установіть PASS_BIN у батьківському середовищі та також додайте його до passEnv:apiKey на шлях запису pass:pass або налаштуйте обгортку так, щоб вона повертала повний вивід pass show. Після оновлення конфігурації перевірте статичний аудит і шлях засобу визначення виконання:sops
sops
Змінні середовища сервера MCP
Змінні середовища сервера MCP, налаштовані черезplugins.entries.acpx.config.mcpServers, приймають SecretInput, завдяки чому API-ключі й токени не зберігаються у відкритому вигляді в конфігурації:
${MCP_SERVER_API_KEY}, і об’єкти SecretRef визначаються під час активації Gateway, до запуску процесу сервера MCP. Як і для інших поверхонь SecretRef, невизначені посилання блокують активацію лише тоді, коли плагін acpx фактично активний.
Матеріали автентифікації SSH для пісочниці
Основний бекенд пісочниціssh також підтримує SecretRef для матеріалів автентифікації SSH:
- OpenClaw розв’язує ці посилання під час активації пісочниці, а не ліниво під час кожного виклику SSH.
- Розв’язані значення записуються до тимчасового каталогу з обмежувальними дозволами файлів (
0o600) і використовуються у згенерованій конфігурації SSH. - Якщо фактичним бекендом пісочниці є не
ssh(або режим пісочниці —off), ці посилання залишаються неактивними й не блокують запуск.
Підтримувана поверхня облікових даних
Канонічний перелік підтримуваних і непідтримуваних облікових даних наведено в розділі Поверхня облікових даних SecretRef.Облікові дані, створювані під час виконання або періодично оновлювані, а також матеріали оновлення OAuth навмисно виключено з розв’язання SecretRef лише для читання.
Обов’язкова поведінка та пріоритетність
- Поле без посилання: без змін.
- Поле з посиланням: обов’язкове на активних поверхнях під час активації.
- Якщо наявні і відкритий текст, і посилання, на підтримуваних шляхах пріоритетності перевагу має посилання.
- Сентинел редагування
__OPENCLAW_REDACTED__зарезервовано для внутрішнього редагування/відновлення конфігурації; його відхиляють як буквальні надіслані дані конфігурації.
SECRETS_REF_OVERRIDES_PLAINTEXT(попередження під час виконання)REF_SHADOWED(результат аудиту, коли облікові даніauth-profiles.jsonмають пріоритет над посиланнямиopenclaw.json)
serviceAccountRef має пріоритет над serviceAccount у відкритому тексті; після встановлення сусіднього посилання значення у відкритому тексті ігнорується.
Тригери активації
Активація секретів виконується під час:- Запуску (попередня перевірка та остаточна активація)
- Шляху гарячого застосування під час перезавантаження конфігурації
- Шляху перевірки перезапуску під час перезавантаження конфігурації
- Ручного перезавантаження через
secrets.reload - Попередньої перевірки RPC запису конфігурації Gateway (
config.set/config.apply/config.patch), яка перед збереженням змін перевіряє можливість розв’язання SecretRef на активних поверхнях у надісланому корисному навантаженні конфігурації
- У разі успіху знімок замінюється атомарно.
- Помилка під час запуску перериває запуск Gateway.
- Помилка перезавантаження під час виконання зберігає останній відомий справний знімок.
- Помилка попередньої перевірки RPC запису відхиляє надіслану конфігурацію; конфігурація на диску й активний знімок середовища виконання залишаються без змін.
- Передавання явного токена каналу для окремого виклику вихідному допоміжному засобу/інструменту не запускає активацію SecretRef; точками активації залишаються запуск, перезавантаження та явний
secrets.reload.
Сигнали погіршення та відновлення
Коли активація під час перезавантаження завершується помилкою після справного стану, OpenClaw переходить у стан погіршеної доступності секретів і одноразово генерує системні події та коди журналу:SECRETS_RELOADER_DEGRADEDSECRETS_RELOADER_RECOVERED
- Погіршення: середовище виконання зберігає останній відомий справний знімок.
- Відновлення: сигнал генерується один раз після наступної успішної активації.
- Повторні помилки у вже погіршеному стані записують попередження до журналу, але не генерують подію повторно.
- Швидке завершення з помилкою під час запуску ніколи не генерує подію погіршення, оскільки середовище виконання так і не стало активним.
Розв’язання шляхів команд
Шляхи команд можуть увімкнути підтримуване розв’язання SecretRef через RPC знімка Gateway. Застосовуються дві загальні моделі поведінки:- Суворі шляхи команд
- Шляхи команд лише для читання
Наприклад, шляхи віддаленої пам’яті
openclaw memory і openclaw qr --remote, коли йому потрібні віддалені посилання на спільні секрети. Вони читають з активного знімка та швидко завершуються з помилкою, якщо обов’язковий SecretRef недоступний.- Оновлення знімка після ротації секрету бекенду виконує
openclaw secrets reload. - Метод RPC Gateway, який використовують ці шляхи команд:
secrets.resolve.
Робочий процес аудиту й налаштування
Типовий робочий процес оператора:1
Аудит поточного стану
2
Налаштування та застосування SecretRef
3
Повторний аудит
configure ви зберегли план замість застосування, перед повторним аудитом застосуйте збережений план за допомогою openclaw secrets apply --from <plan-path>.
аудит секретів
аудит секретів
Результати включають:
- Значення у відкритому тексті в стані спокою (
openclaw.json,auth-profiles.json,.envі згенерованийagents/*/agent/models.json). - Залишки конфіденційних заголовків провайдера у відкритому тексті в згенерованих записах
models.json. - Нерозв’язані посилання.
- Затінення пріоритетністю (
auth-profiles.jsonмає пріоритет над посиланнямиopenclaw.json). - Застарілі залишки (
auth.json, нагадування OAuth).
openclaw secrets audit --allow-exec, щоб виконувати exec-провайдери під час аудиту.Примітка щодо залишків заголовків: виявлення конфіденційних заголовків провайдера ґрунтується на евристиці назв (поширені назви й фрагменти заголовків автентифікації/облікових даних, як-от authorization, x-api-key, token, secret, password і credential).налаштування секретів
налаштування секретів
Інтерактивний помічник, який:
- Спочатку налаштовує
secrets.providers(env/file/exec, додавання/редагування/видалення). - Дає змогу вибрати підтримувані поля із секретами в
openclaw.jsonразом ізauth-profiles.jsonдля області одного агента. - Може створити нове зіставлення
auth-profiles.jsonбезпосередньо в засобі вибору цілі. - Збирає відомості SecretRef (
source,provider,id). - Виконує попереднє розв’язання та може застосувати зміни негайно.
--allow-exec. Якщо ви застосовуєте безпосередньо з configure --apply і план містить exec-посилання/провайдери, залиште --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.
застосування секретів
застосування секретів
Застосування збереженого плану:Примітка щодо exec: пробний запуск пропускає перевірки exec, якщо не встановлено
--allow-exec; режим запису відхиляє плани, що містять exec SecretRef/провайдери, якщо не встановлено --allow-exec.Докладні відомості про суворий контракт цілі/шляху й точні правила відхилення наведено в розділі Контракт плану застосування секретів.Односпрямована політика безпеки
Модель безпеки:- Попередня перевірка має завершитися успішно перед режимом запису.
- Активація середовища виконання перевіряється перед фіксацією.
- Застосування оновлює файли за допомогою атомарної заміни файлів і намагається відновити їх у разі помилки.
Примітки щодо сумісності із застарілою автентифікацією
Для статичних облікових даних середовище виконання більше не залежить від застарілого сховища автентифікації у відкритому тексті.- Джерелом облікових даних середовища виконання є розв’язаний знімок у пам’яті.
- Застарілі статичні записи
api_keyвидаляються під час виявлення. - Поведінка сумісності, пов’язана з OAuth, залишається окремою.
Примітка щодо вебінтерфейсу
Деякі об’єднання SecretInput простіше налаштовувати в режимі редактора необробленого тексту, ніж у режимі форми.Пов’язані матеріали
- Автентифікація — налаштування автентифікації
- CLI: секрети — команди CLI
- SecretRef Vault — налаштування провайдера HashiCorp Vault
- Змінні середовища — пріоритетність середовища
- Поверхня облікових даних SecretRef — поверхня облікових даних
- Контракт плану застосування секретів — відомості про контракт плану
- Безпека — стан захищеності