Codex harness
Riferimento dell'harness Codex
Questo riferimento tratta la configurazione dettagliata del Plugin ufficiale codex.
Per la configurazione e le decisioni di instradamento, inizia da
harness Codex.
Superficie di configurazione del Plugin
Tutte le impostazioni dell'harness Codex si trovano in plugins.entries.codex.config.
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: true, timeoutMs: 2500, }, appServer: { mode: "guardian", }, }, }, }, },}Campi di primo livello:
| Campo | Valore predefinito | Significato |
|---|---|---|
discovery |
abilitato | Impostazioni di rilevamento dei modelli per model/list dell'app-server Codex. |
appServer |
app-server stdio gestito | Impostazioni di trasporto, comando, autenticazione, approvazione, sandbox e timeout. Per impostazione predefinita, l'harness ordinario usa lo stato con ambito agente. |
codexDynamicToolsLoading |
"searchable" |
Usa "direct" per inserire gli strumenti dinamici di OpenClaw direttamente nel contesto iniziale degli strumenti Codex. |
codexDynamicToolsExclude |
[] |
Ulteriori nomi di strumenti dinamici di OpenClaw da omettere dai turni dell'app-server Codex. |
codexPlugins |
disabilitato | Supporto nativo per Plugin/app Codex, incluso l'accesso esplicito alle app degli account connessi. Consulta Plugin Codex nativi. |
computerUse |
disabilitato | Configurazione di Codex Computer Use. Consulta Codex Computer Use. |
supervision |
disabilitato | Catalogo delle sessioni native non archiviate, continuazione del ramo locale e criteri degli strumenti agente. Consulta supervisione Codex. |
Supervisione
La supervisione elenca le sessioni Codex non archiviate dal computer del Gateway e dai nodi associati che hanno fornito il consenso. Abilitala indipendentemente dall'harness dell'agente:
{ plugins: { entries: { codex: { enabled: true, config: { supervision: { enabled: true, }, }, }, }, },}Campi di supervision:
| Campo | Valore predefinito | Significato |
|---|---|---|
enabled |
false |
Pubblicizza il catalogo delle sessioni locali e, sul Gateway, aggrega i cataloghi dei nodi associati che hanno fornito il consenso per la pagina Sessioni Codex. |
endpoints |
endpoint locale integrato | Destinazioni endpoint avanzate e di compatibilità per l'agente di supervisione Codex mantenuto e gli strumenti MCP autonomi. Il catalogo per utenti e il flusso dei rami ignorano queste destinazioni e usano l'App Server di supervisione risolto da appServer. |
allowRawTranscripts |
false |
Con la supervisione abilitata, consente agli agenti autonomi o agli strumenti MCP autonomi di leggere le trascrizioni e i campi degli elenchi derivati dalle trascrizioni. Le letture dei soli metadati di codex_threads restano disponibili. Non controlla la continuazione autenticata dell'interfaccia di controllo. |
allowWriteControls |
false |
Con la supervisione abilitata, consente le mutazioni autonome di fork, ridenominazione, archiviazione e ripristino dall'archivio tramite codex_threads, oltre alle operazioni autonome MCP di invio, orientamento e interruzione. Non elude gli altri controlli relativi ad associazione, host, stato o conferma. |
Le voci degli endpoint accettano questi campi:
| Campo | Si applica a | Significato |
|---|---|---|
id |
tutti | ID stabile dell'endpoint. |
label |
tutti | Etichetta di visualizzazione facoltativa. |
transport |
tutti | "stdio-proxy" o "websocket". |
command |
stdio-proxy |
Comando facoltativo dell'App Server. |
args |
stdio-proxy |
Argomenti facoltativi del comando. |
cwd |
stdio-proxy |
Directory di lavoro facoltativa del processo figlio. |
url |
websocket |
URL WebSocket o URL socket locale supportato obbligatorio. |
authTokenEnv |
websocket |
Variabile di ambiente facoltativa il cui valore autentica l'endpoint. |
La pagina Sessioni Codex usa l'App Server di supervisione del Plugin e mostra
solo le sessioni non archiviate. Senza impostazioni di connessione appServer esplicite,
la connessione è stdio gestita nella home dell'utente. Le righe locali memorizzate o inattive possono creare
una chat vincolata al modello con una cronologia limitata di utente e assistente fino all'ultimo
turno sorgente terminale persistito. La relativa associazione privata mantiene il fork dell'istantanea,
il ramo canonico con origine appServer, l'inserimento della cronologia e i turni successivi su tale
connessione. Il primo avvio canonico usa la coppia restituita dal fork. Le riprese
successive omettono le sostituzioni del modello e del provider di OpenClaw, affinché Codex ripristini la
coppia persistita del thread canonico; una modifica nativa separata può aggiornare tale
coppia, ma il modello esterno e la catena di fallback non la sostituiscono mai. Le righe memorizzate e inattive
possono essere archiviate dopo la conferma che non vi siano altri esecutori, a meno che un'altra associazione
OpenClaw attiva non possieda la destinazione esatta o uno dei relativi discendenti generati
non archiviati. OpenClaw segue la paginazione dei discendenti di Codex e adotta un comportamento di chiusura sicura in caso di
errori di enumerazione, cicli o esaurimento del limite di sicurezza. La conferma copre comunque
i client nativi sconosciuti e la condizione di competizione tra stato e archiviazione. Una chat supervisionata
vincolata al modello non può essere eliminata mentre protegge l'associazione nativa.
Le sorgenti attive non possono creare un ramo né essere archiviate, ma una chat supervisionata
esistente può comunque essere aperta. Ogni riga di un nodo associato rimane di sola lettura; il trasporto
del nodo non fornisce ancora il ciclo di vita dello streaming richiesto dall'harness.
appServer.homeScope: "user" da solo modifica quale home Codex utilizza un processo
harness gestito; non pubblica il catalogo della flotta. L'abilitazione della supervisione non
modifica l'impostazione predefinita dell'harness. La connessione di supervisione separata, invece,
usa per impostazione predefinita stdio gestita nella home dell'utente quando non esistono impostazioni di connessione
appServer esplicite. Le impostazioni esplicite vengono rispettate per tale connessione.
Le associazioni supervisionate in sospeso e confermate mantengono tale connessione per ogni turno;
la supervisione disabilitata o una divergenza della connessione o del ciclo di vita comportano una chiusura sicura anziché
il fallback sull'harness nella home dell'agente. La connessione predefinita condivide le sessioni memorizzate
con i client Codex nativi, ma non il loro stato di attività locale al processo.
Le impostazioni legacy plugins.entries.codex-supervisor sono state ritirate. Esegui
openclaw doctor --fix per migrare la vecchia voce, le definizioni degli endpoint, i flag dei criteri
e i riferimenti di autorizzazione/blocco del Plugin in questo blocco. In caso di conflitto, prevalgono i valori canonici
espliciti di codex.config.supervision.
Trasporto dell'app-server
Per i turni ordinari dell'harness, OpenClaw avvia il binario Codex gestito distribuito
con il Plugin ufficiale (attualmente @openai/codex 0.144.1):
codex app-server --listen stdio://Ciò mantiene la versione dell'app-server legata al Plugin ufficiale codex, anziché
a qualsiasi CLI Codex separata installata localmente. Imposta
appServer.command solo quando desideri intenzionalmente usare un eseguibile diverso.
I turni gestiti ordinari con la home dell'agente isolata predefinita preferiscono questo
pacchetto con versione fissata anche quando è installato un bundle dell'app desktop per macOS. Quando
Computer Use è abilitato, oppure quando homeScope è
"user" e può caricare lo stato nativo di Computer Use, l'avvio gestito preferisce invece
il binario dell'app desktop che possiede le autorizzazioni macOS necessarie. La stessa
regola di preferenza per il desktop si applica quando la configurazione Codex effettiva di una home dell'agente isolata
abilita Computer Use nativo. Se non è installato alcun bundle dell'app desktop, OpenClaw
ricorre al binario del pacchetto con versione fissata.
Il passaggio di consegne dell'eseguibile e il confinamento della configurazione nativa coordinano i client all'interno di un unico processo Gateway in esecuzione. Riavvia il Gateway dopo che un altro processo modifica la configurazione nativa del Plugin Codex.
La supervisione risolve una connessione separata. In assenza di impostazioni di connessione
appServer esplicite, usa stdio gestita con homeScope: "user";
l'harness ordinario rimane stdio gestita con homeScope: "agent". Le impostazioni
di connessione esplicite vengono rispettate da entrambi i percorsi. Imposta homeScope: "user"
esplicitamente quando l'harness ordinario deve condividere $CODEX_HOME (o ~/.codex)
con i client nativi. Un'associazione supervisionata privata usa la connessione di supervisione
indipendentemente dall'impostazione predefinita dell'harness ordinario. I processi App Server
indipendenti mantengono stati in tempo reale e di approvazione separati.
Per un app-server già in esecuzione, usa il trasporto WebSocket:
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { transport: "websocket", url: "ws://gateway-host:39175", authToken: "${CODEX_APP_SERVER_TOKEN}", requestTimeoutMs: 60000, }, }, }, }, },}Campi di appServer:
| Campo | Valore predefinito | Significato |
|---|---|---|
transport |
"stdio" |
"stdio" avvia Codex; il valore esplicito "unix" si connette al socket di controllo locale; "websocket" si connette a url. |
homeScope |
"agent" |
"agent" isola lo stato ordinario dell'harness per ciascun agente OpenClaw. "user" è un'opzione esplicita che condivide il $CODEX_HOME nativo o ~/.codex, usa l'autenticazione nativa e abilita la gestione dei thread riservata al proprietario. L'ambito utente supporta il trasporto stdio locale o Unix. Per la connessione di supervisione separata, un valore non impostato viene risolto in "user" per stdio o Unix e in "agent" per WebSocket. |
command |
binario Codex gestito | Eseguibile per il trasporto stdio. Lasciare il valore non impostato per usare il binario gestito. |
args |
["app-server", "--listen", "stdio://"] |
Argomenti per il trasporto stdio. |
url |
non impostato | URL dell'App Server WebSocket o URL unix://. Un percorso Unix esplicito vuoto seleziona il socket di controllo canonico nella directory home dell'utente. |
authToken |
non impostato | Token bearer per il trasporto WebSocket. Accetta una stringa letterale o un SecretInput come ${CODEX_APP_SERVER_TOKEN}. |
headers |
{} |
Intestazioni WebSocket aggiuntive. I valori delle intestazioni accettano stringhe letterali o valori SecretInput, ad esempio x-codex-client-session-token: "${CODEX_CLIENT_SESSION_TOKEN}". |
clearEnv |
[] |
Nomi aggiuntivi di variabili d'ambiente rimossi dal processo app-server stdio avviato dopo che OpenClaw ha creato il relativo ambiente ereditato. |
remoteWorkspaceRoot |
non impostato | Radice remota dell'area di lavoro dell'app-server Codex. Quando è impostata, OpenClaw deduce la radice locale dell'area di lavoro dall'area di lavoro OpenClaw risolta, conserva il suffisso della cwd corrente sotto questa radice remota e invia a Codex solo la cwd finale dell'app-server. Se la cwd è esterna alla radice risolta dell'area di lavoro OpenClaw, OpenClaw interrompe l'operazione in modo sicuro anziché inviare un percorso locale del Gateway all'app-server remoto. |
requestTimeoutMs |
60000 |
Timeout per le chiamate al piano di controllo dell'app-server. |
turnCompletionIdleTimeoutMs |
60000 |
Finestra di inattività dopo che Codex accetta un turno o dopo una richiesta dell'app-server relativa a un turno, mentre OpenClaw attende turn/completed. |
postToolRawAssistantCompletionIdleTimeoutMs |
300000 |
Protezione dall'inattività di completamento e dall'assenza di avanzamento usata dopo il passaggio di controllo a uno strumento, il completamento di uno strumento nativo, l'avanzamento grezzo dell'assistente dopo lo strumento, il completamento del ragionamento grezzo o l'avanzamento del ragionamento, mentre OpenClaw attende turn/completed. Usarla per carichi di lavoro attendibili o intensivi nei quali la sintesi successiva allo strumento può legittimamente rimanere inattiva più a lungo del budget di rilascio finale dell'assistente. |
mode |
"yolo", salvo che i requisiti Codex locali non consentano YOLO |
Preimpostazione per l'esecuzione YOLO o sottoposta alla revisione di un supervisore. |
approvalPolicy |
"never" o un criterio di approvazione del supervisore consentito |
Criterio di approvazione nativo di Codex inviato all'avvio e alla ripresa del thread e al turno. |
sandbox |
"danger-full-access" o una sandbox del supervisore consentita |
Modalità sandbox nativa di Codex inviata all'avvio e alla ripresa del thread. Le sandbox OpenClaw attive limitano i turni danger-full-access a workspace-write di Codex; il flag di rete del turno segue l'uscita dalla sandbox OpenClaw. |
approvalsReviewer |
"user" o un revisore supervisore consentito |
Usare "auto_review" per consentire a Codex di esaminare le richieste di approvazione native quando permesso. |
defaultWorkspaceDir |
directory del processo corrente | Area di lavoro usata da /codex bind quando --cwd è omesso. |
serviceTier |
non impostato | Livello di servizio facoltativo dell'app-server Codex. "priority" abilita l'instradamento in modalità rapida, "flex" richiede l'elaborazione flessibile e null cancella la sostituzione. Il valore precedente "fast" è accettato come "priority". |
networkProxy |
disabilitato | Abilita la rete basata sul profilo delle autorizzazioni Codex per i comandi dell'app-server. OpenClaw definisce la configurazione permissions.<profile>.network selezionata e la seleziona con default_permissions anziché inviare sandbox. |
experimental.sandboxExecServer |
false |
Opzione di anteprima che registra nel'app-server Codex supportato un ambiente Codex basato sulla sandbox OpenClaw, affinché l'esecuzione nativa di Codex possa avvenire all'interno della sandbox OpenClaw attiva. |
appServer.networkProxy è esplicito perché modifica il contratto della sandbox
Codex. Quando è abilitato, OpenClaw imposta anche features.network_proxy.enabled e
default_permissions nella configurazione del thread Codex, in modo che il profilo
di autorizzazioni generato possa avviare la rete gestita da Codex. Per impostazione
predefinita, OpenClaw genera dal corpo del profilo un nome profilo
openclaw-network-<fingerprint> resistente alle collisioni; usare profileName
solo quando è necessario un nome locale stabile.
export default { plugins: { entries: { codex: { config: { appServer: { sandbox: "workspace-write", networkProxy: { enabled: true, domains: { "api.openai.com": "allow", "blocked.example.com": "deny", }, allowUpstreamProxy: true, proxyUrl: "http://127.0.0.1:3128", }, }, }, }, }, },};Se il normale runtime dell'app-server fosse danger-full-access, l'abilitazione di
networkProxy usa invece un accesso al file system in stile workspace per il profilo
di autorizzazioni generato. L'applicazione delle restrizioni di rete gestita da Codex
usa una rete in sandbox, quindi un profilo con accesso completo non proteggerebbe il
traffico in uscita.
Il Plugin blocca gli handshake dell'app-server meno recenti o senza versione: l'app-server
Codex deve dichiarare la versione stabile 0.143.0 o successiva.
OpenClaw considera remoti gli URL WebSocket dell'app-server non local loopback e richiede
un'autenticazione WebSocket con identità tramite appServer.authToken o un'intestazione
Authorization. appServer.authToken e ogni valore appServer.headers.*
possono essere un SecretInput; il runtime dei segreti risolve i SecretRef e la forma
abbreviata delle variabili di ambiente prima che OpenClaw crei le opzioni di avvio
dell'app-server, mentre i SecretRef strutturati non risolti causano un errore prima
dell'invio di qualsiasi token o intestazione. Quando sono configurati Plugin nativi
Codex, OpenClaw usa il piano di controllo dei Plugin dell'app-server connesso per
installarli o aggiornarli, quindi aggiorna l'inventario delle app affinché le app
appartenenti ai Plugin siano visibili al thread Codex. app/list rimane la fonte
autorevole per inventario e metadati, ma i criteri di OpenClaw stabiliscono se
thread/start invia config.apps[appId].enabled = true per un'app accessibile
presente nell'elenco, anche se Codex la contrassegna attualmente come disabilitata.
Gli ID app sconosciuti o mancanti continuano a causare un errore in modalità fail-closed;
questo percorso attiva soltanto i Plugin del marketplace tramite plugin/install e
aggiorna l'inventario. Connetti OpenClaw soltanto ad app-server remoti considerati
affidabili per accettare installazioni di Plugin gestite da OpenClaw e aggiornamenti
dell'inventario delle app.
Modalità di approvazione e sandbox
Per impostazione predefinita, le sessioni locali dell'app-server tramite stdio usano la modalità YOLO:
approvalPolicy: "never", approvalsReviewer: "user" e
sandbox: "danger-full-access". Questa configurazione per un operatore locale affidabile
consente ai turni e agli Heartbeat non presidiati di OpenClaw di procedere senza richieste
di approvazione native a cui nessuno è presente per rispondere.
Se il file locale dei requisiti di sistema di Codex non consente valori YOLO impliciti
per approvazione, revisore o sandbox, OpenClaw considera invece l'impostazione predefinita
implicita come guardian e seleziona autorizzazioni guardian consentite.
tools.exec.mode: "auto" impone inoltre approvazioni Codex esaminate da guardian e non
mantiene le sostituzioni legacy non sicure approvalPolicy: "never" o
sandbox: "danger-full-access"; imposta tools.exec.mode: "full" per scegliere
intenzionalmente una configurazione senza approvazione. Le voci
[[remote_sandbox_config]] corrispondenti al nome host nello stesso file dei requisiti
vengono rispettate per la scelta dell'impostazione predefinita della sandbox.
Imposta appServer.mode: "guardian" per le approvazioni Codex esaminate da guardian:
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { mode: "guardian", serviceTier: "priority", }, }, }, }, },}Il preset guardian si espande in approvalPolicy: "on-request",
approvalsReviewer: "auto_review" e sandbox: "workspace-write" quando tali
valori sono consentiti. I singoli campi dei criteri sostituiscono mode. Il precedente
valore del revisore guardian_subagent è ancora accettato come alias di compatibilità,
ma le nuove configurazioni dovrebbero usare auto_review.
Quando è attiva una sandbox OpenClaw, il processo locale dell'app-server Codex continua
a essere eseguito sull'host del Gateway. OpenClaw disabilita quindi per quel turno la
Code Mode nativa di Codex, i server MCP dell'utente e l'esecuzione dei Plugin supportata
dalle app, anziché considerare la sandbox lato host di Codex equivalente al backend
sandbox di OpenClaw. L'accesso alla shell viene esposto tramite strumenti dinamici
supportati dalla sandbox OpenClaw, come sandbox_exec e sandbox_process, quando sono
disponibili i normali strumenti di esecuzione e gestione dei processi.
Esecuzione nativa in sandbox
L'impostazione predefinita stabile è fail-closed: una sandbox OpenClaw attiva disabilita
le superfici di esecuzione native di Codex che altrimenti verrebbero eseguite dall'host
dell'app-server Codex. Usa appServer.experimental.sandboxExecServer: true soltanto
se desideri provare il supporto degli ambienti remoti di Codex con il backend sandbox
di OpenClaw. Questo percorso di anteprima funziona con ogni versione supportata
dell'app-server Codex.
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { experimental: { sandboxExecServer: true, }, }, }, }, }, },}Quando il flag è attivo e la sessione OpenClaw corrente è in sandbox, OpenClaw avvia un exec-server local loopback supportato dalla sandbox attiva, lo registra presso l'app-server Codex e avvia il thread e il turno Codex con tale ambiente appartenente a OpenClaw. Se l'app-server non riesce a registrare l'ambiente, l'esecuzione termina in modalità fail-closed anziché ripiegare silenziosamente sull'esecuzione nell'host.
Questo percorso di anteprima è disponibile soltanto in locale. Un app-server WebSocket remoto non può raggiungere l'exec-server local loopback se non viene eseguito sullo stesso host, quindi OpenClaw rifiuta tale combinazione.
Autenticazione e isolamento dell'ambiente
Nella directory home predefinita per agente, l'autenticazione viene selezionata in questo ordine:
- Un profilo di autenticazione Codex di OpenClaw esplicito per l'agente.
- L'account esistente dell'app-server nella directory home Codex di quell'agente.
- Soltanto per gli avvii locali dell'app-server tramite stdio,
CODEX_API_KEY, quindiOPENAI_API_KEY, quando non è presente alcun account dell'app-server e l'autenticazione OpenAI è ancora necessaria.
Quando OpenClaw rileva un profilo di autenticazione Codex in stile abbonamento ChatGPT
(OAuth o tipo di credenziale token), rimuove CODEX_API_KEY e OPENAI_API_KEY dal
processo figlio Codex avviato. In questo modo le chiavi API a livello di Gateway
rimangono disponibili per gli embedding o per i modelli OpenAI diretti, senza che i
turni nativi dell'app-server Codex vengano addebitati accidentalmente tramite l'API.
I profili espliciti con chiave API Codex e il ripiego sulle chiavi dell'ambiente per stdio locale usano l'accesso all'app-server anziché l'ambiente ereditato dal processo figlio. Le connessioni WebSocket all'app-server non ricevono il ripiego sulle chiavi API dell'ambiente del Gateway; usa un profilo di autenticazione esplicito oppure l'account proprio dell'app-server remoto.
Per impostazione predefinita, gli avvii dell'app-server tramite stdio ereditano
l'ambiente del processo OpenClaw. OpenClaw gestisce il collegamento dell'account
dell'app-server Codex e imposta CODEX_HOME su una directory per agente all'interno
dello stato OpenClaw di tale agente. In questo modo la configurazione, gli account,
la cache e i dati dei Plugin e lo stato dei thread di Codex rimangono circoscritti
all'agente OpenClaw anziché provenire dalla directory home personale ~/.codex
dell'operatore.
Imposta appServer.homeScope: "user" per condividere lo stato nativo di Codex con
Codex Desktop e la CLI. Questa modalità locale basata sulla directory home dell'utente
supporta stdio gestito e il trasporto Unix esplicito. Usa $CODEX_HOME quando è
impostato e ~/.codex in caso contrario, inclusi autenticazione, configurazione,
Plugin e thread nativi. OpenClaw ignora il proprio collegamento del profilo di
autenticazione per l'app-server. I turni verificati del proprietario possono usare
codex_threads per elencare i thread (con un filtro search facoltativo), leggerli,
crearne un fork, rinominarli, archiviarli e rimuoverli dall'archivio. Crea un fork di un
thread prima di continuarlo in OpenClaw; i processi Codex indipendenti non coordinano
scrittori simultanei per lo stesso thread.
L'abilitazione esplicita di homeScope si applica alle normali sessioni dell'harness.
Una Chat creata tramite Codex Sessions usa invece la propria connessione privata di
supervisione, che mantiene l'autenticazione e la configurazione del provider della
connessione nativa per il ramo canonico e le riprese future.
In una Chat supervisionata con modello bloccato, codex_threads non può collegare un
fork diverso né archiviare il thread nativo associato alla Chat. L'elenco e la lettura
dei soli metadati rimangono disponibili. Le letture non elaborate della trascrizione
richiedono allowRawTranscripts; quando è disabilitato, viene rifiutata anche la ricerca
nell'elenco, poiché la ricerca nativa può trovare corrispondenze nelle anteprime delle
trascrizioni. La ridenominazione, la rimozione dall'archivio, il fork scollegato e
l'archiviazione di un thread non correlato che non appartiene a un'altra Chat OpenClaw
richiedono allowWriteControls. Nessuna delle due opzioni aggira un'associazione bloccata.
OpenClaw non riscrive HOME per i normali avvii locali dell'app-server. I sottoprocessi
eseguiti da Codex, come openclaw, gh, git, le CLI cloud e i comandi di shell,
vedono la normale directory home del processo e possono trovare la configurazione e i
token della directory home dell'utente. Codex può anche individuare
$HOME/.agents/skills e $HOME/.agents/plugins/marketplace.json; tale individuazione
di .agents è intenzionalmente condivisa con la directory home dell'operatore ed è
separata dallo stato isolato di ~/.codex.
Nell'ambito predefinito dell'agente, i Plugin OpenClaw e le istantanee delle Skills
OpenClaw continuano a passare rispettivamente attraverso il registro dei Plugin e il
caricatore delle Skills di OpenClaw; le risorse personali di Codex in ~/.codex no.
Se possiedi Skills o Plugin utili della CLI Codex provenienti da una directory home
Codex che dovrebbero diventare parte di un agente OpenClaw isolato, inventariali
esplicitamente:
openclaw migrate codex --dry-runopenclaw migrate apply codex --yesSe una distribuzione richiede un ulteriore isolamento dell'ambiente, aggiungi tali
variabili a appServer.clearEnv:
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { clearEnv: ["CODEX_API_KEY", "OPENAI_API_KEY"], }, }, }, }, },}appServer.clearEnv influisce soltanto sul processo figlio dell'app-server Codex
avviato. OpenClaw rimuove CODEX_HOME e HOME da questo elenco durante la
normalizzazione dell'avvio locale: CODEX_HOME continua a puntare all'ambito
dell'agente o dell'utente selezionato e HOME rimane ereditato affinché i sottoprocessi
possano usare il normale stato della directory home dell'utente.
Strumenti dinamici
Per impostazione predefinita, gli strumenti dinamici di Codex usano il caricamento
searchable, sono esposti nello spazio dei nomi openclaw con
deferLoading: true. OpenClaw non espone strumenti dinamici che duplicano le operazioni
native di Codex sul workspace o la superficie di ricerca degli strumenti propria di Codex:
readwriteeditapply_patchexecprocessupdate_plantool_calltool_describetool_searchtool_search_code
La maggior parte degli altri strumenti di integrazione OpenClaw, come messaggistica,
contenuti multimediali, Cron, browser, nodi, Gateway, heartbeat_respond e web_search,
è disponibile tramite la ricerca degli strumenti di Codex in tale spazio dei nomi.
Ciò mantiene più ridotto il contesto iniziale del modello. Un piccolo insieme di
strumenti rimane richiamabile direttamente indipendentemente da
codexDynamicToolsLoading, perché la ricerca degli strumenti di Codex può non essere
disponibile o può risolvere un universo composto soltanto da connettori:
agents_list, sessions_spawn e sessions_yield. Le istruzioni per gli sviluppatori
continuano a indirizzare i normali sottoagenti Codex verso spawn_agent nativo per il
lavoro dei sottoagenti nativi di Codex, mentre sessions_spawn rimane disponibile per
la delega esplicita OpenClaw o ACP. Anche le risposte di origine che usano soltanto lo
strumento per i messaggi rimangono dirette, poiché si tratta di un contratto di controllo
del turno.
Gli strumenti contrassegnati con catalogMode: "direct-only", incluso lo strumento
computer di OpenClaw, sono raggruppati sotto openclaw_direct. OpenClaw aggiunge tale
spazio dei nomi all'elenco code_mode.direct_only_tool_namespaces di Codex senza
sostituire le voci fornite dall'operatore. Codex espone quindi tali strumenti come
DirectModelOnly nei thread normali e in quelli riservati alla modalità codice, anziché
instradarli attraverso chiamate tools.* annidate della Code Mode. Questo confine è
necessario per i risultati contenenti immagini: la serializzazione annidata della Code
Mode converte l'output delle immagini in testo, eliminando così lo screenshot necessario
per l'azione successiva sul computer.
Imposta codexDynamicToolsLoading: "direct" soltanto quando ti connetti a un app-server
Codex personalizzato che non può cercare strumenti dinamici con caricamento differito
oppure durante il debug del payload completo degli strumenti.
Timeout
Le chiamate dinamiche agli strumenti gestite da OpenClaw sono limitate indipendentemente da
appServer.requestTimeoutMs. Ogni richiesta Codex item/tool/call utilizza il
primo timeout disponibile nel seguente ordine:
- Un argomento
timeoutMsper chiamata con valore positivo. - Per
image_generate,agents.defaults.imageGenerationModel.timeoutMs. - Per
image_generatesenza un timeout configurato, il valore predefinito di 120 secondi per la generazione di immagini. - Per lo strumento
imagedi comprensione dei contenuti multimediali,tools.media.image.timeoutSecondsconvertito in millisecondi oppure il valore predefinito di 60 secondi per i contenuti multimediali. Per la comprensione delle immagini, questo valore si applica alla richiesta stessa e non viene ridotto dal lavoro di preparazione precedente. - Per lo strumento
message, un valore predefinito fisso di 120 secondi. - Il valore predefinito di 90 secondi per gli strumenti dinamici.
Questo watchdog rappresenta il budget esterno della chiamata dinamica item/tool/call. I timeout
delle richieste specifici del provider vengono eseguiti all'interno di tale chiamata e mantengono
la propria semantica di timeout. I budget degli strumenti dinamici sono limitati a 600000 ms. In caso
di timeout, OpenClaw interrompe il segnale dello strumento ove supportato e restituisce a
Codex una risposta di errore dello strumento dinamico, in modo che il turno possa continuare anziché
lasciare la sessione in stato processing.
Dopo che Codex accetta un turno e dopo che OpenClaw risponde a una richiesta
app-server relativa al turno, l'harness si aspetta che Codex faccia progressi nel turno corrente
e che infine completi il turno nativo con turn/completed. Se
l'app-server non produce attività per appServer.turnCompletionIdleTimeoutMs, OpenClaw
tenta di interrompere il turno Codex, registra un timeout diagnostico e
libera la corsia di sessione OpenClaw, affinché i messaggi di chat successivi non rimangano in coda
dietro un turno nativo obsoleto.
La maggior parte delle notifiche non terminali dello stesso turno disattiva questo breve watchdog,
poiché Codex ha dimostrato che il turno è ancora attivo. I passaggi di controllo agli strumenti utilizzano un budget
di inattività post-strumento più lungo: dopo che OpenClaw restituisce una risposta item/tool/call,
dopo il completamento di elementi di strumenti nativi come commandExecution, dopo il
completamento di custom_tool_call_output non elaborati e dopo progressi post-strumento non elaborati
dell'assistente, completamenti di ragionamento non elaborati o progressi di ragionamento. La protezione utilizza
appServer.postToolRawAssistantCompletionIdleTimeoutMs quando configurato e,
in caso contrario, per impostazione predefinita cinque minuti. Lo stesso budget post-strumento estende inoltre
il watchdog dei progressi durante la finestra di sintesi silenziosa prima che Codex emetta il
successivo evento del turno corrente. I completamenti di ragionamento, i completamenti agentMessage
di commento e i progressi di ragionamento o dell'assistente non elaborati precedenti allo strumento possono essere seguiti
da una risposta finale automatica, pertanto utilizzano la protezione della risposta post-progresso
anziché liberare immediatamente la corsia di sessione. Solo gli elementi agentMessage completati
finali/non di commento e i completamenti dell'assistente non elaborati precedenti allo strumento attivano
il rilascio per output dell'assistente: se Codex non produce più attività senza turn/completed,
OpenClaw tenta di interrompere il turno nativo e libera la corsia di sessione.
Gli errori dell'app-server stdio sicuri per la riproduzione, inclusi i timeout di inattività
del completamento del turno senza evidenze relative all'assistente, agli strumenti, a elementi attivi o a effetti collaterali, vengono
ritentati una volta con un nuovo tentativo dell'app-server. I timeout non sicuri dismettono comunque
il client app-server bloccato e liberano la corsia di sessione OpenClaw. Inoltre
eliminano l'associazione obsoleta al thread nativo anziché essere riprodotti
automaticamente. I timeout di monitoraggio del completamento mostrano testo specifico di Codex:
i casi sicuri per la riproduzione indicano che la risposta potrebbe essere incompleta, mentre i casi non sicuri invitano
l'utente a verificare lo stato corrente prima di riprovare. Le diagnostiche pubbliche dei timeout
includono campi strutturali quali l'ultimo metodo di notifica dell'app-server,
l'id/il tipo/il ruolo dell'elemento di risposta non elaborato dell'assistente, il numero di richieste/elementi attivi e
lo stato del monitoraggio attivato. Quando l'ultima notifica è un elemento di risposta non elaborato
dell'assistente, includono anche un'anteprima delimitata del testo dell'assistente. Non
includono il prompt non elaborato né il contenuto degli strumenti.
Individuazione dei modelli
Per impostazione predefinita, il Plugin Codex richiede all'app-server i modelli disponibili. La
disponibilità dei modelli è gestita dall'app-server Codex, pertanto l'elenco può cambiare quando
OpenClaw aggiorna la versione integrata di @openai/codex o quando una distribuzione
imposta appServer.command su un binario Codex diverso. La disponibilità può inoltre
dipendere dall'account. Usa /codex models su un Gateway in esecuzione per visualizzare il
catalogo attivo per tale harness e account.
Se l'individuazione non riesce o scade, OpenClaw utilizza un catalogo di riserva integrato:
| ID modello | Nome visualizzato | Livelli di ragionamento |
|---|---|---|
gpt-5.5 |
gpt-5.5 | low, medium, high, xhigh |
gpt-5.4-mini |
GPT-5.4-Mini | low, medium, high, xhigh |
Configura l'individuazione in plugins.entries.codex.config.discovery:
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: true, timeoutMs: 2500, }, }, }, }, },}Disabilita l'individuazione quando vuoi evitare che all'avvio venga eseguita una verifica di Codex e utilizzare soltanto il catalogo di riserva:
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: false, }, }, }, }, },}File di bootstrap dell'area di lavoro
Codex gestisce autonomamente AGENTS.md tramite l'individuazione nativa della documentazione di progetto.
OpenClaw non scrive file sintetici di documentazione di progetto Codex né dipende dai nomi
di file di riserva di Codex per i file della persona, poiché i file di riserva di Codex si applicano solo quando
AGENTS.md è assente.
Per garantire la parità dell'area di lavoro OpenClaw, l'harness Codex inoltra gli altri file di bootstrap come istruzioni per lo sviluppatore, ma non in modo identico:
TOOLS.mdviene inoltrato come istruzioni per lo sviluppatore Codex ereditate, pertanto anche i subagenti Codex nativi avviati durante il turno le ricevono.SOUL.md,IDENTITY.mdeUSER.mdvengono inoltrati come istruzioni di collaborazione limitate al turno. I subagenti Codex nativi non le ereditano, evitando così che i turni dei subagenti acquisiscano la persona e il profilo utente dell'agente principale.- Anche l'elenco compatto delle Skills OpenClaw caricate viene inoltrato come istruzioni per lo sviluppatore di collaborazione limitate al turno, pertanto neppure i subagenti Codex nativi lo ereditano.
- Il contenuto di
HEARTBEAT.mdnon viene inserito; i turni Heartbeat ricevono un riferimento in modalità collaborazione per leggere il file quando esiste e non è vuoto. - Il contenuto di
MEMORY.mddell'area di lavoro dell'agente configurata non viene incollato nell'input del turno Codex nativo quando gli strumenti di memoria sono disponibili per tale area di lavoro; quando il file esiste, l'harness aggiunge un breve riferimento alla memoria dell'area di lavoro nelle istruzioni per lo sviluppatore di collaborazione limitate al turno e Codex dovrebbe usarememory_searchomemory_getquando la memoria persistente è pertinente. Se gli strumenti sono disabilitati, la ricerca nella memoria non è disponibile oppure l'area di lavoro attiva è diversa dall'area di lavoro della memoria dell'agente,MEMORY.mdutilizza invece il normale percorso delimitato del contesto del turno. BOOTSTRAP.md, quando presente, viene inoltrato come contesto di riferimento dell'input del turno OpenClaw.
Sostituzioni tramite variabili d'ambiente
Le sostituzioni tramite variabili d'ambiente rimangono disponibili per i test locali:
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 ignora il binario gestito quando
appServer.command non è impostato.
OPENCLAW_CODEX_APP_SERVER_GUARDIAN=1 è stato rimosso. Usa invece
plugins.entries.codex.config.appServer.mode: "guardian" oppure
OPENCLAW_CODEX_APP_SERVER_MODE=guardian per test locali occasionali. La configurazione è
preferibile per distribuzioni ripetibili, poiché mantiene il comportamento del Plugin nello
stesso file sottoposto a revisione del resto della configurazione dell'harness Codex.