Fundamentals

OAuth

OpenClaw підтримує "автентифікацію за підпискою" через OAuth для провайдерів, які її пропонують (зокрема OpenAI Codex (ChatGPT OAuth)). Для Anthropic практичний поділ зараз такий:

  • API-ключ Anthropic: звичайний білінг Anthropic API
  • Anthropic Claude CLI / автентифікація за підпискою всередині OpenClaw: співробітники Anthropic повідомили нам, що це використання знову дозволене

OpenAI Codex OAuth явно підтримується для використання в зовнішніх інструментах на кшталт OpenClaw. На цій сторінці пояснюється:

Для Anthropic у production API-автентифікація ключем є безпечнішим рекомендованим шляхом.

  • як працює обмін токена OAuth (PKCE)
  • де зберігаються токени (і чому)
  • як обробляти кілька облікових записів (профілі + перевизначення для окремих сеансів)

OpenClaw також підтримує provider plugins, які постачають власні OAuth- або API-key потоки. Запускайте їх через:

openclaw models auth login --provider <id>

Приймач токенів (навіщо він існує)

OAuth-провайдери зазвичай створюють новий refresh token під час потоків входу/оновлення. Деякі провайдери (або OAuth-клієнти) можуть робити старіші refresh tokens недійсними, коли для того самого користувача/застосунку видано новий.

Практичний симптом:

  • ви входите через OpenClaw і через Claude Code / Codex CLI → один із них згодом випадково "виходить із системи"

Щоб зменшити це, OpenClaw розглядає auth-profiles.json як приймач токенів:

  • runtime читає облікові дані з одного місця
  • ми можемо зберігати кілька профілів і маршрутизувати їх детерміновано
  • повторне використання зовнішнього CLI залежить від провайдера: Codex CLI може ініціалізувати порожній профіль openai-codex:default, але щойно OpenClaw має локальний OAuth-профіль, локальний refresh token є канонічним; інші інтеграції можуть залишатися керованими ззовні та повторно читати своє CLI-сховище автентифікації
  • шляхи стану та запуску, які вже знають налаштований набір провайдерів, обмежують виявлення зовнішнього CLI цим набором, тож непов'язане сховище входу CLI не перевіряється для налаштування з одним провайдером

Зберігання (де зберігаються токени)

Секрети зберігаються у сховищах автентифікації агентів:

  • Профілі автентифікації (OAuth + API-ключі + необов'язкові посилання рівня значення): ~/.openclaw/agents/<agentId>/agent/auth-profiles.json
  • Файл сумісності зі спадковою версією: ~/.openclaw/agents/<agentId>/agent/auth.json (статичні записи api_key очищуються після виявлення)

Спадковий файл лише для імпорту (досі підтримується, але не є основним сховищем):

  • ~/.openclaw/credentials/oauth.json (імпортується в auth-profiles.json під час першого використання)

Усе наведене вище також поважає $OPENCLAW_STATE_DIR (перевизначення каталогу стану). Повний довідник: /gateway/configuration

Про статичні посилання на секрети та поведінку активації runtime-знімка див. Керування секретами.

Коли вторинний агент не має локального профілю автентифікації, OpenClaw використовує наскрізне читання успадкування зі сховища типового/основного агента. Він не клонує auth-profiles.json основного агента під час читання. OAuth refresh tokens особливо чутливі: звичайні потоки копіювання пропускають їх за замовчуванням, бо деякі провайдери ротують або роблять refresh tokens недійсними після використання. Налаштуйте окремий OAuth-вхід для агента, коли йому потрібен незалежний обліковий запис.

Сумісність зі спадковим токеном Anthropic

OpenClaw також надає setup-token Anthropic як підтримуваний шлях автентифікації токеном, але тепер віддає перевагу повторному використанню Claude CLI і claude -p, коли вони доступні.

Міграція Anthropic Claude CLI

OpenClaw знову підтримує повторне використання Anthropic Claude CLI. Якщо на хості вже є локальний вхід Claude, onboarding/configure може використати його напряму.

Обмін OAuth (як працює вхід)

Інтерактивні потоки входу OpenClaw реалізовані в @mariozechner/pi-ai і під'єднані до майстрів/команд.

Anthropic setup-token

Форма потоку:

  1. запустити Anthropic setup-token або paste-token з OpenClaw
  2. OpenClaw зберігає отримані облікові дані Anthropic у профілі автентифікації
  3. вибір моделі залишається на anthropic/...
  4. наявні профілі автентифікації Anthropic залишаються доступними для відкату/керування порядком

OpenAI Codex (ChatGPT OAuth)

OpenAI Codex OAuth явно підтримується для використання поза Codex CLI, зокрема в робочих процесах OpenClaw.

Форма потоку (PKCE):

  1. згенерувати PKCE verifier/challenge + випадковий state
  2. відкрити https://auth.openai.com/oauth/authorize?...
  3. спробувати перехопити callback на http://127.0.0.1:1455/auth/callback
  4. якщо callback не може прив'язатися (або ви працюєте віддалено/headless), вставити redirect URL/code
  5. виконати обмін на https://auth.openai.com/oauth/token
  6. витягти accountId з access token і зберегти { access, refresh, expires, accountId }

Шлях майстра: openclaw onboard → вибір автентифікації openai-codex.

Оновлення + завершення строку дії

Профілі зберігають timestamp expires.

Під час runtime:

  • якщо expires у майбутньому → використати збережений access token
  • якщо строк дії минув → оновити (під файловим lock) і перезаписати збережені облікові дані
  • якщо вторинний агент читає успадкований OAuth-профіль основного агента, оновлення записує назад у сховище основного агента замість копіювання refresh token у сховище вторинного агента
  • виняток: деякі облікові дані зовнішнього CLI залишаються керованими ззовні; OpenClaw повторно читає ці сховища автентифікації CLI замість витрачання скопійованих refresh tokens. Ініціалізація Codex CLI навмисно вужча: вона засіває порожній профіль openai-codex:default, після чого оновлення, керовані OpenClaw, зберігають локальний профіль канонічним.

Потік оновлення автоматичний; зазвичай вам не потрібно керувати токенами вручну.

Кілька облікових записів (профілі) + маршрутизація

Два шаблони:

1) Бажано: окремі агенти

Якщо ви хочете, щоб "особисте" і "робоче" ніколи не взаємодіяли, використовуйте ізольованих агентів (окремі сеанси + облікові дані + workspace):

openclaw agents add work
openclaw agents add personal

Потім налаштуйте автентифікацію для кожного агента (майстер) і маршрутизуйте чати до правильного агента.

2) Розширено: кілька профілів в одному агенті

auth-profiles.json підтримує кілька ID профілів для того самого провайдера.

Виберіть, який профіль використовується:

  • глобально через порядок конфігурації (auth.order)
  • для окремого сеансу через /model ...@<profileId>

Приклад (перевизначення сеансу):

  • /model Opus@anthropic:work

Як побачити, які ID профілів існують:

  • openclaw channels list --json (показує auth[])

Пов'язана документація:

Пов'язане