Антон Ларичев

Codex или Claude Code: что выбрать разработчику в 2026
Короткий ответ: Codex CLI берут, когда важны открытый код, управляемая песочница и работа из терминала по правилам, которые вы задали сами; Claude Code — когда нужен агент с многоуровневой системой настроек и правами, которые можно закоммитить в репозиторий и раздать команде. Оба ставятся через npm, оба живут в терминале и оба умеют MCP — но конфигурируются принципиально по-разному, и именно на этом чаще всего спотыкаются при переходе с одного на другой. Ниже — сравнение по шести практическим осям, без бенчмарков и маркетинга: только то, что можно проверить в документации и в своём конфиге.

Codex и Claude Code: в чём разница на уровне подхода
Codex CLI — агент OpenAI, который репозиторий описывает как «lightweight coding agent that runs in your terminal». Он написан на Rust, лежит в открытом репозитории openai/codex и распространяется под лицензией Apache-2.0. Ставится пакетом npm:
npm install -g @openai/codex
codex --version
Claude Code — агент Anthropic, который ставится так же просто:
npm install -g @anthropic-ai/claude-code
Разница начинается сразу за установкой. Codex отдаёт вам один конфигурационный файл и один файл инструкций — всё в вашем распоряжении, всё правится руками. Claude Code выстраивает иерархию: настройки читаются из нескольких файлов с чёткой очерёдностью, часть из них предназначена для коммита в репозиторий, часть — личная и остаётся вне git. Если вы работаете один, первый подход проще. Если агента разворачивают на команду, второй даёт то, чего у Codex нет из коробки.
Формат конфигурации: config.toml против settings.json
Codex хранит конфигурацию в TOML. Пользовательский файл — ~/.codex/config.toml, проектный — .codex/config.toml, но проектный Codex читает только в доверенных проектах и игнорирует в нём часть ключей: провайдера, авторизацию, настройки уведомлений и телеметрии переопределить из репозитория нельзя, они остаются машинно-локальными.
Модель и провайдер задаются двумя ключами, а сам провайдер описывается отдельной секцией:
model = "<MODEL_NAME>"
model_provider = "purpleschool"
[model_providers.purpleschool]
name = "PurpleSchool OpenAI Proxy"
base_url = "https://app.purpleschool.ru/api-v2/public/ai-proxy/openai/v1"
env_key = "PURPLESCHOOL_API_KEY"
wire_api = "responses"
supports_websockets = false
Ключ env_key здесь — это имя переменной окружения, из которой Codex возьмёт ключ. Сам ключ в файл не кладут:
export PURPLESCHOOL_API_KEY="ваш ключ"
Claude Code хранит настройки в JSON и читает их из нескольких файлов сразу. От самого приоритетного к наименее приоритетному: управляемые настройки организации, флаг claude --settings, затем .claude/settings.local.json (личные правки в одном проекте), .claude/settings.json (общий файл проекта, его коммитят) и ~/.claude/settings.json (ваши настройки для всех проектов на машине). На Windows ~/.claude означает %USERPROFILE%.claude.
Переменные окружения Claude Code читает напрямую из shell:
export ANTHROPIC_API_KEY="ваш ключ"
export ANTHROPIC_BASE_URL="https://app.purpleschool.ru/api-v2/public/ai-proxy/anthropic"
Здесь важная деталь, которая ломает интуицию после Codex: переменные окружения у Claude Code — не отдельный уровень приоритета. Какое значение победит, решается для каждой пары «переменная — ключ настроек» по-своему. ANTHROPIC_MODEL, экспортированная в shell, перебьёт ключ model из любого файла, а ANTHROPIC_DEFAULT_MODEL сработает только тогда, когда model не задан нигде. Если вы привыкли, что экспорт всегда главнее файла, это место стоит перечитать в документации перед отладкой.
Есть ещё файл ~/.claude.json — его Claude Code пишет сам, руками туда лезть не нужно. Он хранит сессию входа, конфигурацию MCP-серверов и состояние по проектам.

