fix: определение Claude-аккаунта по токену вместо auth status

Корень багов с потерей токенов: claude auth status читает
oauthAccount.emailAddress из ~/.claude.json, который рассинхронизирован
с реальным токеном в .credentials.json. Из-за этого хуки определяли
текущий аккаунт неверно и сохраняли активный токен под чужим именем,
затирая credentials другого аккаунта.

- account-email.sh (новый): определяет email по OAuth-токену —
  локальный матчинг с accounts/, затем API /api/oauth/profile
- switch-account-hook.sh: current выводится из токена, а не из
  auth status/хрупкого файла current — порча файлов исключена.
  Перезапуск не нужен: на Linux Claude Code перечитывает
  .credentials.json на лету
- add-account-hook.sh: email нового аккаунта тоже через хелпер
- skill add-account: убрано упоминание перезапуска
- ai-setup.sh: деплой account-email.sh (секция 6.7.05)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-12 09:06:44 +03:00
parent fe439fd4a6
commit f3d1b6d5c5
5 changed files with 74 additions and 29 deletions

View File

@@ -5,4 +5,4 @@ description: Add a new Claude.ai account (handled by UserPromptSubmit hook, no L
Хук сохранил текущий аккаунт и открыл браузер для логина нового. Ответь ТОЛЬКО этим текстом (без markdown, без лишних слов):
Браузер открыт — авторизуйся там. После авторизации новый аккаунт сохранится автоматически (никаких ручных шагов). Затем перезапусти ai-claude — он подхватит новый аккаунт, и /switch-account будет переключать между всеми.
Браузер открыт — авторизуйся там. После авторизации новый аккаунт сохранится автоматически и сразу станет активным (Claude Code на Linux перечитывает токен на лету). /switch-account переключает между всеми сохранёнными аккаунтами по кругу.