> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 1Password

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

* **Секреты конфигурации:** любое поле [SecretRef](/ru/gateway/secrets) в `openclaw.json` может во время выполнения разрешаться через CLI `op`, поэтому API-ключи никогда не хранятся в файле конфигурации.
* **Рабочие процессы агентов:** встроенный навык `1password` обучает агентов входить в систему, а также читать или внедрять секреты с помощью `op` для выполнения собственных задач.

## Требования

* [CLI 1Password](https://developer.1password.com/docs/cli/get-started/) (`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 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  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](/ru/gateway/secrets), а полный список полей, принимающих SecretRef, — в разделе [Поверхность учетных данных SecretRef](/ru/reference/secretref-credential-surface).

## Настройка сервисной учетной записи для 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` на загруженных хостах может превышать строгие ограничения времени ожидания.
