Открытый текст по-прежнему поддерживается. 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=remote- настроен
gateway.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для этого поставщика, чтобы обойти проверку.
Exec-провайдер
Exec-провайдер
- Запускает настроенный исполняемый файл по абсолютному пути напрямую, без оболочки.
- По умолчанию
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у этого провайдера, чтобы пропустить проверку. - Exec-провайдеры, управляемые плагинами, могут использовать
pluginIntegrationвместо скопированныхcommand/args. OpenClaw получает актуальные сведения о команде из манифеста установленного плагина при запуске или перезагрузке; если плагин отключён, удалён, не является доверенным или больше не объявляет интеграцию, активные SecretRef этого провайдера безопасно завершаются ошибкой.
code — необязательное машиночитаемое диагностическое сообщение. OpenClaw отображает распознанные
коды NOT_FOUND и AMBIGUOUS_DUPLICATE_KEY вместе с провайдером и идентификатором ссылки. Другие
коды и поля произвольного формата, такие как message, принимаются для совместимости с протоколом версии 1,
но не отображаются, поскольку вывод средства разрешения может содержать учётные данные.API-ключи из файлов
Не помещайте строкиfile:... в блок env конфигурации. Этот блок является буквальным и не допускает переопределения, поэтому file:... в нём никогда не разрешается.
Вместо этого используйте файловый SecretRef в поддерживаемом поле учётных данных:
mode: "singleValue" значение id в SecretRef — "value". Для mode: "json" используйте абсолютный указатель JSON, например "/providers/xai/apiKey".
Поля, принимающие SecretRef, перечислены в разделе Поверхность учётных данных SecretRef.
Примеры интеграции Exec
Специальное руководство по 1Password, посвящённое сервисным аккаунтам, встроенному навыку агента и устранению неполадок, см. в разделе 1Password.1Password CLI
1Password CLI
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.- При использовании самостоятельно размещённого экземпляра Bitwarden в окружении задано
BWS_SERVER_URL.
bws secret list и возвращает значения соответствующих полей key секретов. Используйте ключи, соответствующие контракту идентификаторов Exec SecretRef, например openclaw/providers/openai/apiKey; ключи в стиле переменных окружения с символами подчёркивания отклоняются до запуска средства разрешения. Если один и тот же запрошенный ключ имеют несколько видимых секретов Bitwarden, средство разрешения помечает этот идентификатор как неоднозначный и завершается ошибкой вместо выбора наугад. После обновления конфигурации проверьте путь средства разрешения:HashiCorp Vault CLI
HashiCorp Vault CLI
password-store (`pass`)
password-store (`pass`)
Используйте небольшую обёртку средства разрешения, чтобы напрямую сопоставлять идентификаторы SecretRef с записями Затем настройте Exec-провайдер и укажите в Храните секрет в первой строке записи
pass. Сохраните её как исполняемый файл по абсолютному пути, проходящему проверки путей Exec-провайдера, например /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. После обновления конфигурации проверьте как статический аудит, так и путь Exec-средства разрешения: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> до повторного аудита.
secrets audit
secrets audit
Результаты включают:
- Хранящиеся значения в открытом виде (
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 configure
secrets configure
Интерактивный помощник, который:
- Сначала настраивает
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.
secrets apply
secrets apply
Применение сохранённого плана:Примечание об exec: пробный запуск пропускает проверки exec, если не задан
--allow-exec; режим записи отклоняет планы, содержащие SecretRef или провайдеры exec, если не задан --allow-exec.Подробности строгого контракта целей и путей, а также точные правила отклонения см. в разделе Контракт плана применения секретов.Односторонняя политика безопасности
Модель безопасности:- Перед режимом записи предварительная проверка должна завершиться успешно.
- Активация среды выполнения проверяется до фиксации.
- При применении файлы обновляются с помощью атомарной замены, а при сбое по возможности восстанавливаются.
Примечания о совместимости с устаревшей аутентификацией
Для статических учётных данных среда выполнения больше не зависит от устаревшего хранилища аутентификационных данных в открытом виде.- Источником учётных данных среды выполнения является разрешённый снимок в памяти.
- Обнаруженные устаревшие статические записи
api_keyудаляются. - Поведение совместимости, связанное с OAuth, остаётся отдельным.
Примечание о веб-интерфейсе
Некоторые объединения SecretInput проще настраивать в режиме редактора исходного текста, чем в режиме формы.Связанные разделы
- Аутентификация — настройка аутентификации
- CLI: секреты — команды CLI
- SecretRef в Vault — настройка провайдера HashiCorp Vault
- Переменные окружения — приоритет переменных окружения
- Область учётных данных SecretRef — область учётных данных
- Контракт плана применения секретов — подробности контракта плана
- Безопасность — подход к безопасности