Если разница в синтаксисе кажется мелочью — она перестаёт ей быть, когда конфиг переезжает между машинами. Подробнее про то, как переменные окружения подхватываются оболочкой и почему export в одной сессии не виден в другой, разобрано в справочнике по переменным окружения в bash.
AGENTS.md и CLAUDE.md: как агенты читают инструкции проекта
Оба агента умеют читать текстовый файл с правилами проекта, но ищут его по-разному.
Codex работает с AGENTS.md. Глобальный файл — ~/.codex/AGENTS.override.md, а если его нет, то ~/.codex/AGENTS.md. Дальше Codex идёт от корня проекта (обычно это корень git-репозитория) вниз до текущей рабочей директории и в каждой папке проверяет сначала AGENTS.override.md, потом AGENTS.md, потом дополнительные имена файлов, если вы их задали в конфиге. Найденные файлы склеиваются сверху вниз через пустую строку: из каждой директории берётся не больше одного файла, а тот, что ближе к рабочей директории, попадает в промпт последним и потому перебивает более общие правила. Суммарный размер ограничен ключом project_doc_max_bytes — по умолчанию 32 KiB.
Claude Code исторически использует CLAUDE.md и ищет его на четырёх уровнях: управляемый файл организации, ~/.claude/CLAUDE.md, проектный ./CLAUDE.md или ./.claude/CLAUDE.md и личный ./CLAUDE.local.md, который добавляют в .gitignore. Файлы не переопределяют друг друга, а конкатенируются: содержимое выстраивается от корня файловой системы вниз к рабочей директории, а внутри каждой папки CLAUDE.local.md дописывается после CLAUDE.md. Файлы из подпапок подгружаются не на старте, а в тот момент, когда Claude открывает файл в этой подпапке.
Практически важный момент для тех, кто держит в проекте оба агента: Claude Code умеет читать AGENTS.md, а Codex CLAUDE.md не читает. По умолчанию Claude берёт AGENTS.md только тогда, когда в рабочей директории и выше нет ни CLAUDE.md, ни .claude/CLAUDE.md, ни CLAUDE.local.md. Если нужно, чтобы читались оба файла, в настройках проекта выставляют режим claude-md-and-agents-md — тогда в каждой директории сначала идёт CLAUDE.md, следом AGENTS.md. Чтение AGENTS.md напрямую доступно начиная с версии Claude Code 2.1.277.
Вывод для смешанной команды простой: держите правила в AGENTS.md, а CLAUDE.md заводите только если Claude нужны отдельные инструкции. Как устроен сам формат и что в него писать — в отдельном разборе: AGENTS.md: как написать инструкции для Codex и OpenCode.
Подключение MCP-серверов: TOML против JSON и CLI
MCP поддерживают оба агента, но описывают серверы в разных форматах.
У Codex сервер объявляется секцией [mcp_servers.<id>] в том же config.toml. Транспорт выбирается по набору ключей: command означает stdio, url — HTTP:
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
Записи можно не писать руками, а добавлять командой codex mcp — она правит тот же ~/.codex/config.toml.
У Claude Code серверы добавляют через CLI, и от выбранной области зависит, куда запись ляжет:
# только этот проект, запись в ~/.claude.json, приватно
claude mcp add my-server -- npx -y some-mcp-server
# этот проект, запись в .mcp.json в корне — файл коммитят
claude mcp add --scope project my-server -- npx -y some-mcp-server
# все проекты, запись в ~/.claude.json
claude mcp add --scope user my-server -- npx -y some-mcp-server
Двойное тире отделяет опции Claude от команды запуска сервера — без него аргументы уедут не туда. Проектный .mcp.json выглядит так:
{
"mcpServers": {
"my-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "some-mcp-server"]
}
}
}
Управляются серверы командами claude mcp list, claude mcp get <name> и claude mcp remove <name>. Разбор обоих форматов с удалёнными серверами и переменными окружения — в статье MCP в Codex CLI и OpenCode.
Права и песочница: чем агенту можно рисковать
Здесь подходы расходятся сильнее всего.
Codex оперирует режимом песочницы и политикой подтверждений. Режимы: read-only — агент читает файлы, но не правит и не запускает команды без разрешения; workspace-write — читает, правит в пределах рабочей директории и выполняет обычные локальные команды, это режим по умолчанию; danger-full-access — границы по файловой системе и сети снимаются полностью. Политика подтверждений — on-request (агент работает в песочнице и спрашивает, когда нужно выйти за её границы) или never. Задаётся это ключами sandbox_mode и approval_policy в config.toml либо флагами --sandbox и --ask-for-approval при запуске.
Claude Code вместо режимов песочницы даёт правила на уровне отдельных инструментов. В settings.json описываются списки allow, ask и deny:
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git commit *)"
],
"deny": [
"Bash(git push *)"
]
}
}
Поверх этого работают режимы разрешений, которые выбираются ключом defaultMode: acceptEdits автоматически принимает правки файлов, plan разрешает только чтение и разведку без изменения исходников, bypassPermissions пропускает запросы почти полностью — его держат для изолированных окружений вроде контейнеров.
Разница по смыслу такая: Codex ограничивает агента по периметру — что он вообще может трогать. Claude Code ограничивает по действиям — какие конкретно команды разрешены. Второй подход выигрывает, когда правила надо закоммитить и раздать команде: файл .claude/settings.json для этого и существует. Первый проще, когда вы работаете один и вам достаточно решить, пускать агента за пределы рабочей папки или нет.
Что бы вы ни выбрали, правки агента стоит читать глазами перед коммитом — git diff остаётся главным инструментом контроля.
Лицензия и открытость кода
Codex CLI открыт: репозиторий openai/codex опубликован под Apache-2.0, написан на Rust, исходники можно прочитать, собрать и пропатчить.
У Claude Code иначе. Публичный репозиторий anthropics/claude-code содержит changelog, примеры, плагины и служебные скрипты, но не исходный код CLI, и открытой лицензии в привычном смысле у него нет. Системный промпт Anthropic также не публикует — документация говорит об этом прямо и предлагает задавать поведение через CLAUDE.md или флаг --append-system-prompt.
Для большинства команд это не решающий фактор. Он становится решающим, когда инструмент нужно аудировать, собирать самостоятельно или разворачивать в закрытом контуре.

