Симптом: VPN «включён», а в терминале 403, not available in your region, certificate has expired, connection appears to be offline или OAuth зацикливается. Чаще всего трафик Claude Code не идёт через туннель — split tunnel, WSL без маршрута, VPN только на телефоне.
Pillar-гайд: Claude Code в России. Браузерный Claude: не работает с VPN.
Коротко: порядок проверки
- VPN на той же ОС, где терминал с
claude. curl -sI https://claude.ai | head -1— не 403.- Закрыть все вкладки claude.ai → VPN → новый OAuth.
- Один сервер (US/DE/NL) на всю сессию — не переключать посреди входа.
- Отключить split tunnel для терминала / IDE.
Таблица ошибок Claude Code
| Сообщение | Вероятная причина | Действие |
|---|---|---|
| not available in your region | RU IP или утечка DNS | US/DE/NL, полный туннель |
| certificate has expired | MITM, корпоративный proxy, старый CA | другая сеть, личный ноутбук |
| connection appears to be offline | VPN оборвался, firewall | переподключить, другой узел |
| OAuth loop | смена страны между шагами | один сервер до конца входа |
| ECONNREFUSED | корпоративный proxy | личная сеть или HTTPS_PROXY |
| content block not found | сбой API/сессии | новый чат в claude, не VPN |
Split tunnel — главная ловушка
Happ, INCY и корпоративные клиенты иногда пускают браузер через VPN, а терминал — мимо.
Так нельзя: VPN «только для Safari», claude в iTerm без маршрута.
Так можно: системный VPN / «весь трафик» / маршрут для claude и Node на Windows.
Подробнее: Windows и macOS.
WSL2 на Windows
VPN на Windows-хосте не всегда покрывает WSL. Симптом: curl claude.ai из PowerShell — OK, из WSL — 403.
Решения:
- Запускать
claudeв нативном PowerShell/cmd с Happ Desktop. - Или настроить маршрут WSL через VPN (сложно) — см. Habr-гайды по network namespace.
VPN на телефоне ≠ VPN для CLI
Claude Code на MacBook не видит туннель на iPhone. Нужен клиент на той же машине.
Сервер US vs EU
Оба работают. Если DE даёт captcha или instant region error — переключитесь на US и не меняйте страну до конца OAuth.
Стабильность важнее ping: один персональный узел лучше, чем rotation free VPN (риск флага аккаунта при частой смене локации).
HTTPS_PROXY — запасной путь
Если системный VPN невозможен (редкий корпоративный кейс), в ~/.claude/settings.json:
{
"env": {
"HTTPS_PROXY": "http://127.0.0.1:8118"
}
}
Нужен локальный HTTP-proxy (Privoxy и т.п.) поверх зарубежного egress. Для большинства — проще системный AvgarVPN.
IDE (VS Code, Cursor)
Расширение Claude Code использует тот же маршрут. Если CLI работает, а IDE — нет, проверьте отдельный split tunnel для Electron.
После исправления маршрута
claude logout(если есть).- VPN → US/DE/NL.
claude→ OAuth заново.