Корень багов с потерей токенов: 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>