Подключение Codex в приложении ChatGPT
Приложение ChatGPT работает только с моделями OpenAI и auto.
Модели Anthropic доступны в Codex CLI.
-
На экране входа нажмите Войти другим способом
- Не нажимайте Продолжите, чтобы войти: это вход через аккаунт ChatGPT, с ним запросы к шлюзу будут отклонены
- Если вы уже вошли через аккаунт ChatGPT, выйдите из него и войдите заново

-
Вставьте API-ключ из личного кабинета в поле API-ключ OpenAI и нажмите Продолжить
- Ключ находится в личном кабинете в блоке Подключение к Veai, кнопка Скопировать ключ. Подробнее: где взять URL и ключ
- Аккаунт OpenAI не нужен: ключ используется только для запросов к шлюзу Veai

-
Откройте настройки приложения (
Cmd/Ctrl + ,) → раздел Конфигурация → нажмите Открыть config.toml
-
В открывшемся файле уже есть настройки самого приложения — не удаляйте их. Добавьте в самое начало файла три строки:
model = "auto"model_provider = "veai"model_catalog_json = "./model-catalog.json" -
Добавьте в самый конец того же файла блок ниже:
[model_providers.veai]name = "veai"base_url = "https://api.veai.ru/openai/api"wire_api = "responses"requires_openai_auth = true- В поле
base_urlуже указан OpenAI-совместимый URLhttps://api.veai.ru/openai/api
- В поле
-
Создайте рядом с
config.tomlфайлmodel-catalog.jsonсо списком моделей VeaiСкачать готовый файл
model-catalog.json— или скопируйте его содержимое вручную:Содержимое файла
model-catalog.json{"models": [{"slug": "auto","id": "auto","display_name": "Veai Auto","description": "Автоматический выбор модели: высокое качество при максимальной доступности","context_window": 372000,"max_output_tokens": 32768,"base_instructions": "default","shell_type": "default","visibility": "list","supported_in_api": true,"priority": 1,"support_verbosity": false,"truncation_policy": {"mode": "bytes","limit": 10000},"experimental_supported_tools": [],"supported_reasoning_levels": [{"effort": "low","description": "low"},{"effort": "medium","description": "medium"},{"effort": "high","description": "high"},{"effort": "xhigh","description": "xhigh"}]},{"slug": "OpenAI/gpt-5.6-sol","id": "OpenAI/gpt-5.6-sol","display_name": "OpenAI GPT-5.6 Sol","description": "Самое высокое качество среди моделей OpenAI","context_window": 372000,"max_output_tokens": 32768,"base_instructions": "default","shell_type": "default","visibility": "list","supported_in_api": true,"priority": 2,"support_verbosity": false,"truncation_policy": {"mode": "bytes","limit": 10000},"experimental_supported_tools": [],"supported_reasoning_levels": [{"effort": "low","description": "low"},{"effort": "medium","description": "medium"},{"effort": "high","description": "high"},{"effort": "xhigh","description": "xhigh"}]},{"slug": "OpenAI/gpt-5.6-terra","id": "OpenAI/gpt-5.6-terra","display_name": "OpenAI GPT-5.6 Terra","description": "Баланс качества и скорости среди моделей OpenAI","context_window": 372000,"max_output_tokens": 32768,"base_instructions": "default","shell_type": "default","visibility": "list","supported_in_api": true,"priority": 3,"support_verbosity": false,"truncation_policy": {"mode": "bytes","limit": 10000},"experimental_supported_tools": [],"supported_reasoning_levels": [{"effort": "low","description": "low"},{"effort": "medium","description": "medium"},{"effort": "high","description": "high"},{"effort": "xhigh","description": "xhigh"}]},{"slug": "OpenAI/gpt-5.6-luna","id": "OpenAI/gpt-5.6-luna","display_name": "OpenAI GPT-5.6 Luna","description": "Самая быстрая и дешёвая среди моделей OpenAI","context_window": 372000,"max_output_tokens": 32768,"base_instructions": "default","shell_type": "default","visibility": "list","supported_in_api": true,"priority": 4,"support_verbosity": false,"truncation_policy": {"mode": "bytes","limit": 10000},"experimental_supported_tools": [],"supported_reasoning_levels": [{"effort": "low","description": "low"},{"effort": "medium","description": "medium"},{"effort": "high","description": "high"},{"effort": "xhigh","description": "xhigh"}]},{"slug": "OpenAI/gpt-5.5","id": "OpenAI/gpt-5.5","display_name": "OpenAI GPT-5.5","description": "Модель OpenAI прошлого поколения","context_window": 272000,"max_output_tokens": 16384,"base_instructions": "default","shell_type": "default","visibility": "list","supported_in_api": true,"priority": 5,"support_verbosity": false,"truncation_policy": {"mode": "bytes","limit": 10000},"experimental_supported_tools": [],"supported_reasoning_levels": [{"effort": "low","description": "low"},{"effort": "medium","description": "medium"},{"effort": "high","description": "high"},{"effort": "xhigh","description": "xhigh"}]}]}Чтобы добавить модель, скопируйте любой блок и подставьте своё значение
slug.- Поле
priorityзадаёт порядок в списке выбора модели: чем меньше число, тем выше модель в списке - Полный список моделей:
https://api.veai.ru/openai/api/models - Если после обновления Codex появилась ошибка
failed to parse model_catalog_json, добавьте в каждую модель поле, указанное в тексте ошибки
- Поле
-
Полностью закройте и снова откройте приложение
- Настройки считываются только при запуске
-
В правом нижнем углу поля ввода нажмите кнопку с названием модели, затем — строку с названием модели и стрелкой
›в появившемся окне
-
Выберите модель из списка
Veai Auto– автоматический выбор модели: высокое качество при максимальной доступностиOpenAI GPT-5.6 Sol– самое высокое качество среди моделей OpenAIOpenAI GPT-5.6 Terra– баланс качества и скорости среди моделей OpenAIOpenAI GPT-5.6 Luna– самая быстрая и дешёвая среди моделей OpenAIOpenAI GPT-5.5– модель OpenAI прошлого поколения- Если в списке нет моделей Veai, значит Codex не прочитал каталог: проверьте, что строки из шага 4 стоят в начале файла, а строки из шага 5 находятся в конце файла

-
Отправьте любое сообщение и убедитесь, что модель отвечает
- Если появляется ошибка
404 Not Found, значит ключ неверный или отозванный. Проверьте, что вы вошли по API-ключу, а не через аккаунт ChatGPT. Если это не помогло, перевыпустите ключ в личном кабинете (ссылка Перевыпустить в блоке Подключение к Veai) и вставьте новый
- Если появляется ошибка
Запросы из Codex расходуют минуты подписки Veai так же, как запросы из плагина. Остаток виден в личном кабинете.
В случае ошибок см. Значения ошибок.