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, // 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, щоб дізнатися про порядок отримання, кешування та семантику помилок, і Область облікових даних 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 визначається, але читання завершується помилками символічного посилання: для встановлень через Homebrew задайте allowSymlinkCommand: true.
  • account is not signed in: для сервісних облікових записів переконайтеся, що OP_SERVICE_ACCOUNT_TOKEN передається службі Gateway і зазначена в passEnv; для інтеграції з настільним застосунком переконайтеся, що застосунок запущений і розблокований.
  • Повільне перше читання: збільште timeoutMs у провайдері; холодний запуск op на завантажених хостах може перевищувати суворі обмеження часу очікування.
Was this useful?
On this page

On this page