OAuth

OpenClaw поддерживает "subscription auth" через OAuth для провайдеров, которые его предлагают (в частности, OpenAI Codex (ChatGPT OAuth)). Для подписок Anthropic используйте поток setup-token. Эта страница объясняет:

  • как работает обмен токенами OAuth (PKCE)
  • где хранятся токены (и почему)
  • как обрабатывать несколько аккаунтов (профили + переопределения для каждой сессии)

OpenClaw также поддерживает плагины провайдеров, которые поставляются со своими потоками OAuth или API-ключей. Запустите их через:

openclaw models auth login --provider <id>

Приемник токенов (почему он существует)

Провайдеры OAuth обычно создают новый токен обновления во время потоков входа/обновления. Некоторые провайдеры (или клиенты OAuth) могут аннулировать старые токены обновления, когда новый выдается для того же пользователя/приложения.

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

  • вы входите через OpenClaw и через Claude Code / Codex CLI → один из них случайно "выходит из системы" позже

Чтобы уменьшить это, OpenClaw рассматривает auth-profiles.json как приемник токенов:

  • среда выполнения читает учетные данные из одного места
  • мы можем хранить несколько профилей и маршрутизировать их детерминированно

Хранилище (где живут токены)

Секреты хранятся для каждого агента:

  • Профили auth (OAuth + ключи API): ~/.openclaw/agents/<agentId>/agent/auth-profiles.json
  • Кэш среды выполнения (управляется автоматически; не редактируйте): ~/.openclaw/agents/<agentId>/agent/auth.json

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

  • ~/.openclaw/credentials/oauth.json (импортируется в auth-profiles.json при первом использовании)

Все вышеперечисленное также учитывает $OPENCLAW_STATE_DIR (переопределение директории состояния). Полная справка: /gateway/configuration

Anthropic setup-token (subscription auth)

Запустите claude setup-token на любой машине, затем вставьте его в OpenClaw:

openclaw models auth setup-token --provider anthropic

Если вы сгенерировали токен в другом месте, вставьте его вручную:

openclaw models auth paste-token --provider anthropic

Проверьте:

openclaw models status

Обмен OAuth (как работает вход)

Интерактивные потоки входа OpenClaw реализованы в @mariozechner/pi-ai и подключены к мастерам/командам.

Anthropic (Claude Pro/Max) setup-token

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

  1. запустите claude setup-token
  2. вставьте токен в OpenClaw
  3. сохраните как профиль auth токена (без обновления)

Путь мастера - openclaw onboard → выбор auth setup-token (Anthropic).

OpenAI Codex (ChatGPT OAuth)

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

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

Путь мастера - openclaw onboard → выбор auth openai-codex.

Обновление + истечение

Профили хранят временную метку expires.

Во время выполнения:

  • если expires в будущем → используйте сохраненный токен доступа
  • если истек → обновите (под блокировкой файла) и перезапишите сохраненные учетные данные

Поток обновления автоматический; обычно вам не нужно управлять токенами вручную.

Несколько аккаунтов (профили) + маршрутизация

Два шаблона:

1) Предпочтительно: отдельные агенты

Если вы хотите, чтобы "личный" и "рабочий" никогда не взаимодействовали, используйте изолированных агентов (отдельные сессии + учетные данные + рабочее пространство):

openclaw agents add work
openclaw agents add personal

Затем настройте auth для каждого агента (мастер) и направляйте чаты к правильному агенту.

2) Расширенный: несколько профилей в одном агенте

auth-profiles.json поддерживает несколько id профилей для одного провайдера.

Выберите, какой профиль используется:

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

Пример (переопределение сессии):

  • /model Opus@anthropic:work

Как увидеть, какие id профилей существуют:

  • openclaw channels list --json (показывает auth[])

Связанные документы: