Миграция с Claude Code на Codex (2026): 12 конфигов, 1 тупик
Codex 0.142 /import переносит почти всю конфигурацию Claude Code. Разбор всех 12 областей: что переносится, что ломается, единственный тупик и его обход.
Миграция с Claude Code на Codex — это в основном работа по переименованию и переформатированию, а в Codex теперь есть импортёр в одну команду, который делает бóльшую часть за вас. Проблема кроется в том, что он оставляет за бортом, и один из этих пунктов вообще не является файлом конфигурации.
Вердикт по миграции за 30 секунд
Почти всю свою настройку Claude Code можно перенести в Codex примерно за 20 минут. Вот решение ещё до того, как вы начнёте прокручивать:
| Вопрос | Ответ |
|---|---|
| Можно ли перенести бóльшую часть конфига? | Да. 9 из 12 областей переносятся или чисто переформатируются. |
| Самый быстрый путь? | codex → /import (Codex 0.140+), затем вручную поправить 3 пункта. |
| Что переносится автоматически? | Файлы памяти, MCP-серверы, skills, slash-команды, кастомные эндпоинты. |
| Что требует ручной работы? | Модель разрешений, формат hooks, обёртки subagent. |
| Единственный тупик? | Модели Anthropic Claude. Ванильный Codex работает только с OpenAI. |
| Обход тупика? | Добавить шлюз как model_provider и продолжать запускать Claude внутри Codex. |
Версии, на которых тестировалось это руководство: Codex CLI 0.142.5 (1 июля 2026) и Claude Code 2.1.178. Если у вас Codex постарше — сначала обновитесь, потому что команды /import до 0.140.0 не существовало.
Что можно перенести уже сегодня (и что нельзя)
Переносится почти всё, потому что оба инструмента решают одну и ту же задачу разными форматами файлов. Claude Code опирается на JSON (settings.json, .mcp.json) и Markdown (CLAUDE.md, .claude/agents/*.md). Codex опирается на один TOML-файл (~/.codex/config.toml) плюс AGENTS.md. Миграция — это по большей части перевод между этими двумя диалектами.
Что можно перенести:
- Инструкции репозитория и личные (содержимое
CLAUDE.md) - MCP-серверы, дословно команду и аргументы
- Skills, которые уже следуют общему соглашению Agent Skills
- Slash-команды и переиспользуемые промпты
- Кастомные API-эндпоинты и ключи
Что нельзя перенести без обходного пути:
- Список разрешений Claude Code по каждой команде, у которого нет прямого аналога в Codex
- Событие hook
ConfigChange(у Codex естьPreCompact/PostCompact, но нет ничего, что срабатывало бы на изменение файла конфигурации) - Стили вывода, которые Codex не моделирует
- Сами модели Anthropic — это и есть настоящий блокер и причина последнего раздела
Вот полная карта областей. Сохраните эту таблицу; это вся миграция на одном экране.
| # | Claude Code | Аналог в Codex | Вердикт |
|---|---|---|---|
| 1 | CLAUDE.md память | AGENTS.md (или fallback-имя файла) | Переносится |
| 2 | .mcp.json (JSON) | [mcp_servers.*] в config.toml | Переносится, переформатировать |
| 3 | .claude/skills/ | Codex skills ([[skills.config]]) | Переносится |
| 4 | .claude/commands/ | Codex slash-команды / промпты | Переносится, переписать |
| 5 | .claude/agents/ (Markdown) | файлы .codex/agents/*.toml | Переформатируется |
| 6 | settings.json (JSON) | config.toml + profiles (TOML) | Переформатируется |
| 7 | permissions.allow/ask/deny | approval_policy + sandbox_mode | Ломается |
| 8 | hooks (PreToolUse, Stop, …) | [[hooks.*]] в config.toml | Переформатируется |
| 9 | hook ConfigChange | нет | Нет аналога |
| 10 | эндпоинт ANTHROPIC_BASE_URL | [model_providers.*] | Переносится |
| 11 | outputStyle | нет | Нет аналога |
| 12 | Модели Anthropic Claude | только модели OpenAI | Тупик (см. обход) |
Строки 9 и 11 косметические. По outputStyle вы скучать не будете, а ConfigChange важен только если вы построили автоматизацию, реагирующую на изменение файла конфигурации в середине сессии. Строка 12 — та, что останавливает людей, и у неё есть чистый обход, который большинство руководств по миграции пропускают.
Рамка для решения: когда мигрировать (и когда остаться)
Мигрируйте, когда ваша работа имеет форму задач и вы хотите более жёсткого sandboxing; оставайтесь на Claude Code, когда ваша работа имеет форму разговора и завязана на hooks. Два инструмента несут разные ментальные модели, и различия в конфигурации следуют из этого.
Когда мигрировать
- Вы запускаете агентов неинтерактивно в CI и хотите, чтобы
read-onlyилиworkspace-writesandbox был позицией по умолчанию. - Ваша команда хочет один закоммиченный
config.tomlс profiles по уровням риска вместоsettings.jsonи кучи переопределенийsettings.local.json. - Вы хотите видеть текущие модели Codex от OpenAI (
gpt-5.5) как драйвер по умолчанию. Более стараяgpt-5.3-codexбыла выведена из списка выбираемых пользователем моделей Codex 26.05.2026, так что выбирайтеgpt-5.5илиgpt-5.4.
Когда НЕ мигрировать
- Вы зависите от hooks
ConfigChangeили стилей вывода. Им в Codex места нет, так что закладывайте переработку или оставайтесь на месте. - Весь ваш рабочий процесс — это долгая интерактивная сессия парного программирования. Разговорная модель Claude Code подходит для этого лучше, чем цикл «задача-и-ревью» у Codex.
- У вас большой, вручную настроенный список разрешений. Грубые уровни sandbox у Codex покажутся топорными, а перенос смысла требует реального обдумывания (см. Шаг 5).
Правило остановки
Если ваша единственная цель — попробовать модели Codex на существующем репозитории, вам вообще не нужно мигрировать конфигурацию. Направьте Codex на свой репозиторий, запустите /import и остановитесь. Остальная часть этого руководства — для тех, кто делает Codex своим основным инструментом.
Системные требования
Прежде чем трогать конфигурацию, подтвердите четыре предпосылки ниже. Устаревший Codex — самая частая причина, по которой /import и блоки [features] молча ничего не делают.
- Codex CLI 0.140.0 или новее. Проверьте через
codex --version. Команда/importпоявилась в 0.140.0; это руководство тестировалось на 0.142.5. - Ваш существующий проект Claude Code с нетронутыми каталогом
.claude/и файломCLAUDE.md. Не удаляйте его, пока миграция не будет проверена. - API-ключ для того провайдера, который будет драйвером Codex. По умолчанию OpenAI или ключ шлюза, если вы сохраняете модели Claude.
- Права на запись в
~/.codex/. Codex читает~/.codex/config.tomlпри каждом вызове, а в доверенных проектах —.codex/config.tomlв корне репозитория.
Путь миграции от начала до конца выглядит так:
flowchart LR
A[Audit CLAUDE.md + settings.json] --> B[Run codex /import]
B --> C[Review conflict report]
C --> D[Hand-fix permissions + hooks]
D --> E[Add model_provider for Claude models]
E --> F[Test with a read-only profile]
Пошагово: сопоставление каждой области конфигурации
Сначала запустите автоматический импортёр, затем пройдитесь по пяти областям, которые он не может полностью обработать. Не пропускайте ручные проходы; импортёр честно сообщает о том, что оставляет за бортом, но за бортом он всё же оставляет.
Шаг 1: Запустите импортёр
Запустите Codex в своём проекте и импортируйте.
cd my-project
codex
# then, inside the session:
/import
В Codex 0.140 добавили /import для выборочного подтягивания setup, конфигурации проекта и недавних чатов из Claude Code — согласно журналу изменений OpenAI Codex. Выберите нужные вам области. Ожидаемый результат: заполненный ~/.codex/config.toml, черновик AGENTS.md и короткий отчёт со списком всего, что было пропущено или помечено как конфликт.
Шаг 2: Инструкции, CLAUDE.md в AGENTS.md
Codex читает AGENTS.md, а не CLAUDE.md. Если импортёр ещё не создал его, либо переименуйте файл, либо скажите Codex продолжать читать старое имя.
# ~/.codex/config.toml
project_doc_fallback_filenames = ["AGENTS.md", "CLAUDE.md"]
project_doc_max_bytes = 32768
Ожидаемый результат: ваши инструкции уровня репозитория загружаются в контекст Codex при следующем запуске. Содержимое переносится без изменений; отличаются только имя файла и путь загрузки — именно поэтому соглашение AGENTS.md вообще существует между инструментами.
Шаг 3: MCP-серверы, JSON в TOML
MCP-процессы идентичны. Меняется только форма объявления. Запись .mcp.json из Claude Code вроде такой:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
}
}
}
превращается в TOML-таблицу в ~/.codex/config.toml:
[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
Ожидаемый результат: codex выводит инструменты MCP github при запуске. Если серверу нужны переменные окружения, добавьте их inline: env = { "GITHUB_TOKEN" = "..." }. Оба транспорта переносятся: Codex принимает те же STDIO-серверы на основе команд, что вы запускали в Claude Code, а также берёт потоковые HTTP-серверы в той же таблице, так что удалённо размещённый MCP-эндпоинт переезжает без запуска локального процесса.
Шаг 4: Subagents в .codex/agents/
Claude Code хранит subagents как Markdown в .claude/agents/. Codex хранит каждый subagent как отдельный TOML-файл, один файл на агента, в ~/.codex/agents/ (личные) или .codex/agents/ (в рамках проекта). Subagents включены по умолчанию, так что переключать флаг не нужно.
# .codex/agents/reviewer.toml
name = "reviewer"
description = "Reviews diffs for correctness and style"
developer_instructions = """
Review the diff for correctness and style. Cite file and line for each issue.
"""
Ожидаемый результат: роль reviewer становится доступна через рабочий процесс subagent в Codex, который Codex вызывает только тогда, когда вы явно об этом просите. Тело промпта из старого Markdown-файла переезжает в developer_instructions; меняется именно обёртка. Если у вас было много subagents, это самый утомительный ручной проход, но механический.
Шаг 5: Разрешения в Sandbox и Approval
Это область, которая по-настоящему ломается, потому что два инструмента моделируют безопасность по-разному. Claude Code использует список разрешений по каждой команде с glob-правилами. Codex использует две грубые ручки: файловый sandbox и политику одобрения. Чистого сопоставления один-к-одному нет, так что вы переносите смысл, а не правила.
| Claude Code | Смысл в Codex | Настройка Codex |
|---|---|---|
allow: ["Bash(npm run test *)"] | запускать команды в репозитории без запроса | sandbox_mode = "workspace-write", approval_policy = "on-request" |
ask: ["Bash(python *)"] | спрашивать перед рискованными командами | approval_policy = "on-request" |
deny: ["Read(./.env)"] | блокировать доступ за пределами рабочей области | sandbox_mode = "workspace-write" (блокирует запись вне cwd) |
| Plan mode | смотреть, не трогать | sandbox_mode = "read-only" |
--dangerously-skip-permissions | полная автономия | approval_policy = "never", sandbox_mode = "danger-full-access" |
# ~/.codex/config.toml, a sane default
approval_policy = "on-request"
sandbox_mode = "workspace-write"
Ожидаемый результат: Codex свободно работает внутри репозитория и спрашивает перед тем, как тронуть что-либо за его пределами или выйти в сеть. Гранулярный контроль по каждой команде, который был у вас в Claude Code, не выживает; если вы полагались на длинный, точный список разрешений, примите, что модель Codex по замыслу топорнее. Полный набор опций — в справочнике по конфигурации Codex.
Шаг 6: Hooks
В Codex теперь есть hooks, они включены по умолчанию и покрывают большинство событий Claude Code. Вы объявляете их как блоки массива таблиц в config.toml; чтобы отключить всю систему, вы бы задали [features] hooks = false.
# ~/.codex/config.toml
[[hooks.PreToolUse]]
matcher = "^Bash$" # same idea as Claude Code's PreToolUse matcher
[[hooks.PreToolUse.hooks]]
type = "command"
command = "$(git rev-parse --show-toplevel)/.codex/hooks/pre_tool_use.sh"
Ожидаемый результат: PreToolUse, PostToolUse, SessionStart, Stop и даже PreCompact/PostCompact срабатывают так же, как в Claude Code, как только вы переведёте JSON-обработчик в TOML. Единственный пробел — ConfigChange, у которого нет события в Codex, так что любая автоматизация, которую вы построили для реакции на изменение файла конфигурации в середине сессии, — это единственная часть вашей настройки hooks, которая не переезжает. Чтобы освежить в памяти, что делали эти hooks в Claude Code, см. наше руководство по hooks, subagents и skills в Claude Code.
У чего нет аналога: модели Claude (и обход)
Единственный шаг миграции без нативного ответа — сохранение ваших моделей Claude, потому что ванильный Codex авторизуется в OpenAI и запускает модели OpenAI вроде gpt-5.5 и gpt-5.4. Нет встроенного переключателя, который выбирает Claude Opus или Sonnet. Если вы мигрировали на Codex ради его sandbox и рабочего процесса, но всё ещё хотите, чтобы Opus писал ваш код, вам нужен мост.
Мост — это кастомный model_provider. Codex будет разговаривать с любым OpenAI-совместимым шлюзом, так что вы регистрируете один и направляете profile на модель Claude. Добавьте провайдера в ~/.codex/config.toml:
[model_providers.ofox]
name = "ofox.ai gateway"
base_url = "https://api.ofox.ai/v1"
env_key = "OFOX_API_KEY"
wire_api = "responses"
requires_openai_auth = false
Две детали, на которых люди спотыкаются. Во-первых, задайте wire_api = "responses". Codex убрал поддержку старого протокола chat в феврале 2026, так что провайдер, оставленный на wire_api = "chat", теперь падает с ошибкой при запуске; ofox обслуживает Responses-совместимый эндпоинт под той же базой URL /v1, так что responses — это то, что действительно подключается. Во-вторых, задайте requires_openai_auth = false, чтобы Codex перестал ожидать префикс ключа sk-. Затем создайте файл profile по адресу ~/.codex/claude.config.toml:
model = "anthropic/claude-opus-4.8"
model_provider = "ofox"
Запускайте его через codex --profile claude. Теперь цикл задач и sandbox Codex драйвят anthropic/claude-opus-4.8 от Anthropic, а замена на model = "openai/gpt-5.5" во втором profile позволяет провести A/B двух вариантов без смены авторизации. Пошаговое руководство по блоку провайдера, включая ретраи и заголовки, есть в нашем разборе кастомных провайдеров моделей в Codex, а полная документация ofox покрывает настройку ключа. Это единственная область миграции, где шлюз — не удобство, а единственный способ сохранить то, ради чего вы пришли.
Частые ошибки при миграции (и их исправления)
Шесть сбоев покрывают почти любую застрявшую миграцию. Паттерн каждый раз один и тот же: допущение Claude Code, которое Codex не разделяет.
| Симптом | Причина | Исправление |
|---|---|---|
Codex игнорирует ваш CLAUDE.md | Codex читает AGENTS.md | Переименуйте его или задайте project_doc_fallback_filenames |
Кастомный провайдер возвращает 401 | Codex ожидает ключ sk- | Добавьте requires_openai_auth = false |
Codex падает при запуске: wire API chat устарел | wire_api = "chat" был убран в феврале 2026 | Задайте wire_api = "responses" |
| Subagents ничего не делают | Нет файла агента, или вы его так и не вызвали | Добавьте файл .codex/agents/NAME.toml; Codex запускает subagents только по явному запросу |
| Hooks никогда не срабатывают | Неверное имя события или regex matcher | Исправьте имя события / matcher; hooks включены по умолчанию, так что флаг не нужен |
| Команда, которую разрешал ваш allowlist, теперь останавливается | Sandbox строже старого правила | Расширьте sandbox_mode или используйте approval_policy = "on-request" |
Если .codex/config.toml проекта полностью игнорируется, проверьте, что проект помечен как доверенный. Codex загружает конфигурацию уровня проекта только в доверенных каталогах и не даст файлу проекта переопределить выбор провайдера, авторизации или profile.
Миграция команды / нескольких разработчиков
Для команды миграция чище, чем в одиночном случае, потому что Codex схлопывает два файла Claude Code в один закоммиченный конфиг. В Claude Code вы поставляли .claude/settings.json для команды и давали каждому разработчику держать gitignored .claude/settings.local.json. В Codex вы коммитите единый .codex/config.toml в корне репозитория и даёте каждому разработчику выбирать profile.
| Аспект | Claude Code | Codex |
|---|---|---|
| Общий конфиг команды | .claude/settings.json (закоммичен) | .codex/config.toml (закоммичен, доверенные репозитории) |
| Личные переопределения | .claude/settings.local.json | файл личного profile в ~/.codex/ |
| Общие инструкции | CLAUDE.md | AGENTS.md |
| Позиция риска на запуск | список разрешений | --profile strict против --profile fast |
Выигрыш команды — тот же трюк со шлюзом из прошлого раздела, применённый один раз. Зарегистрируйте один model_provider в закоммиченном конфиге, раздайте каждому разработчику одну и ту же схему OFOX_API_KEY через ваш менеджер секретов — и вся команда маршрутизируется через один эндпоинт с одним биллингом, будь то openai/gpt-5.5 или anthropic/claude-opus-4.8. Эта маршрутизация через единый эндпоинт и есть конкретная причина, почему общий шлюз побеждает отдельные ключи OpenAI на каждого разработчика; детали конфигурации живут в нашем подробном разборе config.toml, а базовые основы установки — в руководстве по установке Codex.
Миграция вашего инструментария на Codex не должна означать отказ от моделей, ради которых вы мигрировали, и с одним блоком провайдера этого не происходит.
Продвинутое: Profiles для CI, локальной работы и ревью
Profiles — это то, где Codex окупает усилия по миграции, потому что они заменяют привычку Claude Code жонглировать settings.json против settings.local.json. Profile — это отдельный файл в ~/.codex/, и вы выбираете его на запуск через --profile. Глобально ничего не меняется, пока вы сами так не решите.
Создайте три файла для трёх позиций риска:
# ~/.codex/ci.config.toml
model = "gpt-5.5"
approval_policy = "never"
sandbox_mode = "read-only"
Запускайте автоматическое ревью в CI через codex --profile ci — оно может читать всё, но ничего не менять. Держите local.config.toml на workspace-write для повседневной работы и claude.config.toml из прошлого раздела, который переключает драйвер на anthropic/claude-opus-4.8, когда вам нужна модель Anthropic для сложной задачи. Базовый config.toml держит общие части — провайдеров, MCP-серверы и hooks; каждый profile переопределяет только те два-три ключа, что отличаются. Именно эта дисциплина одного файла делает настройку Codex более понятной, чем стек областей действия Claude Code, — как только миграция позади.
FAQ
Можно ли использовать модели Claude в Codex CLI? Нет, если речь о ванильном Codex, который работает только с OpenAI. Зарегистрируйте OpenAI-совместимый шлюз как model_provider и направьте profile на anthropic/claude-opus-4.8. Это единственная область без нативного аналога.
Читает ли Codex CLI файл CLAUDE.md? По умолчанию нет. Он читает AGENTS.md. Добавьте project_doc_fallback_filenames = ["AGENTS.md", "CLAUDE.md"], чтобы сохранить старый файл, или переименуйте его.
Как импортировать настройки Claude Code в Codex? Запустите codex, затем /import. В Codex 0.140 добавили выборочный импортёр для setup, конфигурации проекта и недавних чатов. Он делает бóльшую часть работы и сообщает об остальном.
Есть ли в Codex CLI hooks, как в Claude Code? Да, и они включены по умолчанию. Объявляйте блоки [[hooks.Event]] для событий, включая PreToolUse, PostToolUse, SessionStart, Stop, PreCompact и PostCompact. Единственный hook из Claude Code без аналога — ConfigChange.
Могут ли Claude Code и Codex использовать одни и те же MCP-серверы? Да. MCP-процессы идентичны. Меняется только объявление: с JSON в .mcp.json на TOML под [mcp_servers.NAME].
Нужно ли переписывать мои subagents из Claude Code под Codex? Вы переобъявляете, а не переписываете. Тело промпта переносится; обёртка переезжает с Markdown в .claude/agents/ на отдельный TOML-файл в .codex/agents/. Subagents включены по умолчанию, так что флаг для активации не нужен.
Файл AGENTS.md — это то же самое, что CLAUDE.md? Задача та же, имя другое. AGENTS.md — кросс-инструментальное соглашение; CLAUDE.md — собственный файл памяти Claude Code. Содержимое переносится напрямую.
Источники, проверенные для этого обновления
- Справочник по конфигурации OpenAI Codex, проверено 03.07.2026. Источник по
model_providers,approval_policy,sandbox_mode,[features]и fallback дляAGENTS.md. - Журнал изменений OpenAI Codex, проверено 03.07.2026. Подтверждает, что
/importиз Claude Code появился в 0.140.0; последний релиз 0.142.5. - Справочник по hooks OpenAI Codex, проверено 03.07.2026. Подтверждает, что hooks включены по умолчанию и что
PreCompact/PostCompact— поддерживаемые события. - Справочник по настройкам Claude Code, проверено 03.07.2026. Источник по
settings.json,permissions, событиям hooks и.mcp.json. - Снимок каталога моделей ofox.ai, проверено 03.07.2026. Подтверждает
anthropic/claude-opus-4.8,anthropic/claude-sonnet-5,openai/gpt-5.5и базовый URLhttps://api.ofox.ai/v1.


