Gateway

1Password

OpenClaw взаимодействует с 1Password двумя независимыми способами:

  • Секреты конфигурации: любое поле SecretRef в openclaw.json может во время выполнения разрешаться через CLI op, поэтому 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 без графического интерфейса.

Разрешение секретов конфигурации с помощью op

Объявите exec-провайдер секретов, который запускает op read со ссылкой op://vault/item/field, а затем укажите его в любом поле с поддержкой SecretRef:

json5
{  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 без графического интерфейса

  1. Создайте сервисную учетную запись в своей учетной записи 1Password и предоставьте ей доступ на чтение только к тем элементам хранилища, которые необходимы Gateway.
  2. Передайте OP_SERVICE_ACCOUNT_TOKEN службе Gateway (через plist-файл launchd, модуль systemd или окружение контейнера).
  3. Добавьте "OP_SERVICE_ACCOUNT_TOKEN" в список passEnv провайдера.
  4. Проверьте из окружения хоста 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 на загруженных хостах может превышать строгие ограничения времени ожидания.
Was this useful?
On this page

On this page