codex.
Щодо налаштування та рішень маршрутизації почніть із
Codex harness.
Поверхня конфігурації Plugin
Усі налаштування Codex harness розміщені вplugins.entries.codex.config.
| Поле | Типове значення | Значення |
|---|---|---|
discovery | увімкнено | Налаштування виявлення моделей для Codex app-server model/list. |
appServer | керований stdio app-server | Налаштування транспорту, команди, автентифікації, схвалення, пісочниці та часу очікування. |
codexDynamicToolsLoading | "searchable" | Використовуйте "direct", щоб розмістити динамічні інструменти OpenClaw безпосередньо в початковому контексті інструментів Codex. |
codexDynamicToolsExclude | [] | Додаткові назви динамічних інструментів OpenClaw, які потрібно пропустити в ходах Codex app-server. |
codexPlugins | вимкнено | Нативна підтримка Plugin/застосунків Codex для перенесених curated plugins, встановлених із вихідного коду. Див. Нативні Plugin Codex. |
computerUse | вимкнено | Налаштування Codex Computer Use. Див. Codex Computer Use. |
Транспорт app-server
За замовчуванням OpenClaw запускає керований бінарний файл Codex, що постачається з вбудованим Plugin:codex, а не до
будь-якого окремого Codex CLI, який випадково встановлено локально. Установлюйте
appServer.command лише тоді, коли ви навмисно хочете запускати інший
виконуваний файл.
Для app-server, який уже запущено, використовуйте транспорт WebSocket:
appServer:
| Поле | Типове значення | Значення |
|---|---|---|
transport | "stdio" | "stdio" запускає Codex; "websocket" підключається до url. |
homeScope | "agent" | "agent" ізолює стан Codex для кожного агента OpenClaw. "user" спільно використовує нативний $CODEX_HOME або ~/.codex, використовує нативну автентифікацію та вмикає керування потоками лише для власника. Область користувача потребує stdio. |
command | керований бінарний файл Codex | Виконуваний файл для транспорту stdio. Залиште незаданим, щоб використовувати керований бінарний файл. |
args | ["app-server", "--listen", "stdio://"] | Аргументи для транспорту stdio. |
url | не задано | URL app-server WebSocket. |
authToken | не задано | Bearer-токен для транспорту WebSocket. Приймає літеральний рядок або SecretInput, наприклад ${CODEX_APP_SERVER_TOKEN}. |
headers | {} | Додаткові заголовки WebSocket. Значення заголовків приймають літеральні рядки або значення SecretInput, наприклад x-codex-client-session-token: "${CODEX_CLIENT_SESSION_TOKEN}". |
clearEnv | [] | Додаткові назви змінних середовища, які видаляються з породженого процесу stdio app-server після того, як OpenClaw сформує успадковане середовище. |
remoteWorkspaceRoot | не задано | Корінь робочого простору віддаленого Codex app-server. Коли задано, OpenClaw виводить локальний корінь робочого простору з розв’язаного робочого простору OpenClaw, зберігає поточний суфікс cwd під цим віддаленим коренем і надсилає до Codex лише фінальний cwd app-server. Якщо cwd перебуває поза розв’язаним коренем робочого простору OpenClaw, OpenClaw аварійно завершує операцію замість надсилання локального для Gateway шляху до віддаленого app-server. |
requestTimeoutMs | 60000 | Тайм-аут для викликів control-plane app-server. |
turnCompletionIdleTimeoutMs | 60000 | Вікно тиші після того, як Codex приймає хід, або після запиту app-server у межах ходу, поки OpenClaw очікує на turn/completed. |
postToolRawAssistantCompletionIdleTimeoutMs | 300000 | Захист простою завершення та прогресу, який використовується після передавання інструменту, завершення нативного інструменту, прогресу raw assistant після інструменту, завершення raw reasoning або прогресу reasoning, поки OpenClaw очікує на turn/completed. Використовуйте це для довірених або важких навантажень, де синтез після інструменту може правомірно залишатися тихим довше, ніж фінальний бюджет випуску assistant. |
mode | "yolo", якщо локальні вимоги Codex не забороняють YOLO | Пресет для YOLO або виконання з перевіркою guardian. |
approvalPolicy | "never" або дозволена політика схвалення guardian | Нативна політика схвалення Codex, яку надсилають під час запуску потоку, відновлення та ходу. |
sandbox | "danger-full-access" або дозволена пісочниця guardian | Нативний режим пісочниці Codex, який надсилають під час запуску та відновлення потоку. Активні пісочниці OpenClaw звужують ходи danger-full-access до Codex workspace-write; прапорець мережі ходу наслідує вихідний трафік пісочниці OpenClaw. |
approvalsReviewer | "user" або дозволений рецензент guardian | Використовуйте "auto_review", щоб дозволити Codex перевіряти нативні запити схвалення, коли це дозволено. |
defaultWorkspaceDir | каталог поточного процесу | Робочий простір, який використовує /codex bind, коли --cwd пропущено. |
serviceTier | не задано | Необов’язковий рівень сервісу Codex app-server. "priority" вмикає маршрутизацію fast-mode, "flex" запитує обробку flex, а null очищає перевизначення. Застаріле "fast" приймається як "priority". |
networkProxy | вимкнено | Дозволяє використовувати мережу профілю дозволів Codex для команд app-server. OpenClaw визначає вибрану конфігурацію permissions.<profile>.network і вибирає її через default_permissions замість надсилання sandbox. |
experimental.sandboxExecServer | false | Попередній opt-in, який реєструє середовище Codex на основі пісочниці OpenClaw у Codex app-server 0.132.0 або новішому, щоб нативне виконання Codex могло запускатися всередині активної пісочниці OpenClaw. |
appServer.networkProxy є явним, оскільки він змінює контракт пісочниці Codex.
Коли ввімкнено, OpenClaw також задає features.network_proxy.enabled і
default_permissions у конфігурації потоку Codex, щоб згенерований профіль
дозволів міг запустити керовану мережею Codex. Типово OpenClaw генерує
стійку до колізій назву профілю openclaw-network-<fingerprint> з тіла
профілю; використовуйте profileName лише тоді, коли потрібна стабільна локальна назва.
danger-full-access, увімкнення
networkProxy використовує доступ до файлової системи в стилі робочої області для згенерованого
профілю дозволів. Кероване Codex мережеве примусове застосування є ізольованою мережею,
тому профіль повного доступу не захищав би вихідний трафік.
Plugin блокує старіші або неверсіоновані рукостискання сервера застосунків. Сервер застосунків Codex
має повідомляти стабільну версію 0.125.0 або новішу.
OpenClaw трактує WebSocket URL-и сервера застосунків, що не є loopback, як віддалені й вимагає
WebSocket-автентифікацію з ідентифікацією через appServer.authToken або
заголовок Authorization. appServer.authToken і кожне значення appServer.headers.*
можуть бути SecretInput; середовище виконання секретів розв’язує SecretRefs і скорочення env
до того, як OpenClaw створює параметри запуску сервера застосунків, а нерозв’язані
структуровані SecretRefs завершуються помилкою до надсилання будь-якого токена чи заголовка. Коли налаштовано нативні
plugins Codex, OpenClaw використовує площину керування plugins підключеного сервера застосунків,
щоб установити або оновити ці plugins, а потім оновлює інвентар застосунків, щоб
застосунки, якими володіють plugins, були видимі для потоку Codex. app/list і далі є
авторитетним джерелом інвентарю та метаданих, але політика OpenClaw вирішує, чи
thread/start надсилає config.apps[appId].enabled = true для переліченого доступного
застосунку, навіть якщо Codex зараз позначає його як вимкнений. Невідомі або відсутні id застосунків залишаються
закритими з відмовою; цей шлях лише активує marketplace plugins через plugin/install
і оновлює інвентар. Підключайте OpenClaw лише до тих віддалених серверів застосунків, яким
довіряєте приймати керовані OpenClaw встановлення plugins і оновлення інвентарю застосунків.
Режими схвалення та sandbox
Локальні stdio-сеанси сервера застосунків за замовчуванням використовують режим YOLO:approvalPolicy: "never", approvalsReviewer: "user" і
sandbox: "danger-full-access". Така довірена позиція локального оператора дає змогу
автономним зверненням OpenClaw і Heartbeat просуватися без нативних запитів схвалення,
на які нікому відповісти.
Якщо локальний файл системних вимог Codex забороняє неявні значення YOLO для схвалення,
рецензента або sandbox, OpenClaw натомість трактує неявне значення за замовчуванням як guardian
і вибирає дозволені дозволи guardian. tools.exec.mode: "auto"
також примусово вмикає схвалення Codex із guardian-рецензуванням і не зберігає небезпечні
застарілі перевизначення approvalPolicy: "never" або sandbox: "danger-full-access";
задайте tools.exec.mode: "full" для навмисної позиції без схвалень.
Записи
[[remote_sandbox_config]] у тому самому файлі вимог, що збігаються з hostname,
враховуються під час ухвалення рішення про sandbox за замовчуванням.
Задайте appServer.mode: "guardian" для схвалень Codex із guardian-рецензуванням:
guardian розгортається в approvalPolicy: "on-request",
approvalsReviewer: "auto_review" і sandbox: "workspace-write", коли ці
значення дозволені. Окремі поля політики перевизначають mode. Старіше
значення рецензента guardian_subagent досі приймається як сумісний псевдонім,
але нові конфігурації мають використовувати auto_review.
Коли активний sandbox OpenClaw, локальний процес сервера застосунків Codex усе одно
працює на хості Gateway. Тому OpenClaw вимикає нативний Code Mode Codex,
користувацькі MCP-сервери та виконання plugins на основі застосунків для цього звернення,
замість того щоб трактувати sandboxing на боці хоста Codex як еквівалент backend sandbox
OpenClaw. Доступ до shell надається через динамічні інструменти на основі sandbox OpenClaw,
такі як sandbox_exec і sandbox_process, коли звичайні інструменти exec/process
доступні.
На хостах Ubuntu/AppArmor Codex bwrap може завершитися помилкою в workspace-write до
запуску shell-команди, коли ви навмисно запускаєте нативний Codex
workspace-write без активного sandbox OpenClaw. Якщо ви бачите
bwrap: setting up uid map: Permission denied або
bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted, запустіть
openclaw doctor і виправте повідомлену політику namespace хоста для користувача служби OpenClaw
замість надання ширших привілеїв Docker-контейнеру. Надавайте перевагу
обмеженому профілю AppArmor для процесу служби; fallback
kernel.apparmor_restrict_unprivileged_userns=0 діє на весь хост і має
компроміси безпеки.
Ізольоване нативне виконання
Стабільне значення за замовчуванням є fail-closed: активний sandbox OpenClaw вимикає нативні поверхні виконання Codex, які інакше запускалися б із хоста сервера застосунків Codex. ВикористовуйтеappServer.experimental.sandboxExecServer: true лише тоді, коли хочете
спробувати підтримку віддаленого середовища Codex із backend sandbox OpenClaw. Цей
preview-шлях потребує сервера застосунків Codex 0.132.0 або новішого.
Автентифікація та ізоляція середовища
У типовому домашньому каталозі для кожного агента автентифікація вибирається в такому порядку:- Явний профіль автентифікації OpenClaw Codex для агента.
- Наявний обліковий запис сервера застосунків у Codex home цього агента.
- Лише для локальних stdio-запусків сервера застосунків:
CODEX_API_KEY, потімOPENAI_API_KEY, коли облікового запису сервера застосунків немає, а автентифікація OpenAI все ще потрібна.
CODEX_API_KEY і OPENAI_API_KEY із породженого дочірнього процесу Codex. Це
залишає API-ключі рівня Gateway доступними для embeddings або прямих моделей OpenAI,
не даючи нативним зверненням сервера застосунків Codex випадково оплачуватися через API.
Явні профілі API-ключів Codex і локальний stdio fallback env-ключів використовують вхід сервера застосунків
замість успадкованого env дочірнього процесу. WebSocket-підключення сервера застосунків
не отримують fallback API-ключів env Gateway; використовуйте явний профіль автентифікації або
власний обліковий запис віддаленого сервера застосунків.
Stdio-запуски сервера застосунків за замовчуванням успадковують середовище процесу OpenClaw.
OpenClaw володіє мостом облікового запису сервера застосунків Codex і задає CODEX_HOME як
каталог для кожного агента в стані OpenClaw цього агента. Це утримує конфігурацію Codex,
облікові записи, кеш/дані plugins і стан потоків у межах агента OpenClaw
замість витоку з особистого домашнього каталогу оператора ~/.codex.
Задайте appServer.homeScope: "user", щоб спільно використовувати нативний стан Codex із Codex
Desktop і CLI. Цей режим лише для локального stdio використовує $CODEX_HOME, якщо задано,
і ~/.codex інакше, включно з нативною автентифікацією, конфігурацією, plugins і потоками.
OpenClaw пропускає свій міст профілю автентифікації для сервера застосунків. Перевірені звернення власника
можуть використовувати codex_threads, щоб перелічувати, шукати, читати, fork, перейменовувати, архівувати й відновлювати
ці потоки. Fork потік перед продовженням його в OpenClaw; незалежні
процеси Codex не координують конкурентних авторів для того самого потоку.
OpenClaw не переписує HOME для звичайних локальних запусків сервера застосунків. Підпроцеси, запущені Codex,
такі як openclaw, gh, git, хмарні CLI та shell-команди, бачать
звичайний домашній каталог процесу й можуть знаходити конфігурацію та токени в домашньому каталозі користувача. Codex також може
виявляти $HOME/.agents/skills і $HOME/.agents/plugins/marketplace.json;
це виявлення .agents навмисно спільне з домашнім каталогом оператора й
окреме від ізольованого стану ~/.codex.
У типовій області агента OpenClaw plugins і знімки Skills OpenClaw і далі
проходять через власний реєстр plugins і завантажувач Skills OpenClaw; особисті ресурси Codex
~/.codex не проходять. Якщо у вас є корисні Skills або plugins Codex CLI з
Codex home, які мають стати частиною ізольованого агента OpenClaw, явно
інвентаризуйте їх:
appServer.clearEnv:
appServer.clearEnv впливає лише на породжений дочірній процес сервера застосунків Codex.
OpenClaw видаляє CODEX_HOME і HOME із цього списку під час нормалізації локального запуску:
CODEX_HOME залишається спрямованим на вибрану область агента або користувача,
а HOME залишається успадкованим, щоб підпроцеси могли використовувати звичайний стан домашнього каталогу користувача.
Динамічні інструменти
Динамічні інструменти Codex за замовчуванням використовують завантаженняsearchable. OpenClaw не надає
динамічні інструменти, які дублюють нативні операції робочої області Codex:
readwriteeditapply_patchexecprocessupdate_plan
heartbeat_respond і web_search, доступні
через пошук інструментів Codex у namespace openclaw. Це зменшує початковий
контекст моделі. sessions_yield і відповіді джерела лише для message-tool
залишаються прямими, бо це контракти керування зверненням. sessions_spawn залишається
searchable, щоб нативний spawn_agent Codex залишався основною поверхнею subagent Codex,
тоді як явне делегування OpenClaw або ACP і далі доступне через
namespace динамічних інструментів openclaw.
Задавайте codexDynamicToolsLoading: "direct" лише під час підключення до кастомного сервера застосунків Codex,
який не може шукати відкладені динамічні інструменти, або під час налагодження повного
payload інструментів.
Тайм-аути
Виклики динамічних інструментів, якими володіє OpenClaw, обмежені незалежно відappServer.requestTimeoutMs. Кожен запит Codex item/tool/call використовує перший
доступний тайм-аут у такому порядку:
- Додатний аргумент
timeoutMsдля окремого виклику. - Для
image_generate,agents.defaults.imageGenerationModel.timeoutMs. - Для
image_generateбез налаштованого тайм-ауту, типовий тайм-аут генерації зображень 120 секунд. - Для інструмента розуміння медіа
image,tools.media.image.timeoutSecondsперетворений у мілісекунди, або типовий тайм-аут медіа 60 секунд. Для розуміння зображень це застосовується до самого запиту й не зменшується через попередню підготовчу роботу. - Типовий тайм-аут динамічного інструмента 90 секунд.
item/tool/call. Тайм-аути запитів,
специфічні для провайдера, працюють усередині цього виклику й зберігають власну семантику тайм-аутів.
Бюджети динамічних інструментів обмежені 600000 мс. У разі тайм-ауту OpenClaw перериває
сигнал інструмента, де це підтримується, і повертає Codex невдалу відповідь динамічного інструмента,
щоб звернення могло продовжитися замість залишення сеансу в processing.
Після того як Codex приймає звернення, і після того як OpenClaw відповідає на запит сервера застосунків
у межах звернення, harness очікує, що Codex виконуватиме прогрес поточного звернення й
зрештою завершить нативне звернення через turn/completed. Якщо сервер застосунків замовкає
на appServer.turnCompletionIdleTimeoutMs, OpenClaw у режимі best-effort
перериває звернення Codex, записує діагностичний тайм-аут і звільняє
смугу сеансу OpenClaw, щоб наступні повідомлення чату не стояли в черзі за застарілим
нативним зверненням.
Більшість нетермінальних сповіщень для того самого ходу вимикають цей короткий watchdog,
оскільки Codex уже довів, що хід досі активний. Передавання керування інструментам використовує довший
бюджет простою після інструмента: після того як OpenClaw повертає відповідь item/tool/call, після
завершення нативних елементів інструментів, як-от commandExecution, після сирих
завершень custom_tool_call_output, а також після сирого прогресу асистента після інструмента,
завершень сирого reasoning або прогресу reasoning. Захист використовує
appServer.postToolRawAssistantCompletionIdleTimeoutMs, коли його налаштовано, а інакше
типово становить п’ять хвилин. Той самий бюджет після інструмента також подовжує
watchdog прогресу для тихого вікна синтезу перед тим, як Codex видасть наступну
подію поточного ходу. Завершення reasoning, завершення commentary
agentMessage, а також сирий прогрес reasoning або асистента до інструмента можуть
супроводжуватися автоматичною фінальною відповіддю, тому вони використовують захист відповіді
після прогресу замість негайного звільнення смуги сеансу. Лише
фінальні/не-commentary завершені елементи agentMessage і сирі завершення асистента до інструмента
вмикають звільнення виводу асистента: якщо після цього Codex замовкає без
turn/completed, OpenClaw у режимі best-effort перериває нативний хід і звільняє
смугу сеансу. Replay-safe збої app-server stdio, зокрема
тайм-аути простою завершення ходу без ознак асистента, інструмента, активного елемента або
побічного ефекту, повторюються один раз із новою спробою app-server. Небезпечні
тайм-аути все одно виводять застряглий клієнт app-server з роботи й звільняють смугу
сеансу OpenClaw. Вони також очищають застаріле прив’язування нативного потоку замість
автоматичного повторного відтворення. Тайм-аути спостереження за завершенням показують
специфічний для Codex текст тайм-ауту: replay-safe випадки повідомляють, що відповідь може бути неповною,
а небезпечні випадки кажуть користувачу перевірити поточний стан перед повторною спробою.
Публічна діагностика тайм-аутів містить структурні поля, як-от останній метод
сповіщення app-server, id/type/role сирого елемента відповіді асистента, кількість активних
запитів/елементів і стан увімкненого спостереження. Коли останнє сповіщення є сирим
елементом відповіді асистента, вона також містить обмежений попередній перегляд тексту асистента.
Вона не містить сирий prompt або вміст інструментів.
Виявлення моделей
Типово Plugin Codex запитує в app-server доступні моделі. Доступністю моделей керує Codex app-server, тому список може змінюватися, коли OpenClaw оновлює вбудовану версію@openai/codex або коли розгортання вказує
appServer.command на інший бінарний файл Codex. Доступність також може бути
обмежена обліковим записом. Використайте /codex models на запущеному Gateway, щоб побачити живий каталог
для цього harness і облікового запису.
Якщо виявлення не вдається або перевищує час очікування, OpenClaw використовує вбудований резервний каталог для:
- GPT-5.5
- GPT-5.4 mini
@openai/codex 0.142.5. Проба model/list
проти цього вбудованого app-server повернула такі публічні рядки вибору:
| Id моделі | Вхідні модальності | Зусилля reasoning |
|---|---|---|
gpt-5.5 | text, image | low, medium, high, xhigh |
gpt-5.4 | text, image | low, medium, high, xhigh |
gpt-5.4-mini | text, image | low, medium, high, xhigh |
gpt-5.3-codex-spark | text | low, medium, high, xhigh |
plugins.entries.codex.config.discovery:
Файли bootstrap робочого простору
Codex сам обробляєAGENTS.md через нативне виявлення документації проєкту. OpenClaw
не записує синтетичні файли документації проєкту Codex і не залежить від резервних
імен файлів Codex для persona-файлів, оскільки резервні варіанти Codex застосовуються лише тоді, коли
AGENTS.md відсутній.
Для parity робочого простору OpenClaw harness Codex розв’язує інші bootstrap-файли.
SOUL.md, IDENTITY.md, TOOLS.md і USER.md передаються як
інструкції розробника OpenClaw Codex, оскільки вони визначають активного агента,
доступні настанови робочого простору й профіль користувача. Компактний список OpenClaw Skills
передається як обмежені ходом інструкції розробника для співпраці.
Вміст HEARTBEAT.md не ін’єктується; ходи heartbeat отримують вказівник режиму співпраці
прочитати файл, коли він існує й не є порожнім. Вміст MEMORY.md
із налаштованого робочого простору агента не вставляється у вхід нативного ходу Codex,
коли для цього робочого простору доступні інструменти пам’яті; коли він існує, harness
додає невеликий вказівник workspace-memory до обмежених ходом інструкцій розробника
для співпраці, і Codex має використовувати memory_search або memory_get, коли довготривала
пам’ять є релевантною. Якщо інструменти вимкнені, пошук у пам’яті недоступний або
активний робочий простір відрізняється від робочого простору пам’яті агента, MEMORY.md використовує
звичайний обмежений шлях контексту ходу.
BOOTSTRAP.md, якщо наявний, передається як довідковий контекст входу ходу OpenClaw.
Перевизначення середовища
Перевизначення середовища залишаються доступними для локального тестування:OPENCLAW_CODEX_APP_SERVER_BINOPENCLAW_CODEX_APP_SERVER_ARGSOPENCLAW_CODEX_APP_SERVER_MODE=yolo|guardianOPENCLAW_CODEX_APP_SERVER_APPROVAL_POLICYOPENCLAW_CODEX_APP_SERVER_SANDBOX
OPENCLAW_CODEX_APP_SERVER_BIN обходить керований бінарний файл, коли
appServer.command не задано.
OPENCLAW_CODEX_APP_SERVER_GUARDIAN=1 було вилучено. Натомість використовуйте
plugins.entries.codex.config.appServer.mode: "guardian" або
OPENCLAW_CODEX_APP_SERVER_MODE=guardian для одноразового локального тестування. Конфігурація
бажаніша для повторюваних розгортань, оскільки вона тримає поведінку Plugin у тому самому
перевіреному файлі, що й решта налаштування harness Codex.