---
read_when:
    - Вы хотите убрать ключи API из openclaw.json и хранить их в 1Password
    - Вы запускаете Gateway без графического интерфейса, и вам требуется аутентификация с помощью сервисного аккаунта для op
    - Вы хотите, чтобы агенты считывали или внедряли секреты с помощью CLI `op`
summary: Получайте секреты Gateway с помощью 1Password CLI и предоставьте агентам доступ к встроенному навыку 1password
title: 1Password
x-i18n:
    generated_at: "2026-07-13T19:45:46Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 24
    provider: openai
    source_hash: dbe92009cd4409ae8e7235f5462f059783d5ca863557f1a7b12cacd47ee718c9
    source_path: gateway/1password.md
    workflow: 16
---

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