Устранение распространенных проблем аутентификации
После изучения этого урока вы сможете самостоятельно решать такие проблемы, как сбои OAuth аутентификации, ошибки обновления токенов, отказ в доступе и быстро восстанавливать нормальную работу плагина.
Ваша текущая ситуация
Вы только что установили плагин Antigravity Auth и собираетесь работать с моделями Claude или Gemini 3, но:
- После выполнения
opencode auth loginбраузер успешно авторизуется, но терминал показывает "Authorization failed" - Через некоторое время появляется ошибка "Permission Denied" или "invalid_grant"
- Все аккаунты показывают "rate limit", хотя квота еще есть
- OAuth аутентификация не работает в средах WSL2 или Docker
- Callback OAuth в браузере Safari всегда завершается неудачей
Все эти проблемы довольно распространены, и в большинстве случаев их можно решить без переустановки или обращения в поддержку, просто следуя инструкциям в этой статье.
Когда использовать этот метод
Обратитесь к этому руководству, если у вас возникла одна из следующих ситуаций:
- Ошибка OAuth аутентификации:
opencode auth loginне может быть завершен - Истекший токен: Ошибки invalid_grant, Permission Denied
- Лимит скорости: Ошибка 429, "All accounts rate-limited"
- Проблемы с окружением: WSL2, Docker, удаленная среда разработки
- Конфликты плагинов: Несовместимость с oh-my-opencode или другими плагинами
Быстрый сброс
В 90% случаев проблемы с аутентификацией можно решить, удалив файл аккаунта и выполнив повторную аутентификацию:
rm ~/.config/opencode/antigravity-accounts.json
opencode auth loginБыстрый процесс диагностики
При возникновении проблемы следуйте этому порядку для быстрого определения причины:
- Проверьте путь к конфигурации → Убедитесь, что расположение файла правильное
- Удалите файл аккаунта и выполните повторную аутентификацию → Решает большинство проблем с аутентификацией
- Просмотрите сообщение об ошибке → Найдите решение в соответствии с типом конкретной ошибки
- Проверьте сетевое окружение → WSL2/Docker требуют дополнительной конфигурации
Основные концепции: OAuth аутентификация и управление токенами
Прежде чем решать проблемы, необходимо понять несколько ключевых концепций.
Что такое OAuth 2.0 PKCE аутентификация?
Плагин Antigravity Auth использует механизм аутентификации OAuth 2.0 с PKCE (Proof Key for Code Exchange):
- Код авторизации: После вашей авторизации Google возвращает временный код авторизации
- Обмен токенами: Плагин использует код авторизации для обмена на
access_token(для вызовов API) иrefresh_token(для обновления) - Автоматическое обновление: За 30 минут до истечения
access_tokenплагин автоматически обновляет его с помощьюrefresh_token - Хранение токенов: Все токены хранятся локально в
~/.config/opencode/antigravity-accounts.jsonи не загружаются на какой-либо сервер
Безопасность: Механизм PKCE предотвращает перехват кода авторизации, даже если токен утечет, злоумышленник не сможет выполнить повторную авторизацию.
Что такое лимит скорости (Rate Limit)?
Google устанавливает ограничения на частоту вызовов API для каждого аккаунта Google. При достижении лимита:
- 429 Too Many Requests: Слишком частые запросы, необходимо подождать
- 403 Permission Denied: Возможно, аккаунт ограничен или обнаружено злоупотребление
- Запросы висят: 200 OK, но нет ответа, обычно указывает на тихое ограничение скорости
Преимущества нескольких аккаунтов: Путем ротации нескольких аккаунтов можно обойти ограничения одного аккаунта и максимизировать общую квоту.
Описание пути к конфигурации
Все платформы (включая Windows) используют ~/.config/opencode/ в качестве каталога конфигурации:
| Файл | Путь | Описание |
|---|---|---|
| Основная конфигурация | ~/.config/opencode/opencode.json | Основной конфигурационный файл OpenCode |
| Файл аккаунтов | ~/.config/opencode/antigravity-accounts.json | OAuth токены и информация об аккаунтах |
| Конфигурация плагина | ~/.config/opencode/antigravity.json | Специфичная конфигурация плагина |
| Журналы отладки | ~/.config/opencode/antigravity-logs/ | Файлы журналов отладки |
Примечание для пользователей Windows:
~автоматически разрешается в ваш пользовательский каталог (например,C:\Users\YourName). Не используйте%APPDATA%.
Проблемы OAuth аутентификации
Safari OAuth callback завершается неудачей (macOS)
Симптомы:
- После успешной авторизации в браузере терминал показывает "fail to authorize"
- Safari отображает "Safari cannot open the page" или "connection refused"
Причина: Режим "HTTPS-Only mode" Safari блокирует адрес обратного вызова http://localhost.
Решения:
Способ 1: Использовать другой браузер (самый простой)
- Выполните
opencode auth login - Скопируйте URL OAuth, отображаемый в терминале
- Вставьте в Chrome или Firefox
- Завершите авторизацию
Способ 2: Временно отключить режим HTTPS-Only
- Safari → Настройки (⌘,) → Конфиденциальность
- Снимите флажок "Включить режим HTTPS-Only"
- Выполните
opencode auth login - После завершения аутентификации снова включите режим HTTPS-Only
Способ 3: Ручное извлечение callback (продвинутый)
Когда Safari показывает ошибку, в адресной строке содержится ?code=...&scope=..., вы можете вручную извлечь параметры callback. Подробнее см. issue #119.
Порт уже занят
Сообщение об ошибке: Address already in use
Причина: Сервер обратного вызова OAuth по умолчанию использует localhost:51121, если порт занят, сервер не может запуститься.
Решения:
macOS / Linux:
# Найти процесс, занимающий порт
lsof -i :51121
# Убить процесс (замените <PID> на фактический ID процесса)
kill -9 <PID>
# Повторная аутентификация
opencode auth loginWindows:
# Найти процесс, занимающий порт
netstat -ano | findstr :51121
# Убить процесс (замените <PID> на фактический ID процесса)
taskkill /PID <PID> /F
# Повторная аутентификация
opencode auth loginWSL2 / Docker / Удаленная среда разработки
Проблема: Обратный вызов OAuth требует, чтобы браузер имел доступ к localhost, где работает OpenCode, но в контейнере или удаленной среде это невозможно.
Решение для WSL2:
- Используйте перенаправление портов VS Code
- Или настройте перенаправление портов Windows → WSL
Решение для SSH / удаленной разработки:
# Установить SSH туннель, перенаправляющий порт 51121 с удаленного хоста на локальный
ssh -L 51121:localhost:51121 user@remote-hostРешение для Docker / контейнеров:
- Внутри контейнера невозможно использовать localhost callback
- Подождите 30 секунд и используйте ручной URL процесс
- Или используйте перенаправление портов SSH
Проблемы с аутентификацией нескольких аккаунтов
Симптомы: Ошибки или путаница при аутентификации нескольких аккаунтов.
Решения:
- Удалите файл аккаунтов:
rm ~/.config/opencode/antigravity-accounts.json - Повторная аутентификация:
opencode auth login - Убедитесь, что каждый аккаунт использует разный Gmail
Проблемы обновления токенов
Ошибка invalid_grant
Сообщение об ошибке:
Error: invalid_grant
Token has been revoked or expired.Причины:
- Смена пароля Google аккаунта
- Инцидент безопасности аккаунта (например, подозрительный вход)
refresh_tokenустарел
Решение:
# Удалить файл аккаунтов
rm ~/.config/opencode/antigravity-accounts.json
# Повторная аутентификация
opencode auth loginИстечение срока действия токена
Симптомы: После периода неиспользования при повторном вызове модели появляется ошибка.
Причина: access_token действителен около 1 часа, refresh_token действует дольше, но тоже может устареть.
Решение:
- Плагин автоматически обновит токен за 30 минут до истечения срока, никаких действий не требуется
- Если автоматическое обновление не сработало, выполните повторную аутентификацию:
opencode auth login
Ошибки разрешений
403 Permission Denied (rising-fact-p41fc)
Сообщение об ошибке:
Permission 'cloudaicompanion.companions.generateChat' denied on resource
'//cloudaicompanion.googleapis.com/projects/rising-fact-p41fc/locations/global'Причина: Когда плагин не находит действительный проект, он откатывается к Project ID по умолчанию (например, rising-fact-p41fc). Это работает для моделей Antigravity, но не для моделей Gemini CLI, так как Gemini CLI требует проект GCP в вашем собственном аккаунте.
Решение:
Шаг 1: Создать или выбрать проект GCP
- Перейдите в Google Cloud Console
- Создайте новый проект или выберите существующий
- Запишите ID проекта (например,
my-gemini-project)
Шаг 2: Включить Gemini for Google Cloud API
- В Google Cloud Console перейдите в «API и сервисы» → «Библиотека»
- Найдите «Gemini for Google Cloud API» (
cloudaicompanion.googleapis.com) - Нажмите «Включить»
Шаг 3: Добавить projectId в файл аккаунтов
Отредактируйте ~/.config/opencode/antigravity-accounts.json:
{
"version": 3,
"accounts": [
{
"email": "[email protected]",
"refreshToken": "...",
"projectId": "my-gemini-project"
}
]
}Настройка нескольких аккаунтов
Если настроено несколько Google аккаунтов, каждому аккаунту необходимо добавить соответствующий projectId.
Проблемы с лимитами скорости
Все аккаунты с ограничением скорости (но квота доступна)
Симптомы:
- Подсказка «All accounts rate-limited»
- Квота кажется достаточной, но новые запросы не могут быть отправлены
- Новые добавленные аккаунты сразу ограничены по скорости
Причина: Это каскадный баг в режиме hybrid плагина (clearExpiredRateLimits()), который был исправлен в последней бета-версии.
Решения:
Вариант 1: Обновить до последней бета-версии
{
"plugin": ["opencode-antigravity-auth@beta"]
}Вариант 2: Удалить файл аккаунтов и выполнить повторную аутентификацию
rm ~/.config/opencode/antigravity-accounts.json
opencode auth loginВариант 3: Изменить стратегию выбора аккаунтов Отредактируйте ~/.config/opencode/antigravity.json, измените стратегию на sticky:
{
"account_selection_strategy": "sticky"
}429 Too Many Requests
Симптомы:
- Частое получение ошибки 429
- Подсказка «Rate limit exceeded»
Причина: Google значительно ужесточил соблюдение квот и лимитов скорости. Это влияет на всех пользователей, не только на этот плагин. Ключевые факторы:
- Более строгое соблюдение: Даже если квота «кажется доступной», Google может дросселировать или "мягко забанить" аккаунты, которые вызывают обнаружение злоупотреблений
- Шаблон запросов OpenCode: OpenCode делает больше вызовов API, чем нативные приложения (вызовы инструментов, повторные попытки, потоковая передача, цепочки диалогов с несколькими раундами), что быстрее запускает лимиты по сравнению с "нормальным" использованием
- Теневые баны: Некоторые аккаунты после пометки не могут использоваться в течение длительного времени, в то время как другие аккаунты продолжают нормально работать
Риск использования
Использование этого плагина может увеличить шансы на запуск автоматических защит от злоупотреблений / лимитов скорости. Вышеупомянутые провайдеры могут ограничить, приостановить или прекратить доступ по своему усмотрению. Используйте на свой страх и риск.
Решения:
Вариант 1: Ожидание сброса (самый надежный)
Лимиты скорости обычно сбрасываются через несколько часов. Если проблема сохраняется:
- Прекратите использование затронутых аккаунтов на 24-48 часов
- В течение этого времени используйте другие аккаунты
- Проверьте
rateLimitResetTimesв файле аккаунтов, чтобы увидеть, когда истечет срок действия лимита
Вариант 2: "Разогрев" аккаунтов в Antigravity IDE (опыт сообщества)
Пользователи сообщают, что этот метод работает:
- Откройте Antigravity IDE прямо в браузере
- Войдите с помощью затронутой учетной записи Google
- Запустите несколько простых подсказок (например, "привет", "сколько будет 2+2")
- После 5-10 успешных подсказок попробуйте снова использовать аккаунт с плагином
Принцип: Использование аккаунта через "официальный" интерфейс может сбросить некоторые внутренние флаги или сделать аккаунт менее подозрительным.
Вариант 3: Уменьшение объема и всплесков запросов
- Используйте более короткие сессии
- Избегайте параллельных / интенсивных рабочих процессов с повторными попытками (например, одновременная генерация нескольких подагентов)
- Если вы используете oh-my-opencode, рассмотрите возможность уменьшения количества одновременно генерируемых агентов
- Установите
max_rate_limit_wait_seconds: 0для быстрого выхода из строя вместо повторных попыток
Вариант 4: Прямое использование Antigravity IDE (для пользователей с одним аккаунтом)
Если у вас только один аккаунт, прямое использование Antigravity IDE может дать лучший опыт, так как шаблон запросов OpenCode быстрее запускает лимиты.
Вариант 5: Настройка нового аккаунта
Если вы добавляете новый аккаунт:
- Удалите файл аккаунтов:
rm ~/.config/opencode/antigravity-accounts.json - Повторная аутентификация:
opencode auth login - Обновите до последней бета-версии:
"plugin": ["opencode-antigravity-auth@beta"] - Рассмотрите возможность предварительного "разогрева" аккаунта в Antigravity IDE
Информация для отчета:
Если вы столкнулись с аномальным поведением лимитов скорости, пожалуйста, поделитесь в GitHub issue:
- Коды состояния в журналах отладки (403, 429 и т.д.)
- Длительность состояния лимита скорости
- Количество аккаунтов и используемая стратегия выбора
Запросы висят (нет ответа)
Симптомы:
- Подсказка зависает, нет возврата
- Журнал показывает 200 OK, но нет содержимого ответа
Причина: Обычно это тихое ограничение скорости или "мягкий бан" от Google.
Решение:
- Остановите текущий запрос (Ctrl+C или ESC)
- Подождите 24-48 часов перед повторным использованием аккаунта
- В течение этого времени используйте другие аккаунты
Проблемы восстановления сессии
Ошибка после прерывания выполнения инструмента
Симптомы: Нажатие ESC во время выполнения инструмента, последующая ошибка tool_result_missing.
Решение:
- Введите
continueв диалоге для автоматического восстановления - Если заблокировано, используйте
/undoдля возврата к состоянию перед ошибкой - Повторите операцию
Автоматическое восстановление
Функция восстановления сессии плагина включена по умолчанию. Если выполнение инструмента прерывается, она автоматически внедрит synthetic tool_result и попытается восстановиться.
Проблемы совместимости плагинов
Конфликт с oh-my-opencode
Проблема: oh-my-opencode имеет встроенную Google аутентификацию, конфликтующую с этим плагином.
Решение: Отключите встроенную аутентификацию в ~/.config/opencode/oh-my-opencode.json:
{
"google_auth": false,
"agents": {
"frontend-ui-ux-engineer": { "model": "google/antigravity-gemini-3-pro" },
"document-writer": { "model": "google/antigravity-gemini-3-flash" }
}
}Проблема параллельных агентов: При генерации параллельных подагентов несколько процессов могут попасть на один и тот же аккаунт. Решения:
- Включите
pid_offset_enabled: true(настройте вantigravity.json) - Или добавьте больше аккаунтов
Конфликт с @tarquinen/opencode-dcp
Проблема: DCP создает synthetic assistant сообщения с отсутствующими блоками мышления, конфликтуя с этим плагином.
Решение: Разместите этот плагин перед DCP:
{
"plugin": [
"opencode-antigravity-auth@latest",
"@tarquinen/opencode-dcp@latest"
]
}Другие gemini-auth плагины
Проблема: Установлены другие плагины аутентификации Google Gemini, вызывающие конфликты.
Решение: Они вам не нужны. Этот плагин уже обрабатывает всю аутентификацию Google OAuth. Удалите другие gemini-auth плагины.
Проблемы конфигурации
Ошибка в написании ключа конфигурации
Сообщение об ошибке: Unrecognized key: "plugins"
Причина: Использовано неправильное имя ключа.
Решение: Правильный ключ — plugin (единственное число):
{
"plugin": ["opencode-antigravity-auth@beta"]
}Не "plugins" (множественное число), это вызовет ошибку "Unrecognized key".
Модель не найдена
Симптомы: При использовании модели появляется ошибка "Model not found" или 400 ошибка.
Решение: Добавьте в конфигурацию google провайдера:
{
"provider": {
"google": {
"npm": "@ai-sdk/google",
"models": { ... }
}
}
}Проблемы миграции
Миграция аккаунтов между машинами
Проблема: После копирования antigravity-accounts.json на новую машину появляется сообщение "API key missing".
Решение:
- Убедитесь, что плагин установлен:
"plugin": ["opencode-antigravity-auth@beta"] - Скопируйте
~/.config/opencode/antigravity-accounts.jsonна новую машину в тот же путь - Если ошибка сохраняется,
refresh_tokenвозможно устарел → повторная аутентификация:opencode auth login
Техники отладки
Включение журналов отладки
Базовое логирование:
OPENCODE_ANTIGRAVITY_DEBUG=1 opencodeПодробное логирование (полные запросы/ответы):
OPENCODE_ANTIGRAVITY_DEBUG=2 opencodeРасположение файлов журналов: ~/.config/opencode/antigravity-logs/
Просмотр состояния лимитов скорости
Просмотрите поле rateLimitResetTimes в файле аккаунтов:
cat ~/.config/opencode/antigravity-accounts.json | grep rateLimitResetTimesКонтрольный список ✅
После завершения устранения неполадок вы должны уметь:
- [ ] Правильно понимать пути к конфигурационным файлам (
~/.config/opencode/) - [ ] Решать проблемы с callback OAuth в Safari
- [ ] Обрабатывать ошибки invalid_grant и 403
- [ ] Понимать причины и стратегии реагирования на лимиты скорости
- [ ] Решать конфликты с oh-my-opencode
- [ ] Включать журналы отладки для локализации проблем
Предупреждения
Не коммитьте файл аккаунтов в систему контроля версий
antigravity-accounts.json содержит OAuth refresh tokens, что эквивалентно файлу паролей. Плагин автоматически создаст .gitignore, но убедитесь, что ваш .gitignore содержит:
~/.config/opencode/antigravity-accounts.jsonИзбегайте частых повторных попыток
После срабатывания ограничения 429 не повторяйте попытки снова и снова. Подождите некоторое время перед повторной попыткой, иначе можете быть помечены как злоупотребление.
Обратите внимание на projectId при настройке нескольких аккаунтов
Если вы используете модели Gemini CLI, каждому аккаунту необходимо настроить свой собственный projectId. Не используйте один и тот же project ID.
Резюме урока
В этом уроке рассмотрены наиболее распространенные проблемы аутентификации и аккаунтов плагина Antigravity Auth:
- Проблемы OAuth аутентификации: Ошибки callback в Safari, занятость порта, среды WSL2/Docker
- Проблемы обновления токенов: invalid_grant, истечение срока токена
- Ошибки разрешений: 403 Permission Denied, отсутствие projectId
- Проблемы с лимитами скорости: Ошибки 429, shadow bans, ограничение скорости всех аккаунтов
- Совместимость плагинов: Конфликты с oh-my-opencode, DCP
- Проблемы конфигурации: Ошибки в написании, модель не найдена
При возникновении проблемы сначала попробуйте быстрый сброс (удаление файла аккаунтов и повторная аутентификация), в 90% случаев это решает проблему. Если проблема сохраняется, включите журналы отладки для просмотра подробной информации.
Следующий урок
В следующем уроке мы изучим Устранение ошибки "Модель не найдена".
Вы узнаете:
- Ошибки 400 моделей Gemini 3 (Unknown name 'parameters')
- Проблемы несовместимости схемы инструментов
- Методы диагностики ошибок, вызванных серверами MCP
- Как определить источник проблемы с помощью отладки
Приложение: Справочник по исходному коду
Нажмите, чтобы развернуть расположение исходного кода
Обновлено: 2026-01-23
| Функция | Путь к файлу | Номер строки |
|---|---|---|
| OAuth аутентификация (PKCE) | src/antigravity/oauth.ts | 91-270 |
| Проверка и обновление токенов | src/plugin/auth.ts | 1-53 |
| Хранение и управление аккаунтами | src/plugin/accounts.ts | 1-715 |
| Обнаружение лимитов скорости | src/plugin/accounts.ts | 9-75 |
| Восстановление сессии | src/plugin/recovery/index.ts | 1-150 |
| Система журналов отладки | src/plugin/debug.ts | 1-300 |
Ключевые константы:
OAUTH_PORT = 51121: Порт сервера обратного вызова OAuth (constants.ts:25)CLIENT_ID: ID клиента OAuth (constants.ts:4)TOKEN_EXPIRY_BUFFER = 30 * 60 * 1000: Обновление токена за 30 минут до истечения срока (auth.ts:33)
Ключевые функции:
authorizeAntigravity(): Запуск процесса OAuth аутентификации (oauth.ts:91)exchangeAntigravity(): Обмен кода авторизации на токен (oauth.ts:209)refreshAccessToken(): Обновление истекшего токена доступа (oauth.ts:263)isOAuthAuth(): Проверка, является ли тип аутентификации OAuth (auth.ts:5)accessTokenExpired(): Проверка, скоро ли истечет срок токена (auth.ts:33)markRateLimitedWithReason(): Пометка аккаунта как ограниченного по скорости (accounts.ts:9)detectErrorType(): Обнаружение типов восстанавливаемых ошибок (recovery/index.ts)