CLI для агентов, маршрутизации и интеграций
Эти команды управляют политикой агентов и routing’ом, проверяют живой прокси и подключают поддерживаемых клиентов к opencodex.
Политика агентов
Заголовок раздела «Политика агентов»ocx agent <status|injection|effort|subagents|fallback|sidecar> ...
Заголовок раздела «ocx agent <status|injection|effort|subagents|fallback|sidecar> ...»Управляйте headless-ростером multi-agent, effort cap’ами, prompt injection, fallback’ом и
настройками sidecar’ов. Для просмотра текущей политики используйте status. Как соотносятся
surface mode, delegation, effort и fallback, описано в
Поверхности подагентов.
ocx agent subagents set ark/model-a,openai/gpt-5.5ocx agent sidecar web --enabled off--enabled off — тот же переключатель, что и строка Выкл. (Off) в дашборде: OpenCodex
перестаёт запускать сайдкар, а интеграция Codex записывает web_search = "disabled" в
~/.codex/config.toml, что и позволяет использовать MCP-сервер как единственный путь поиска.
--enabled on снова удаляет эту строку. Когда сохранение действительно переключает
состояние, команда сообщает о записи на стороне Codex (codexWebSearch в --json,
иначе завершающая строка Codex config:) и предлагает ocx sync, если запись не
удалась. Флаг работает и для vision.
ocx v2 <status|on|off|mode <v1|default|v2>|threads <n>>
Заголовок раздела «ocx v2 <status|on|off|mode <v1|default|v2>|threads <n>>»Управляйте feature flag’ом Codex multi_agent_v2 и трёхсостоянием multi-agent surface mode.
| Подкоманда | Действие |
|---|---|
status (default) |
Показать текущий v2 flag, multi-agent mode и thread concurrency. |
on |
Включить feature multi_agent_v2 и пересинхронизировать каталог. |
off |
Выключить multi_agent_v2 и пересинхронизировать каталог. |
mode v1 |
Принудительно перевести все модели на v1, отключить native v2 и сохранить текущий thread limit. |
mode default |
Уважать upstream pin’ы surface у моделей. |
mode v2 |
Принудительно перевести все модели на v2, включить native v2 и сохранить текущий thread limit. |
threads <n> |
Задать активный v1/v2 thread limit как целое число не меньше 1. |
ocx v2 statusocx v2 mode v1ocx v2 mode defaultocx v2 onocx v2 threads 16Подкоманда mode записывает multiAgentMode в конфиг opencodex и заново синхронизирует каталог
Codex. При переходах mode и feature flag текущий числовой thread limit переносится между
допустимыми ключами Codex для v1/v2; если переход не удался, исходный config.toml
восстанавливается. Изменения применяются к новым сессиям Codex, а уже запущенные сохраняют свою
закреплённую surface.
Combo routing
Заголовок раздела «Combo routing»ocx combo <list|show|set|remove> ... · ocx route combo ...
Заголовок раздела «ocx combo <list|show|set|remove> ... · ocx route combo ...»Управляйте virtual-моделями combo с failover и round-robin. ocx route combo — это иерархический
alias; на данный момент combo — единственный поддерживаемый routing-resource. Цели используют
форму provider/model[:weight],provider/model[:weight].
ocx combo listocx route combo set reliable --targets ark/model-a:2,openai/gpt-5.5О поведении маршрутизации и рекомендациях по конфигурации см. Combos.
Observability и debug
Заголовок раздела «Observability и debug»ocx observe <logs|usage|storage|memory|debug|claude-inbound|injection> ...
Заголовок раздела «ocx observe <logs|usage|storage|memory|debug|claude-inbound|injection> ...»Проверяйте proxy-request’ы, usage, storage, memory и debug-data. Прямые alias’ы:
| Алиас | Эквивалентный ресурс |
|---|---|
| `ocx logs [filters] [–follow] [–json | –jsonl]` |
| `ocx usage [–range <today | 1d |
ocx storage [--json] |
ocx observe storage |
ocx memory [--json] |
ocx observe memory |
ocx observe usage --range 30d --jsonЕсли часть записей нельзя учесть, человекочитаемый вывод показывает предупреждение, даже если нет читаемых строк. Отображаемые итоги учитывают только читаемые записи. Если фильтр не находит читаемых совпадений, вместо строк итогов выводятся предупреждение и подсказки; пропущенные записи могут содержать совпадения. --json сохраняет диагностику usageIncomplete и её причину из ответа.
ocx debug <provider|usage|injection|claude> <on|off|status|reset|logs [-f]>
Заголовок раздела «ocx debug <provider|usage|injection|claude> <on|off|status|reset|logs [-f]>»Прочитать или изменить runtime debug-override’ы через management API работающего прокси.
ocx debug provider on|off|status|resetocx debug provider logs [-f|--follow]ocx debug usage on|off|status|resetocx debug usage logs [-f|--follow]Без указания scope ocx debug печатает usage и, если прокси остановлен, environment-default’ы
для следующего запуска. Provider debug по умолчанию берётся из OCX_DEBUG=1
(legacy OCX_DEBUG_FRAMES=1 тоже работает); usage debug — из OPENCODEX_USAGE_DEBUG=1.
Доступ к API
Заголовок раздела «Доступ к API»ocx access <key|endpoints|models|test> ...
Заголовок раздела «ocx access <key|endpoints|models|test> ...»Просматривайте список API-ключей доступа к OpenCodex, внешние конечные точки и модели. ocx api-key — псевдоним семейства команд ocx access key.
Создание ключа и начало ротации возвращают секрет в открытом виде, показываемый только один раз, как в текстовом формате, так и в JSON. Агент должен передать эти действия человеку, который выполнит их вручную в терминале вне сеанса агента. Не запрашивайте сам ключ в чате: нужны только подтверждение настройки и проверки подключения, а также несекретные идентификаторы ключа и ротации.
ocx access key list --jsonПодтверждение работы нового ключа не является разрешением отозвать старый. Для завершения ротации или удаления старого ключа требуется отдельное явное разрешение на отзыв именно этого ключа. После разрешённой операции снова проверьте список. Не обходите этот порядок прямым вызовом API.
Интеграции клиентов
Заголовок раздела «Интеграции клиентов»ocx integration <claude|grok> ...
Заголовок раздела «ocx integration <claude|grok> ...»Управляйте поддерживаемыми интеграциями Claude и Grok. Прямые семейства команд ниже предоставляют элементы управления, специфичные для каждого клиента.
ocx claude [claude args...]
Заголовок раздела «ocx claude [claude args...]»Убедиться, что прокси запущен, а затем запустить Claude Code с ANTHROPIC_BASE_URL,
ANTHROPIC_AUTH_TOKEN, CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 и model slot’ами из
config.claudeCode. Маршрутизируемые модели появляются в native-picker’е /model через стабильные
slot-alias’ы, начиная с Claude Code 2.1.129. На более старых версиях модель выбирается через
ANTHROPIC_MODEL или /model <id>. Пользовательские ANTHROPIC_*, экспортированные в окружение,
всегда имеют приоритет.
Команды для профиля Claude Desktop:
ocx claude desktop [apply] Save and apply the four-family profileocx claude desktop show [--json] Show routes, families, and defaultsocx claude desktop move <route> <family> [--default]ocx claude desktop default <family> <route|none>ocx claude desktop export <path|-> Export versioned JSON (`-` = stdout)ocx claude desktop import <path> [--apply] Validate and import JSONСемейства — opus, fable, sonnet и haiku; новые маршруты по умолчанию попадают в opus.
none допустимо только когда соответствующее семейство пусто. Legacy-flags --static,
--hybrid и --discovery-only для apply по-прежнему поддерживаются. Для настроек Claude Code
используйте ocx claude config <status|set> ....
ocx codex [codex args...]
Заголовок раздела «ocx codex [codex args...]»Ключ передаётся только когда конфигурация и её пространства имён защищены от изменения другими субъектами; текущий пользователь и привилегированные субъекты ОС считаются доверенными. Процессы того же пользователя доверенные: субъект с вашими правами записи уже может прочитать ваш файл ключа OpenCodex. Замена конфигурации тем же пользователем между проверкой и нативным запуском находится вне этой модели угроз; конфигурация при передаче управления не фиксируется.
При обычной установке Windows права ProgramData по умолчанию позволяют другим пользователям создавать каталоги. Поэтому автоматические учётные данные не передаются даже при отсутствии ProgramData\OpenAI\Codex. Папка системной конфигурации Codex в ProgramData должна существовать и быть доступна для записи только Administrators/SYSTEM; родительские каталоги должны быть защищены от замены другими пользователями. Попросите администратора проверить политику каталогов. opencodex никогда не меняет ACL самостоятельно и не предоставляет команду подготовки.
Вместо этого можно передать ключ самостоятельно, например экспортировав OPENCODEX_API_AUTH_TOKEN; ocx codex оставляет его значение без изменений. Существующие системные файлы конфигурации по-прежнему блокируют автоматические учётные данные и требуют отдельной проверки. Для каждой причины отказа выводится одна короткая конкретная строка stderr без значений ключей, содержимого или путей файлов ключей.
Перед подсказкой из одного слова укажите --, чтобы исключить выбор неизвестной подкоманды Codex.
Пространство машинной конфигурации должно запрещать другим пользователям создание отсутствующих системных файлов. Непроверенный Windows ProgramData/OpenAI/Codex запрещает передачу токена; каталог не создаётся. macOS допускает ACL только с запретами и разрешения только на чтение. Любое разрешение записи, добавления, удаления, изменения атрибутов, безопасности или владельца блокирует передачу даже после запрещающей записи. Неизвестные теги и ошибки проверки также блокируют её.
Новый служебный токен читается только если argv входит в список ниже, нет непустых переменных прокси HTTP(S)/ALL или переопределений CODEX_*/OPENAI_*/AZURE_OPENAI_* (канонический CODEX_HOME разрешён), а пространства home/config/system проходят проверку владельца. Нужны только проверенные ключи и точный управляемый loopback-провайдер, без дополнительных потребителей учётных данных и слоёв конфигурации. Любой аргумент вне списка, включая -c/--config, -p/--profile, неизвестные флаги и resume/fork, блокирует токен с диагностикой без значений; явные учётные данные и исходные аргументы сохраняются.
Канонический каталог и config.toml должны принадлежать текущему пользователю. POSIX запрещает запись group/other; Windows проверяет SID владельца и запрещает запись DACL всем, кроме текущего пользователя, SYSTEM и Administrators. Проверяются права замены родительских путей. На macOS также не должно быть принудительных настроек Codex. Эти проверки не изолируют вредоносный процесс того же пользователя или администратора.
| Allowlist | Flags |
|---|---|
| Switches | --no-daemon, --json, --ephemeral, --skip-git-repo-check, --no-alt-screen, --full-auto, --dangerously-bypass-approvals-and-sandbox, --search |
| One value | --model/-m, --sandbox/-s, --ask-for-approval/-a, --image/-i |
При автоматическом чтении учётных данных CODEX_HOME трактуется как буквальный путь, включая ~ и пробелы. После проверки дочерний процесс получает тот же канонический абсолютный путь. Недоступный каталог отключает чтение. Любое непустое значение HTTP_PROXY, HTTPS_PROXY или ALL_PROXY без учёта регистра также отключает чтение независимо от NO_PROXY; отклонённые запуски и экспортированные пользователем учётные данные не меняются. При передаче нового токена в обе переменные дочернего процесса NO_PROXY и no_proxy добавляются 127.0.0.1 и ::1 с сохранением прежних исключений. Включение features.respect_system_proxy или передача --enable/--disable отключает автоматическое чтение.
Лаунчер пытается запустить прокси и передаёт Codex исходные аргументы, не переписывая конфигурацию. Нативные маршруты и чужие шлюзы пропускают запуск прокси. Неизвестный маршрут предупреждает и пытается запустить прокси; неудача предупреждает и продолжает выполнение. Справка, версия и внутренние команды login, doctor, help пропускают запуск и автоматическое чтение токена.
Отсутствующий OPENCODEX_API_AUTH_TOKEN читается из service-api-token этой установки только при полном совпадении транспортной конфигурации выбранного provider с управляемым блоком для настроенного loopback-слушателя или сохранённого локального клиентского подключения. Имя и комментарии не дают разрешения. Неизвестные или удалённые адреса, profile по умолчанию, конфигурация проекта, OPENAI_BASE_URL и переданные -c/--config, -p/--profile, -C/--cd, --remote отключают автоматическое чтение. Экспортированные пользователем учётные данные и аргументы сохраняются; подмена файла токена и совпадения с административными токенами отклоняются.
Только совпавшая (matched) обёртка autostart запускает свой базовый Codex напрямую. Неизвестное состояние, включая исключение проверки, требует проверенного обхода; управляемая CMD-обёртка Windows должна полностью совпадать с текущим шаблоном для запуска с OCX_SHIM_BYPASS=1. Обычные npm-лаунчеры поддерживаются. Непроверяемая или устаревшая обёртка отклоняется с кодом 1 без запуска Codex; обновите её через ocx codex-shim install. Запуск не исправляет shim; проверка содержимого не доказывает происхождение базового файла Windows и не предотвращает одновременную замену пути.
Справка лаунчера: ocx help codex; справка Codex: ocx codex --help. Последующий обычный запуск codex сохраняет прежнее поведение.
ocx opencode [opencode args...]
Заголовок раздела «ocx opencode [opencode args...]»Убедиться, что прокси запущен, и затем запустить opencode со сгенерированными блоками
provider.opencodex и providers.opencodex в inline runtime layer OpenCode (OPENCODE_CONFIG_CONTENT). Существующая
inline-конфигурация сохраняется, а для этого запуска заменяются только эти два ключа.
Глобальные или проектные opencode.json могут читаться, чтобы выдать warning о существующем
override, но файлы на диске никогда не меняются. Маршрутизируемые модели появляются как
opencodex/<provider>/<model>. Последующий запуск обычного opencode работает ровно как раньше.
ocx grok <status|exclude|include|set|clear|apply> ...
Заголовок раздела «ocx grok <status|exclude|include|set|clear|apply> ...»Управляйте fence’ом моделей для Grok Build и применяйте его.
Экспорт client config
Заголовок раздела «Экспорт client config»ocx export --client <opencode|pi|omp|hermes|openclaw|kimi|gajae|dsh|mcode|zcode|prime|aside|raycast|omo|cline|kilo|commandcode|droid>
Заголовок раздела «ocx export --client <opencode|pi|omp|hermes|openclaw|kimi|gajae|dsh|mcode|zcode|prime|aside|raycast|omo|cline|kilo|commandcode|droid>»Печатает client config, направленный на работающий прокси. Команда сериализует блок
провайдера opencodex в нативном формате выбранного клиента: base URL, список моделей и,
в зависимости от клиента, credential reference либо заглушку opencodex-loopback.
Прокси должен быть запущен; команда определяет его живой порт, читает /api/models и выводит
только те модели, которые сейчас видит Codex.
| Флаг | Действие |
|---|---|
--client <opencode|pi|omp|hermes|openclaw|kimi|gajae|dsh|mcode|zcode|prime|aside|raycast|omo|cline|kilo|commandcode|droid> |
Обязателен. Выбирает формат конфигурации клиента. |
--json |
Печатать только JSON-конфиг в stdout, чтобы redirect сохранял побайтно точный вывод. Вся диагностика, включая заметку о записи через --out, идёт в stderr. |
--out <path> |
Записать конфиг в <path>. Перезаписывать существующий файл не позволит. |
--force |
Разрешить --out заменить существующий файл. |
ocx export --client opencode # config plus destination, merge warning, and countsocx export --client pi --json > pi-models.json # JSON document for a pipe or a diffocx export --client omp --out ./omp-models.yml # native OMP YAMLocx export --client opencode --out ~/opencodex-opencode.jsonБез --json сначала идёт сгенерированная конфигурация в нативном формате выбранного клиента,
затем канонический путь назначения, предупреждение о merge, клиентская подсказка перед запуском
и количество моделей с указанием, сколько строк не имеют context limit’а (для них клиент применяет
собственные default’ы).
| Клиент | Канонический путь | Имя скачиваемого файла | Переменная окружения |
|---|---|---|---|
opencode |
~/.config/opencode/opencode.json (XDG_CONFIG_HOME имеет приоритет, если задан) |
opencode.json |
OPENCODEX_OPENCODE_API_KEY |
pi |
~/.pi/agent/models.json (PI_CODING_AGENT_DIR имеет приоритет, если задана; относительное значение отклоняется) |
pi-models.json |
нет — блок несёт литерал opencodex-loopback |
omp |
~/.omp/agent/models.yml (по умолчанию; OMP_PROFILE имеет приоритет над PI_PROFILE, даже если пуст) |
omp-models.yaml |
нет — литерал opencodex-loopback |
hermes |
~/.hermes/config.yaml |
hermes-config.yaml |
OPENCODEX_HERMES_API_KEY |
openclaw |
~/.openclaw/openclaw.json |
openclaw.json5 |
OPENCODEX_OPENCLAW_API_KEY |
kimi |
~/.kimi-code/config.toml |
kimi-config.toml |
нет — loopback placeholder |
gajae |
~/.gjc/agent/models.yml |
gajae-models.yaml |
несекретное значение-заполнитель для loopback |
dsh |
$DSH_HOME/settings.yaml (по умолчанию ~/.dsh/settings.yaml) |
settings.yaml |
нет — несекретная loopback bearer-заглушка |
mcode |
~/.minimax/config.yaml (MINIMAX_DATA_DIR, затем устаревшая MAVIS_DATA_DIR, имеют приоритет, если заданы; относительное значение отклоняется) |
mcode-config.yaml |
нет — loopback placeholder |
zcode |
~/.zcode/v2/config.json (ZCODE_DATA_DIR имеет приоритет, если задана; относительное значение отклоняется) |
config.json |
нет — loopback placeholder |
prime |
~/.prime/agent/models.json (PRIME_AGENT_CODING_AGENT_DIR имеет приоритет, если задана; относительное значение отклоняется) |
prime-models.json |
нет — loopback placeholder |
aside |
~/.aside/u/<account>/models.json для аккаунта, который accounts.json самого Aside называет текущим; нечитаемый манифест отклоняется, а не подменяется произвольным аккаунтом |
aside-models.json |
нет — loopback placeholder |
raycast |
~/.config/raycast/ai/providers.yaml одинаково на macOS и Windows (Raycast не учитывает XDG_CONFIG_HOME) |
raycast-providers.yaml |
нет — только loopback, запись api_keys не создаётся |
omo |
~/.omo/agent/models.json (OMO_CODING_AGENT_DIR, затем SENPI_CODING_AGENT_DIR, затем PI_CODING_AGENT_DIR имеют приоритет в этом порядке, если заданы; относительное значение отклоняется) |
omo-models.json |
нет — loopback placeholder |
kilo |
первый существующий файл среди kilo.jsonc, kilo.json, opencode.jsonc, opencode.json или config.json в ~/.config/kilo (XDG_CONFIG_HOME переносит каталог); если ни одного нет, используется kilo.jsonc |
kilo.jsonc |
OPENCODEX_KILO_API_KEY |
commandcode |
~/.commandcode/providers.json (в Windows при использовании домашнего каталога по умолчанию: использовать HOME ?? USERPROFILE, только если значение не пустое, не состоит из пробелов и является абсолютным путём Windows, иначе homedir(); отдельно переданный домашний каталог сохраняется; добавить .commandcode\providers.json) |
providers.json |
только loopback; apiKey: false; переменная окружения не нужна |
droid |
~/.factory/settings.json (%USERPROFILE%\.factory\settings.json on Windows) |
factory-settings.json |
только loopback; переменная окружения не нужна |
Эти пути указаны по умолчанию. Абсолютный dataBaseDir в ~/.zcode/v2/setting.json, который всегда остаётся в домашнем каталоге по умолчанию, переносит хранилище в <dataBaseDir>/.zcode/v2/provider_config.json. ZCODE_DATA_DIR задаёт сам корень .zcode и имеет приоритет над настройкой; ZCODE_PERSONAL_PROVIDER_CONFIG_FILE имеет приоритет для файла провайдеров. Нечитаемая, некорректная или относительная настройка блокирует новое применение и обновление. Существующие записи владения и восстановления сохраняются. См. правила путей и восстановления на английском.
Экспорт для Raycast — это отдельный документ providers.yaml с одним элементом id: opencodex в
последовательности providers: name: OpenCodex, базовый URL прокси с /v1 и каждая маршрутизируемая
модель с её abilities (tools и system_message поддерживаются всегда, vision берётся из входных
модальностей каталога, reasoning_effort задаётся, когда у модели есть шкала усилий, temperature
отключена для рассуждающих моделей). Custom Providers — функция Raycast Pro, а Raycast следит за файлом,
поэтому сохранённое изменение вступает в силу без перезапуска. Формат описан на
manual.raycast.com/ai/custom-providers. Запись
api_keys не создаётся, поэтому этот экспорт работает только через loopback, а привязка вне loopback
отклоняется.
opencode интерполирует {env:OPENCODEX_OPENCODE_API_KEY}. Сгенерированный opencodex экспорт для
Pi не требует переменной окружения и несёт литеральную заглушку opencodex-loopback. Это значение
обязательно: Pi разрешает apiKey, когда строит список моделей, и прячет провайдера целиком, если
существующий конфиг содержит ссылку на незаданную переменную окружения. На loopback прокси не
проверяет сгенерированную заглушку.
Никакой ключ никогда не сериализуется. Сгенерированные конфиги несут либо документированную
env-reference, либо несекретную loopback-заглушку. Адрес loopback (127.0.0.1) сам по себе не означает доступ без ключа: проверьте политику и endpoint. CLI-команды модели/аудио с выбранным ключом требуют явного ввода и на loopback. Если прокси слушает не на loopback, задайте соответствующую переменную
OPENCODEX_OPENCODE_API_KEY, OPENCODEX_HERMES_API_KEY или OPENCODEX_OPENCLAW_API_KEY.
Интеграция gjc использует несекретное локальное значение и не требует переменной окружения. Она поддерживает только loopback и не настраивает учётные данные удалённого доступа.
Как выдаются admission key, описано в
Удалённом доступе. Ключи upstream-провайдеров — это совсем
отдельная история и настраиваются в Провайдерах.
Тот же payload отдаётся через GET /api/client-config и показывается на вкладке API в дашборде,
поэтому CLI, API и GUI используют в точности одни и те же байты.
Runtime и configuration
Заголовок раздела «Runtime и configuration»ocx system <status|settings|startup|diagnostics|sync|codex-app-server|codex-restart|update|codex-cli-update> ...
Заголовок раздела «ocx system <status|settings|startup|diagnostics|sync|codex-app-server|codex-restart|update|codex-cli-update> ...»Управляйте headless runtime-setting’ами, startup, sync, diagnostics и update.
ocx system codex-restart --yes перезапускает Codex app-server’ы тем же модулем, что и ocx sync --restart-codex. Desktop-приложение Codex полностью закрывается и запускается заново, если оно было запущено до записи текущего каталога моделей или этот запрос изменил привязку model_catalog_json, потому что выбор модели строится при запуске. Иначе приложение остаётся открытым, само перезапускает свой app-server и сохраняет неотправленные черновики и ожидающие подтверждения. Если состояние приложения или каталога прочитать нельзя, выполняется полный перезапуск. Если сам proxy запущен внутри приложения Codex, перезапуск Desktop отказывается с actionable-сообщением вместо handoff, который он не может завершить.
Изменение привязки model_catalog_json этим запросом также вызывает перезапуск Desktop, даже если процесс оболочки запущен после записи файла каталога.
ocx system settings --stream-mode eager-relayocx system update обновляет сам OpenCodex. Для Codex CLI используйте отдельную read-only команду:
ocx system codex-cli-update check --jsoncheck не обращается к реестру и не запускает Codex. В POSIX selectionAttested может быть true, если разрешитель выбирает тот же канонический путь, что и кандидат окружения, зафиксированный опубликованным средством запуска. Связанный манифест npm-global может подтвердить managed: true, если он доказывает владение и, когда версия кандидата сообщается, она совпадает с версией манифеста; сохранённые кандидаты остаются неаттестованными. Windows x64 также поддерживает привязанный к доказательству абсолютный стандартный npm codex.cmd с цепочкой инструментов Node/npm — локальной для префикса при её наличии, иначе парой из захваченного PATH, привязанной к архитектуре средства запуска, — и проверенной внутрипрефиксной платформенной подложкой, используя удерживаемые дескрипторы, отклоняющие reparse. Остальные раскладки Windows остаются отложенными или неуправляемыми. Результат managed в Windows классифицирует только наблюдаемую раскладку установки: привязанные Node/npm — это цепочка инструментов метаданных средства обновления, доступная только для чтения, а не гарантия того, какой интерпретатор разрешит последующий вызов codex.cmd. Прямой запуск через Bun или исходный код не даёт доказательства средства запуска. plan обращается к официальному реестру с изолированными временными настройками, кешем и журналами npm, отказывая при активных сессиях или неполном наблюдении процессов. Он ничего не устанавливает и не посылает сигналы. Windows x64 apply требует ограниченного префикса npm с проверенным частным правом записи и сохраняет несвязанные пакеты и shim; неподдерживаемые наблюдаемые раскладки возвращают applicable: false и refusal: windows_apply_disabled; выбор только по PATH, обёртки автозапуска OpenCodex и откат к global/vendor остаются отложенными. См. полное описание команд и причин отказа (англ.).
В Windows захваченная команда без полного пути, например CODEX_CLI_PATH=codex, удалённый путь или путь устройства возвращает candidate_path_unavailable. Кандидат захвачен, но его путь не подходит для этой проверки.
Явное наблюдение установки Windows x64
Заголовок раздела «Явное наблюдение установки Windows x64»ocx system codex-cli-update attest [--json]ocx system codex-cli-update attest --candidate <absolute-path> --npm-prefix <absolute-path> --npm-cli <absolute-path> --node <absolute-path> [--json]attest — необязательная операция только для чтения выбранной или явно указанной установки npm на Windows x64. Без параметров команда наблюдает выбранный кандидат, определённый доверенным снимком средства запуска (настроенный CODEX_CLI_PATH или первый codex в захваченном PATH), а обёртка opencodex разрешается в переименованную npm-резервную копию codex.opencodex-real.cmd. Передача всех четырёх абсолютных путей переопределяет поиск; поиск лишь предлагает пути, а наблюдение с удерживаемыми дескрипторами остаётся окончательным. --candidate указывает стандартный npm <prefix>/codex.cmd или <prefix>/node_modules/@openai/codex/bin/codex.js. Путь --npm-cli должен заканчиваться на node_modules/npm/bin/npm-cli.js, а --node явно указывает node.exe. Встроенные в приложения установки, распознанные каталоги менеджеров версий, shim opencodex без npm-резервной копии и пользовательские обёртки отклоняются.
При ограниченном чтении нативные дескрипторы удерживают родительские каталоги и файлы. Неподдерживаемые платформы, точки повторной обработки/junction, конфликтующая запись, небезопасные пути и слишком большие файлы отклоняются. Отчёт фиксированной формы не содержит путей: status равен observed или refused, также возвращается installationIdentityObserved. Поля selectionAttested, managed и applyAllowed остаются false. Проверяйте status: отказ в отчёте может сопровождаться кодом выхода 0.
Идентификатор или хеш описывает файлы в момент наблюдения, а не выдаёт постоянное разрешение на обновление. Он не доказывает выбранный runtime, прошлый установщик, действующую конфигурацию npm или подлинность инструментов. Указанный Node лишь наблюдается; выбор его запускателем не подтверждается. Команда не запускает цели, не обращается к реестру пакетов, не устанавливает ПО, не пишет конфигурацию и не управляет процессами. Существующий Windows check по-прежнему не выполняет файловый ввод-вывод кандидатов или конфигурации.
ocx config [show|get|set|unset|validate|export|import] ...
Заголовок раздела «ocx config [show|get|set|unset|validate|export|import] ...»ocx config [show] [--json] [--source] показывает локальную конфигурацию без запущенного прокси. show можно опустить при использовании любого из флагов или обоих в любом порядке. --source добавляет источник, ошибки и предупреждения диагностики и разрешён только при просмотре. --json может предшествовать явно указанному действию, не меняя его. Повторные флаги --json или --source и неизвестные аргументы отклоняются.
Проверяйте и безопасно меняйте валидированную конфигурацию OpenCodex. show и get
маскируют секреты. Импорт выполняет валидацию перед записью и требует --yes.
Forced Claude Code subagent model
Заголовок раздела «Forced Claude Code subagent model»The Subagents page offers Force all subagents onto one model, off by default. Select an exposed roster-style id, such as combo/tev-auto, then enable the switch. The roster is offered first; unavailable saved roster entries cannot be force targets.
ocx agent subagents force combo/tev-auto sets claudeCode.subagentModelForce; ocx agent subagents force - clears it. ocx agent status reports the setting. GET /api/subagent-models returns force, forceAvailable, and forceStatus; PUT accepts { "force": "combo/tev-auto" } or { "force": null } without changing the roster. Omitting force leaves it unchanged. Invalid or unexposed targets are rejected on write; stale targets are reported and skipped at launch.
This takes effect on the next routed ocx claude launch, injecting CLAUDE_CODE_SUBAGENT_MODEL as an explicit proxy alias (with [1m] only for an authoritative million-token window; native Claude targets use a reversible native alias) and CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1. Each nonempty shell-exported variable independently wins. Native launches inject neither variable; plain claude is not affected. No plugin files or settings.json are modified by this setting.
Claude Code 2.1.257 or newer is required for FORCE. Plugin and built-in agents (including Explore/Plan) and per-call model arguments are overridden. Forks and subagent skills with model: inherit keep the main conversation model. The main loop and Haiku/small-fast sidecars are unaffected. Existing roster files remain available.
The dashboard warns about old or unknown CLI versions, unavailable targets, and either variable already present in settings.json → env (which overrides launch env). Detection is read-only and server-local: it cannot inspect another launch shell, another machine, or project-local settings. An unknown result is not proof of force support.
Hermes / Command Code: model names
Заголовок раздела «Hermes / Command Code: model names»Hermes and Command Code support --model-names alias|routed (API: modelNames).
The default is routed, independent of preferModelAliasIds. A connection
stores its mode; later Apply without the option preserves it. Alias mode uses
only provider-qualified aliases that the router proves equivalent; missing,
unsafe or colliding aliases fall back to routed keys. Combos keep their keys.
Removed/renamed aliases migrate on the next successful managed refresh, with
foreign-edit refusal. Named Hermes profiles need explicit Apply.
ocx export --client hermes --model-names alias --json previews a current
already loaded catalog without writing client files or managed state; a cold or
stale catalog returns unavailable. Explicit --out writes an export artifact.
See the English integration guide
for the canonical workflow.

