Инструменты

Codex CLI

CLI-агент OpenAI для задач в терминале. Подключается по эндпоинту /v1/responses отдельным профилем — свой ключ и модели из каталога, основная настройка Codex не меняется.

Codex CLI говорит только по OpenAI Responses API: с февраля 2026 wire_api = "chat" — ошибка запуска. Шлюз ApiMira отвечает на POST /v1/responses напрямую, поэтому Codex подключается без переводчиков: провайдер в config.toml плюс отдельный файл профиля, а обычный codex с прежними настройками продолжает работать как раньше.

Что понадобится

Base URL
https://apimira.com/v1
API-ключ
am-ВАШ_КЛЮЧСоздаётся в кабинете, раздел «API-ключи». Полное значение показывается один раз.
Model ID
google/gemini-3.7-flashКопируется из каталога целиком, вместе с префиксом до «/».

Как подключить

  1. 1В ~/.codex/config.toml добавьте таблицу [model_providers.apimira] из первой вкладки: base_url — адрес шлюза вместе с /v1, env_key — имя переменной окружения с ключом, wire_api = "responses". Остальное содержимое файла не трогайте.
  2. 2Рядом создайте файл профиля ~/.codex/apimira.config.toml из второй вкладки: model_provider = "apimira", model — ID из каталога, web_search = "disabled" и multi_agent = false. Codex 0.134 и новее держит профили отдельными файлами; таблица [profiles.apimira] внутри config.toml при --profile даёт ошибку.
  3. 3Строка web_search = "disabled" обязательна: встроенный веб-поиск OpenAI шлюз не исполняет и без неё ответит 400 с этой же подсказкой. multi_agent = false убирает из каждого запроса инструменты саб-агентов — около 1,7 тысячи токенов; оставьте true, только если саб-агентами Codex пользуетесь.
  4. 4Положите ключ в переменную окружения APIMIRA_API_KEY (третья вкладка): export в macOS и Linux, $env: или setx в PowerShell. Ключ создаётся в кабинете и показывается один раз; в файлы настроек его не вписывайте.
  5. 5Запустите codex --profile apimira. Агентный режим работает: чтение и правка файлов, команды в терминале, многоходовые диалоги, потоковый вывод. Без --profile Codex по-прежнему использует прежнего провайдера.
[model_providers.apimira]
name = "ApiMira"
base_url = "https://apimira.com/v1"
env_key = "APIMIRA_API_KEY"
wire_api = "responses"

Рекомендуемая модель — openai/gpt-5.3-codex: промпты и инструменты Codex заточены под модели GPT, а у этой в каталоге есть ставка кэш-входа — Codex шлёт всю историю в каждом запросе, и повторяющееся начало считается по льготной ставке. Модели других семейств с вызовом инструментов тоже подходят — например anthropic/claude-sonnet-4.6. Историю диалога хранит сам Codex (store = false, полный input каждый ход), поэтому previous_response_id шлюз отклоняет с кодом unsupported_parameter, а получить или удалить ответ по id нельзя — 404. Встроенные инструменты OpenAI (web_search, file_search, code_interpreter, tool_search, custom) шлюз не исполняет и отвечает на них 400 с именем типа; функции, которые исполняет сам Codex, работают полностью. Поля reasoning, include, prompt_cache_key, metadata, parallel_tool_calls, store и text.verbosity принимаются и до модели не доходят — это телеметрия и подсказки OpenAI; text.format кроме text и input_file отвечают 400 unsupported_parameter. Картинки работают: часть input_image со ссылкой data:image/png;base64,… (PNG, JPEG или WebP, до 5 МБ каждая, до 50 штук на запрос) доезжает до модели, в том числе картинка из результата инструмента — её шлюз передаёт модели отдельным пользовательским ходом. Значение detail original приравнивается к high; внешние ссылки шлюз не скачивает, а модель без пометки «Видит картинки» отвечает ошибкой unsupported_capability. Предупреждение «Model metadata for … not found. Defaulting to fallback metadata» в начале каждой сессии — норма: наших ID Codex не знает и берёт настройки по умолчанию. Потолок ответа: Codex не задаёт max_output_tokens, поэтому под каждый запрос резервируется вход плюс 32 000 токенов ответа — или столько, сколько покрывает остаток баланса (для gpt-5.3-codex около 0,09 $ на запрос). При балансе ниже этой суммы длинный ответ обрезается по балансу (response.incomplete), Codex повторяет ход до пяти раз и упирается в 402 — держите на балансе запас в несколько таких резервов. Резервы складываются только при параллельных саб-агентах (multi_agent = true). На Windows неинтерактивный codex exec без настроенной песочницы блокирует запись в файлы, а значение sandbox = "elevated" в секции [windows] config.toml (его ставит десктоп-приложение Codex) требует подтверждения UAC и в сессии без экрана падает при запуске хелпера; для codex exec ставьте sandbox = "unelevated" и запускайте с --sandbox workspace-write. В интерактивном codex это решают подтверждения действий. Правка файлов с кириллицей через apply_patch в PowerShell может уходить в повторные попытки — ход дорожает.

Вызов функций поддерживается, поэтому агентные режимы работают. Строгий JSON-режим (response_format) и снятый формат functions шлюз отвергает ошибкой unsupported_parameter — параметр не игнорируется молча. Картинки на вход принимаются у моделей с пометкой «Видит картинки» на странице «Модели»: часть content типа image_url со ссылкой вида data:image/png;base64,… (PNG, JPEG или WebP, до 5 МБ каждая, до 50 штук на запрос). Внешние ссылки шлюз не скачивает, а модель без этой пометки отвечает ошибкой unsupported_capability — обе ошибки называют причину прямо.