Gateway
1Password
OpenClaw взаимодействует с 1Password двумя независимыми способами:
- Секреты конфигурации: любое поле SecretRef в
openclaw.jsonможет во время выполнения разрешаться через CLIop, поэтому API-ключи никогда не хранятся в файле конфигурации. - Рабочие процессы агентов: встроенный навык
1passwordобучает агентов входить в систему, а также читать или внедрять секреты с помощьюopдля выполнения собственных задач.
Требования
- CLI 1Password (
op), установленный на хосте Gateway (brew install 1password-cliв macOS). - Режим аутентификации для
op:- Сервисная учетная запись (рекомендуется для Gateway без графического интерфейса): экспортируйте
OP_SERVICE_ACCOUNT_TOKENв окружение службы Gateway. Не требуются ни настольное приложение, ни интерактивный вход. - Интеграция с настольным приложением: приложение 1Password работает на том же компьютере, а интеграция с CLI включена. Первые вызовы могут запросить Touch ID или системную аутентификацию.
- Автономный вход:
op signinзапрашивает вход для каждого сеанса. Подходит агентам при использовании навыка, но не для разрешения секретов конфигурации на Gateway без графического интерфейса.
- Сервисная учетная запись (рекомендуется для Gateway без графического интерфейса): экспортируйте
Разрешение секретов конфигурации с помощью op
Объявите exec-провайдер секретов, который запускает op read со ссылкой op://vault/item/field, а затем укажите его в любом поле с поддержкой SecretRef:
{ secrets: { providers: { onepassword_openai: { source: "exec", command: "/opt/homebrew/bin/op", allowSymlinkCommand: true, // требуется для исполняемых файлов, установленных Homebrew как символические ссылки trustedDirs: ["/opt/homebrew"], args: ["read", "op://Personal/OpenClaw QA API Key/password"], passEnv: ["HOME"], jsonOnly: false, }, }, }, models: { providers: { openai: { baseUrl: "https://api.openai.com/v1", models: [{ id: "gpt-5", name: "gpt-5" }], apiKey: { source: "exec", provider: "onepassword_openai", id: "value" }, }, }, },}Как взаимодействуют эти компоненты:
commandдолжен быть абсолютным путем;trustedDirsпомечает его каталог как доверенный, аallowSymlinkCommandнеобходим, поскольку Homebrew устанавливаетopкак символическую ссылку.argsпередает ссылкуop://vault/item/fieldбез изменений. OpenClaw не разбирает схемуop://самостоятельно — ее разрешает исполняемый файлop.passEnvпередает перечисленные переменные из окружения Gateway. Для интеграции с настольным приложением требуетсяHOME; для сервисных учетных записей также требуется наличиеOP_SERVICE_ACCOUNT_TOKENв окружении службы Gateway (добавьте ее вpassEnvлибо задайте черезenv, только если вы согласны с тем, что токен будет доступен для чтения в файле конфигурации).- Для вывода одного значения оставьте
id: "value". При использованииjsonOnly: trueи полезной нагрузки JSON вместо этого обращайтесь к полям с помощью идентификатора-указателя JSON. - Отдельная запись провайдера для каждого секрета упрощает аудит ссылок; называйте провайдеры по их потребителю (
onepassword_openai,onepassword_telegram).
Порядок разрешения, кэширование и поведение при сбоях описаны в разделе Секреты Gateway, а полный список полей, принимающих SecretRef, — в разделе Поверхность учетных данных SecretRef.
Настройка сервисной учетной записи для Gateway без графического интерфейса
- Создайте сервисную учетную запись в своей учетной записи 1Password и предоставьте ей доступ на чтение только к тем элементам хранилища, которые необходимы Gateway.
- Передайте
OP_SERVICE_ACCOUNT_TOKENслужбе Gateway (через plist-файл launchd, модуль systemd или окружение контейнера). - Добавьте
"OP_SERVICE_ACCOUNT_TOKEN"в списокpassEnvпровайдера. - Проверьте из окружения хоста Gateway:
op whoamiдолжен вывести сервисную учетную запись без запроса входа.
Для чтения через сервисную учетную запись хранилище должно быть явно указано в ссылке op://. Максимально ограничьте область доступа учетной записи: это учетные данные на предъявителя.
Навык 1password для агентов
OpenClaw включает навык 1password, который позволяет агентам уверенно работать с op: он определяет доступный режим аутентификации (сервисная учетная запись, интеграция с настольным приложением или автономный вход), проверяет доступ с помощью op whoami перед чтением каких-либо данных и предпочитает op run / op inject записи значений секретов на диск. Для навыка требуется исполняемый файл op; если он отсутствует, предлагается установка через Homebrew.
Агенты используют его в собственных рабочих процессах, например чтобы прочитать токен развертывания во время выполнения задачи или внедрить переменные окружения в команду. Он не зависит от разрешения секретов конфигурации: Gateway разрешает SecretRef без участия какого-либо навыка.
Примечания по безопасности
- Значения секретов, разрешенные через exec-провайдеры, остаются в памяти Gateway; в снимках конфигурации и ответах
config.getполя SecretRef редактируются. - Никогда не помещайте значения секретов в
openclaw.json, журналы или чат. Храните имена элементов в конфигурации, а значения — в 1Password. - Журнал аудита 1Password показывает каждое чтение сервисной учетной записью, что упрощает ротацию ключей и анализ инцидентов.
Устранение неполадок
command not foundили ошибки запуска процесса: используйте абсолютный путьopи включите его каталог вtrustedDirs.opразрешается, но чтение завершается ошибками, связанными с символическими ссылками: задайтеallowSymlinkCommand: trueдля установок Homebrew.account is not signed in: для сервисных учетных записей убедитесь, чтоOP_SERVICE_ACCOUNT_TOKENпередается службе Gateway и указан вpassEnv; для интеграции с настольным приложением убедитесь, что приложение запущено и разблокировано.- Медленное первое чтение: увеличьте
timeoutMsу провайдера; холодный запускopна загруженных хостах может превышать строгие ограничения времени ожидания.