Codex или Claude Code: что выбрать под свои задачи
Когда лучше Codex CLI
Вы работаете в терминале и хотите один понятный файл конфигурации вместо иерархии. Вам нужен открытый код — аудит, сборка из исходников, патчи под себя. Вы предпочитаете думать о правах в терминах периметра: «сюда агенту можно, дальше — нет», и вас устраивает workspace-write по умолчанию. Или у вас уже лежит AGENTS.md, и вы не хотите заводить второй файл инструкций.
Когда лучше Claude Code
Агента разворачивают на команду, и правила должны жить в репозитории: .claude/settings.json коммитится, а .claude/settings.local.json остаётся личным. Нужны точечные разрешения на уровне команд, а не общий режим песочницы. В проекте уже есть AGENTS.md от другого агента — Claude Code прочитает его без переделки. Или вам важна связка с IDE: расширение для VS Code ставится отдельно и настраивается через settings.json редактора.
Выбирать «навсегда» не обязательно. Оба агента читают AGENTS.md, оба держат MCP-серверы, оба ставятся через npm — поставить второй и сравнить на своём проекте дешевле, чем читать сравнения.
Как подключить Codex и Claude Code из России без VPN
Главное ограничение в России — не выбор агента, а доступ. И OpenAI, и Anthropic блокируют запросы из российских сетей и не принимают российские карты, поэтому вопрос «Codex или Claude Code» на практике часто превращается в «что из этого вообще удастся запустить».
Обходится это подменой base URL на прокси, который принимает оплату в рублях. У PurpleSchool AI for Code один ключ работает с обоими агентами — меняются только адрес и переменная окружения.
Для Claude Code достаточно двух переменных:
export ANTHROPIC_API_KEY="ваш ключ"
export ANTHROPIC_BASE_URL="https://app.purpleschool.ru/api-v2/public/ai-proxy/anthropic"
source ~/.zshrc
Для Codex — переменная с ключом и блок провайдера в ~/.codex/config.toml из раздела про конфигурацию выше. На Windows файл лежит по пути $env:USERPROFILE.codex\config.toml.
Если настраивать руками не хочется, есть автонастройка:
npx @purpleschool/ai-for-code
Тарифы на сентябрь 2026 — 499, 1 199 и 2 499 ₽ в месяц, они различаются объёмом токенов. Пошаговые инструкции с разбором частых ошибок — в отдельных статьях: Codex в России и Claude Code в России.
Коротко
Codex CLI — открытый Rust-агент с одним TOML-конфигом и песочницей по периметру. Claude Code — проприетарный агент с иерархией JSON-настроек и правами на уровне команд, рассчитанной на командную работу. Инструкции проекта лучше держать в AGENTS.md: его читают оба. MCP поддерживают оба, но Codex описывает серверы в config.toml, а Claude Code — через claude mcp add и .mcp.json. Из России оба запускаются через прокси с рублёвой оплатой, и один ключ закрывает сразу оба.




Комментарии
0