> ## 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](/uk/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, // required for Homebrew symlinked binaries
        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](/uk/gateway/secrets), щоб дізнатися про порядок отримання, кешування та семантику помилок, і [Область облікових даних SecretRef](/uk/reference/secretref-credential-surface), щоб переглянути всі поля, які приймають 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` визначається, але читання завершується помилками символічного посилання: для встановлень через Homebrew задайте `allowSymlinkCommand: true`.
* `account is not signed in`: для сервісних облікових записів переконайтеся, що `OP_SERVICE_ACCOUNT_TOKEN` передається службі Gateway і зазначена в `passEnv`; для інтеграції з настільним застосунком переконайтеся, що застосунок запущений і розблокований.
* Повільне перше читання: збільште `timeoutMs` у провайдері; холодний запуск `op` на завантажених хостах може перевищувати суворі обмеження часу очікування.
