Корень багов с потерей токенов: 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>
- новый хук add-account-hook.sh: сохраняет текущий аккаунт по реальному
email (claude auth status), запускает OAuth-логин в фоне и после успеха
сам сохраняет новый аккаунт в ~/.claude/accounts + делает его current
- switch-account-hook.sh: активный аккаунт определяется через
claude auth status, а не через хрупкий файл current - защита от порчи
сохранённых credentials при рассинхроне токена
- скилл add-account: краткая инструкция после срабатывания хука
- ai-setup.sh: деплой add-account-hook + регистрация в UserPromptSubmit
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>