Claude Code из России: что работает, а что нет
Почему подписка и ключ Anthropic из России не вариант, как работает ANTHROPIC_BASE_URL и что честно можно запустить за ним: Ollama на своём VPS или DeepSeek.
Короткий ответ: Claude Code из России
Claude Code из России упирается не в установку, а в модель, которая стоит за ним. Все официальные способы подключить к Claude Code именно Claude ведут к Anthropic: вход по подписке Pro или Max, ключ из Claude Console, а также Amazon Bedrock, Google Cloud's Agent Platform (бывший Vertex AI) и Microsoft Foundry. Все они подпадают под Supported Regions Policy. В редакции политики, которая вступает в силу 12 ноября 2026 года, России в списке стран нет.
Работает другое. Claude Code умеет отправлять запросы на любой адрес, который вы укажете в переменной ANTHROPIC_BASE_URL. За этим адресом может стоять открытая модель в Ollama на вашем собственном VPS или сторонний сервис с API в формате Anthropic, например DeepSeek. В этом случае вы работаете с оболочкой Claude Code, но не с моделью Claude.
Это не инструкция по обходу ограничений. Здесь нет шагов с VPN, регистрацией с иностранного IP или зарубежной картой. VPS за границей не меняет того, к какому региону относится ваш аккаунт. В этой статье у VPS одна роль: на нём работает модель или шлюз.
Что говорит политика Anthropic о регионах
Страница Supported Regions Policy перечисляет, к чему относится список стран. Это приложения (Claude.ai, Claude Code, Cowork), API и платформа для разработчиков, а также модели Claude, которые продаются через облачные платформы и авторизованных реселлеров. Поэтому Bedrock, Agent Platform и Foundry не являются отдельной дорогой: модели Claude там подчиняются тому же списку.
Политика отдельно называет использование людьми, которые физически находятся в неподдерживаемом регионе. Для компаний с головным офисом в таком регионе ограничение действует, даже если сотрудник физически находится в поддерживаемой стране. Про VPN и прокси на странице нет ни слова. Мы не считаем это молчание разрешением.
Одну деталь важно сказать сразу. В системных требованиях Claude Code есть строка «Location: Anthropic supported countries», а сам Claude Code назван в политике среди продуктов. Команда установки публичная, но требование к локации относится к продукту целиком, а не только к модели Claude. Поэтому решение, подходит ли вам схема с другой моделью, остаётся за вами. Если вам нужен агент без этого вопроса, посмотрите агентов для программирования, которые работают с Ollama напрямую.
Ещё одно уточнение из документации: бесплатный план claude.ai вообще не включает Claude Code. Чем отличаются официальные способы входа, мы разбирали в статье вход в Claude Code по подписке или по ключу API.
Как Claude Code подключается к другому API через ANTHROPIC_BASE_URL
В документации Claude Code этот механизм описан для корпоративных LLM-шлюзов (LLM gateway, прокси между Claude Code и поставщиком модели). Шлюз должен принимать запросы в формате Anthropic Messages по пути /v1/messages. Для одного человека механизм тот же самый.
Переменные, которые нужны на практике:
ANTHROPIC_BASE_URL: адрес API вместоapi.anthropic.com.ANTHROPIC_AUTH_TOKEN: ключ, который уходит в заголовкеAuthorization: Bearer.ANTHROPIC_API_KEY: ключ, который уходит в заголовкеx-api-key.ANTHROPIC_MODEL: модель для текущей сессии.ANTHROPIC_DEFAULT_OPUS_MODEL,ANTHROPIC_DEFAULT_SONNET_MODEL,ANTHROPIC_DEFAULT_HAIKU_MODEL,ANTHROPIC_DEFAULT_FABLE_MODEL: во что превращаются псевдонимыopus,sonnet,haikuиfable. Модель дляhaikuтакже выполняет фоновые задачи.CLAUDE_CODE_SUBAGENT_MODEL: модель по умолчанию для субагентов.
Если шлюз не сказал, какой заголовок он читает, начните с ANTHROPIC_AUTH_TOKEN. Ответ 401 значит только, что сервер отклонил ключ. Причин несколько: ключ неверный, отозван или истёк, или он пришёл в заголовке, который шлюз не читает. Поэтому сначала проверьте сам ключ. Если он точно действующий, а переменную вы выбрали наугад, попробуйте вторую. Неверный, отозванный или просроченный ключ смена переменной не исправит.
Два правила из документации экономят время. Переменная с ключом имеет приоритет над сохранённым входом claude.ai. А один ANTHROPIC_BASE_URL без ключа вход не заменяет: адрес сам по себе не является учётными данными. Если на машине сохранён вход claude.ai, активным остаётся он, а если входа нет, Claude Code попросит войти.
Чтобы настройки работали в каждом новом терминале, перенесите их в блок env файла ~/.claude/settings.json. Не кладите ключ в .claude/settings.json внутри проекта, потому что этот файл попадает в git и уходит всем, кто клонирует репозиторий.
Теперь о позиции Anthropic. Документация прямо говорит, что Anthropic не поддерживает работу Claude Code с моделями не Claude через любой шлюз и не проверяет сторонние шлюзы. На уровне протокола всё работает, но если что-то сломается, официальной поддержки не будет.
Последняя деталь касается сетевого трафика. Даже со шлюзом Claude Code отправляет служебные запросы в Anthropic и сторонние сервисы: проверку версии, телеметрию, заметки о выпусках. Переменная CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 отключает этот трафик. Учтите, что она отключает и автообновление, поэтому обновлять Claude Code придётся вручную.
Проверка до запуска: один запрос через curl
Прежде чем открывать Claude Code, отправьте шлюзу один короткий запрос. Это команда из документации Anthropic, в ней изменено только имя модели. Подставьте имя той модели, которую обслуживает ваш адрес.
curl -sS -w '\n%{http_code}\n' -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
-H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model": "qwen3.5", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'Как читать результат:
- JSON с полем
"content"и код200: адрес доступен, ключ принят. - Ошибка про неизвестную модель: адрес и ключ тоже работают, потому что шлюз сначала проверил ключ и только потом отклонил имя.
- Код
401: ключ отклонён. Он может быть неверным, отозванным или просроченным, либо прийти не в том заголовке. Connection refusedилиCould not resolve host: по этому адресу никто не отвечает.
Доступность сервиса из вашей сети показывает только этот запрос. Мы не утверждаем, что какой-то сервис открыт или закрыт для России. Это меняется, и проверять нужно в день настройки.
Вариант 1: открытая модель в Ollama на своём VPS
Ollama поддерживает API в формате Anthropic (/v1/messages) начиная с версии v0.14.0, вышедшей 10 января 2026 года. Документация Ollama прямо называет Claude Code среди клиентов, которые можно подключить. Аккаунт не нужен: модель работает на вашем сервере.
Что поддерживает этот API по документации Ollama: сообщения, стриминг, системный промпт, многоходовые диалоги, изображения (только в base64, не по ссылке), инструменты (tools) и рассуждения (thinking, но budget_tokens принимается без соблюдения). Что не поддерживается: подсчёт токенов /v1/messages/count_tokens, tool_choice, metadata, кэширование промптов, Batches API, цитаты, PDF и события ошибок при стриминге.
Установка на VPS с Ubuntu 24.04 и загрузка модели. Модель qwen3.5 взята из примеров в документации Ollama. Перед загрузкой посмотрите размер модели на её странице на ollama.com и сравните его с памятью сервера.
curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen3.5
ollama listollama list должна показать qwen3.5. Именно это имя потом уходит в поле model.
Размер контекста: главный параметр
Для Claude Code Ollama рекомендует окно контекста от 64k токенов. Но есть вторая сторона. Для незнакомого имени модели Claude Code считает, что окно равно 200K. Автоматическое сжатие истории настраивается переменной CLAUDE_CODE_AUTO_COMPACT_WINDOW, и Claude Code не даёт поставить её ниже 100 000 токенов. Значит, если окно модели меньше 100 000, Claude Code не начнёт сжатие вовремя. Надёжнее дать Ollama окно больше этого порога, если хватает памяти.
sudo mkdir -p /etc/systemd/system/ollama.service.d
printf '[Service]\nEnvironment="OLLAMA_CONTEXT_LENGTH=131072"\n' | sudo tee /etc/systemd/system/ollama.service.d/override.conf
sudo systemctl daemon-reload
sudo systemctl restart ollamaБольшой контекст занимает много памяти. После первого запроса к модели (подойдёт проверка через curl) выполните ollama ps. Колонка CONTEXT показывает выделенное окно в токенах, а колонка PROCESSOR показывает, где работает модель. На VPS без видеокарты там будет процессор, поэтому скорость ответа проверьте на своей реальной задаче.
Как подключиться с ноутбука
По умолчанию Ollama слушает только 127.0.0.1:11434. Оставьте так. Документация Ollama пишет про ключ для Claude Code «required but ignored»: ключ обязателен, но сервер его не проверяет. Если открыть порт в интернет, моделью сможет пользоваться любой. Безопаснее пробросить порт через SSH:
ssh -N -L 11434:127.0.0.1:11434 user@your-vps-ipПока эта команда работает, порт Ollama на сервере доступен на ноутбуке как localhost:11434. Во втором терминале на ноутбуке:
export ANTHROPIC_BASE_URL=http://localhost:11434
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_DEFAULT_HAIKU_MODEL=qwen3.5
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=100000
claude --model qwen3.5ANTHROPIC_DEFAULT_HAIKU_MODEL явно закрепляет модель для фоновых задач. По документации Claude Code при подключении через ANTHROPIC_AUTH_TOKEN к своему адресу фоновые задачи и так идут на основную модель, а эта строка просто фиксирует имя, которое есть на вашем сервере. Внутри сессии выполните /status. Строка Anthropic base URL должна показать http://localhost:11434, а строка Auth token должна назвать ANTHROPIC_AUTH_TOKEN.
Если Ollama стоит на той же машине, что и Claude Code, у Ollama есть короткий путь: команда ollama launch claude сама запускает Claude Code с нужными настройками. Другой вариант: запускать Claude Code прямо на VPS, как в статье Claude Code на VPS в сессии tmux. Тогда учтите, что самому Claude Code по требованиям нужно от 4 GB оперативной памяти, и это сверх памяти под модель.
Вариант 2: Ollama за LiteLLM, если пользователей несколько
Ollama сам ключи не проверяет. Когда моделью пользуется команда, перед ним удобно поставить LiteLLM. Это прокси, который выдаёт ключи и сопоставляет имена моделей. По документации LiteLLM для Claude Code нужны две переменные: ANTHROPIC_BASE_URL с адресом прокси (порт по умолчанию 4000) и ANTHROPIC_AUTH_TOKEN с ключом LiteLLM. Мастер-ключ даёт доступ ко всем моделям прокси, а виртуальные ключи ограничивают этот список.
В конфигурации LiteLLM поле model_name задаёт имя, которое запрашивает Claude Code, а блок litellm_params указывает реальную модель у поставщика. Установку, ключи и TLS мы разбирали отдельно: свой шлюз LiteLLM для LLM на VPS.
Одно предупреждение из документации LiteLLM. Параметр max_input_tokens в LiteLLM не меняет того, когда Claude Code сжимает историю. За это на стороне клиента по-прежнему отвечает CLAUDE_CODE_AUTO_COMPACT_WINDOW.
Вариант 3: DeepSeek и другие API в формате Anthropic
DeepSeek предоставляет адрес в формате Anthropic: https://api.deepseek.com/anthropic. Настройки ниже взяты из руководства DeepSeek для агентов программирования:
export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_AUTH_TOKEN=<ваш ключ DeepSeek API>
export ANTHROPIC_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_OPUS_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_SONNET_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-flash
export CLAUDE_CODE_SUBAGENT_MODEL=deepseek-flash
export CLAUDE_CODE_EFFORT_LEVEL=max
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=786432Суффикс [1m] объясняет документация Anthropic: он задаёт окно в 1 миллион токенов, а перед отправкой Claude Code его отрезает. У обеих моделей DeepSeek окно как раз 1M. Последняя строка задаёт порог автоматического сжатия истории в 786 432 токена, это внутри допустимого диапазона Claude Code от 100 000 до 1 000 000. Руководство DeepSeek пишет про Node.js 18 и новее, но npm-пакет Claude Code по документации Anthropic требует Node.js 22 или новее. Ориентируйтесь на Anthropic.
Что DeepSeek делает с полями Anthropic, по его документации: cache_control игнорируется, tool_choice работает, но disable_parallel_tool_use игнорируется, а у thinking игнорируется budget_tokens. Не поддерживаются типы сообщений document, mcp_tool_use и mcp_tool_result.
Прежде чем платить, сделайте две вещи сами. Первая: прочитайте условия DeepSeek Open Platform (редакция от 29 апреля 2026 года). Там сказано, что сервис нельзя использовать для целей, запрещённых законами об экспортном контроле и санкциях, и что DeepSeek не гарантирует доступность сервиса в отдельных юрисдикциях. Применяется право материкового Китая. Где хранятся данные, условия не говорят, поэтому смотрите политику конфиденциальности DeepSeek. Вторая: проверьте страницу пополнения баланса. Ни страница цен, ни условия не отвечают на вопрос, принимает ли DeepSeek оплату и регистрацию из России. Доступность адреса проверьте запросом curl из раздела выше, подставив "model": "deepseek-flash".
У Ollama есть и облачные модели, доступные через https://ollama.com с ключом OLLAMA_API_KEY. Здесь те же вопросы: регистрация, оплата и условия. Прочитайте цены Ollama и политику конфиденциальности Ollama и проверьте всё сами. Вариант с моделью на своём VPS аккаунта не требует вообще.
Рублёвые агрегаторы и перепродажа ключей
Пошаговых инструкций для них здесь нет. Политика Anthropic распространяется и на модели Claude через авторизованных реселлеров. Если же ключ выдаёт посредник, ваш код и промпты проходят через его аккаунт и его инфраструктуру. Он видит ваш трафик. Если его аккаунт заблокируют, вы потеряете и доступ, и оплаченный баланс. Это отдельный разговор о рисках, а не о настройке Claude Code.
Что меняется, когда за Claude Code стоит не Claude
Claude Code состоит из двух частей. Оболочка (harness) читает файлы, запускает команды и вызывает инструменты. Модель решает, какой инструмент вызвать и с какими аргументами. Подставив другую модель, вы оставляете оболочку и меняете модель. Пригодность результата решают две вещи: насколько хорошо модель вызывает инструменты и хватает ли ей контекста.
Простая проверка инструментов: попросите модель создать файл в пустом репозитории и запустить тест. Потом выполните git status сами. Если файла нет, а модель описала изменения текстом, эта модель плохо работает с инструментами Claude Code, и большую задачу ей доверять рано.
Что ещё нужно знать по документации:
- Claude Code отправляет шлюзу те же заголовки beta и поля запроса, что и в
api.anthropic.com, за исключением небольшого набора диагностики и настроек по умолчанию, оставленных для прямого подключения. Например, потоковая передача вызовов инструментов (fine-grained tool streaming) через свой адрес по умолчанию выключена. Состав этого набора меняется от версии к версии. Чужой сервер может отклонить часть из них. - Для незнакомого имени модели Claude Code за шлюзом
ANTHROPIC_BASE_URLотправляет всё, что принимают текущие модели Claude в API Anthropic: адаптивное рассуждение, уровни effort и управление контекстом. Сервер не от Anthropic может отклонить эти поля, такие ошибки разобраны ниже. ПеременныеANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIESза шлюзомANTHROPIC_BASE_URLне работают, они действуют только для конфигураций Bedrock, Agent Platform, Foundry и Mantle. - Если сервер не поддерживает
/v1/messages/count_tokens, как Ollama, Claude Code оценивает заполнение контекста по числу символов. Цифры в интерфейсе станут приблизительными. - Если сервер отбрасывает метки
cache_control, ошибки не будет, но весь вход обрабатывается заново на каждом ходе. С Ollama на своём VPS это лишняя нагрузка, а у платного API это лишние деньги. - По словам Ollama, базовый чат и правка файлов работают с подходящими моделями, а размещённый WebSearch и расширенное управление инструментами поддерживаются не полностью.
Как экономить контекст в долгих сессиях, мы описали в статье управление контекстом в Claude Code. С моделью на своём сервере это ещё важнее.
Имя модели не совпадает: что проверить в документации
Ошибка про неизвестную модель встречается чаще всего. Причина в том, что Claude Code по умолчанию работает с именами моделей Claude, а сервер знает свои. Здесь лучше задать себе вопросы и проверить ответы в документации, чем копировать чужой вывод.
- Какое имя уходит в запросе? Его задают
--modelилиANTHROPIC_MODELдля текущей сессии и переменныеANTHROPIC_DEFAULT_*_MODELдля псевдонимов. Значение должно быть полным именем, которое принимает ваш сервер. - Как сервер обрабатывает имя
claude-...? DeepSeek принимает имена, которые начинаются сclaude:claude-opusпревращается вdeepseek-v4-pro, остальные вdeepseek-flash. Имена безclaudeв начале, кроме собственных моделей DeepSeek, дают ошибку400. В Ollama имя должно совпадать с тем, что показываетollama list. - Нужно ли имя Claude на стороне Ollama? Для инструментов, которые ждут имена Anthropic, документация Ollama предлагает скопировать модель под таким именем, например
ollama cp qwen3-coder claude-3-5-sonnet. Вместоqwen3-coderподставьте свою модель. - Почему модели нет в списке
/model? Автоматический поиск моделей на шлюзе включается переменнойCLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1, а по умолчанию он выключен. Из ответа шлюза Claude Code оставляет только имена, где естьclaudeилиanthropic. Другой путь:ANTHROPIC_CUSTOM_MODEL_OPTION. Для этого имени Claude Code проверку не выполняет.
Ошибки, которые вы увидите, и их причины
Claude Code просит войти, хотя curl работает. У Claude Code нет ключа. Адрес в ANTHROPIC_BASE_URL ключом не является. Задайте ANTHROPIC_AUTH_TOKEN в экспорте оболочки или в блоке env файла ~/.claude/settings.json.
Ответ 401. Сервер отклонил ключ. Сначала проверьте сам ключ: он скопирован целиком, не отозван и не истёк. Если сомневаетесь, выпустите новый там, где получили старый. Если ключ точно действующий, а переменную вы выбрали наугад, поменяйте ANTHROPIC_AUTH_TOKEN на ANTHROPIC_API_KEY или наоборот.
Connection refused или Can't reach the API server. По адресу никто не отвечает. С Ollama на VPS чаще всего это значит, что команда ssh -N -L в первом терминале завершилась, и туннеля больше нет.
Ошибка 400 с context_management или Extra inputs are not permitted. Сервер не понимает поля, которые Claude Code отправляет по формату Anthropic. Задайте CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1. Учтите побочный эффект: с этой переменной все инструменты MCP загружаются сразу, а не по мере надобности. В версии v2.1.304 и новее Claude Code после такого отказа из-за context_management сам повторяет запрос без этого поля.
Ошибка 400 с thinking или adaptive. Модель за шлюзом не принимает адаптивное рассуждение. Документация Anthropic предлагает обновить модель или сервер на стороне шлюза.
Ошибка 400 о превышении контекста словами шлюза. Claude Code не узнаёт такую ошибку и не сжимает историю сам. Выполните /compact, затем задайте CLAUDE_CODE_AUTO_COMPACT_WINDOW по лимиту сервера и CLAUDE_CODE_MAX_OUTPUT_TOKENS ниже лимита вывода модели.
Сколько это стоит в рублях
Модель в Ollama на своём VPS стоит столько, сколько стоит сервер. Платы за токены нет. Цена здесь в другом: в памяти под модель и контекст и в скорости работы на процессоре.
У DeepSeek оплата за токены, деньги списываются с пополненного баланса. Цены зависят от времени. В часы пик они вдвое выше: с 01:00 до 04:00 и с 06:00 до 10:00 UTC по будням, кроме государственных праздников Китая. По Москве это с 4:00 до 7:00 и с 9:00 до 13:00. Для deepseek-flash миллион выходных токенов стоит $1,2 в часы пик и $0,6 в остальное время. По курсу ЦБ РФ на 23 октября 2026 года (81,1255 ₽ за $1) это около 97 ₽ и 49 ₽. Миллион входных токенов без кэша стоит $0,3 и $0,15, то есть около 24 ₽ и 12 ₽. Курс ЦБ официальный, а не курс вашего банка, поэтому реальная сумма при пополнении будет другой.
Есть и новая статья расходов. Серверные инструменты Search и Fetch, которые вызывает Claude Code, у DeepSeek пока бесплатны, но с 00:00 по пекинскому времени 1 ноября 2026 года они стоят $0,75 за 1000 успешных запросов, то есть около 61 ₽ по тому же курсу.
Для сравнения с официальными тарифами там, где Claude Code доступен, смотрите разбор сколько стоит Claude Code по планам и через API.
FAQ
Можно ли пользоваться Claude Code из России по подписке Pro или Max?
Нет. Подписка, ключ Claude Console и модели Claude через Bedrock, Google Cloud's Agent Platform или Foundry подпадают под Supported Regions Policy Anthropic. В редакции, которая вступает в силу 12 ноября 2026 года, России в списке нет. Политика также называет использование людьми, которые физически находятся в неподдерживаемом регионе, поэтому VPS за границей ничего не меняет.
Работает ли Claude Code с Ollama без аккаунта Anthropic?
На уровне протокола да. С версии v0.14.0 Ollama принимает запросы /v1/messages в формате Anthropic. Задайте ANTHROPIC_BASE_URL=http://localhost:11434 и ANTHROPIC_AUTH_TOKEN=ollama, затем запустите claude --model с именем вашей модели. Учтите, что Anthropic официально не поддерживает работу Claude Code с моделями не Claude, а в требованиях Claude Code указаны поддерживаемые страны.
Чем DeepSeek в Claude Code отличается от настоящего Claude?
Вы получаете оболочку Claude Code с другой моделью. Файлы, команды и инструменты остаются те же, но решения принимает модель DeepSeek. DeepSeek игнорирует часть полей Anthropic, например cache_control и budget_tokens, и не поддерживает сообщения document и mcp_tool_use. Качество работы зависит от того, насколько хорошо модель вызывает инструменты.
Почему Claude Code просит войти, хотя ANTHROPIC_BASE_URL задан?
Адрес шлюза не является ключом. Без ANTHROPIC_AUTH_TOKEN или ANTHROPIC_API_KEY у Claude Code нет учётных данных, и он показывает экран входа. Задайте переменную с ключом в оболочке или в блоке env файла ~/.claude/settings.json. Затем проверьте через /status, что строка Auth token называет эту переменную.
Какой размер контекста задать модели в Ollama для Claude Code?
Ollama рекомендует от 64k токенов. Но Claude Code считает окно незнакомой модели равным 200K и не даёт настроить автоматическое сжатие ниже 100 000 токенов. Поэтому, если хватает памяти, задайте OLLAMA_CONTEXT_LENGTH больше 100 000, например 131072, и CLAUDE_CODE_AUTO_COMPACT_WINDOW=100000 на стороне клиента. Выделенное окно показывает колонка CONTEXT в выводе ollama ps.