Codex harness
Codex-Harness-Referenz
Diese Referenz behandelt die detaillierte Konfiguration für das offizielle Plugin codex.
Beginnen Sie für die Einrichtung und Routing-Entscheidungen mit dem
Codex-Harness.
Plugin-Konfigurationsoberfläche
Alle Einstellungen des Codex-Harness befinden sich unter plugins.entries.codex.config.
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: true, timeoutMs: 2500, }, appServer: { mode: "guardian", }, }, }, }, },}Felder der obersten Ebene:
| Feld | Standard | Bedeutung |
|---|---|---|
discovery |
aktiviert | Einstellungen zur Modellerkennung für Codex-App-Server model/list. |
appServer |
verwalteter stdio-App-Server | Einstellungen für Transport, Befehl, Authentifizierung, Genehmigung, Sandbox und Zeitüberschreitung. Der reguläre Harness verwendet standardmäßig agentenspezifischen Zustand. |
codexDynamicToolsLoading |
"searchable" |
Verwenden Sie "direct", um dynamische OpenClaw-Tools direkt in den anfänglichen Codex-Toolkontext aufzunehmen. |
codexDynamicToolsExclude |
[] |
Zusätzliche Namen dynamischer OpenClaw-Tools, die bei Codex-App-Server-Durchläufen ausgelassen werden sollen. |
codexPlugins |
deaktiviert | Native Unterstützung für Codex-Plugins/-Apps, einschließlich optionalem Zugriff auf Apps verbundener Konten. Siehe Native Codex-Plugins. |
computerUse |
deaktiviert | Einrichtung von Codex Computer Use. Siehe Codex Computer Use. |
sessionCatalog |
aktiviert | Native Codex-Sitzungserkennung für die Seitenleiste. Setzen Sie enabled: false, um die Erkennung zu deaktivieren, ohne den Provider oder Harness zu deaktivieren. |
supervision |
deaktiviert | Agentenseitige Richtlinie für Transkripte und Schreibsteuerung nativer Sitzungen. Siehe Codex-Überwachung. |
Überwachung
Die native Sitzungserkennung listet standardmäßig nicht archivierte Codex-Sitzungen vom Gateway- Computer und von entsprechend aktivierten gekoppelten Nodes auf. Deaktivieren Sie nur diesen Katalog mit:
{ plugins: { entries: { codex: { enabled: true, config: { sessionCatalog: { enabled: false, }, }, }, }, },}supervision steuert agentenseitige Tools separat:
| Feld | Standard | Bedeutung |
|---|---|---|
enabled |
false |
Agentenseitige Codex-Überwachungstools aktivieren. Dies steuert nicht den authentifizierten Sitzungskatalog für Bediener. |
endpoints |
integrierter lokaler Endpunkt | Kompatibilitäts- und erweiterte Endpunktziele für den beibehaltenen Codex-Überwachungsagenten und eigenständige MCP-Tools. Der menschliche Katalog und der Branch-Ablauf ignorieren diese Ziele und verwenden den über appServer aufgelösten Überwachungs-App-Server. |
allowRawTranscripts |
false |
Bei aktivierter Überwachung autonome Transkriptlesevorgänge durch Agenten oder eigenständige MCP-Tools sowie aus Transkripten abgeleitete Listenfelder zulassen. Reine Metadaten-Lesevorgänge über codex_threads bleiben verfügbar. Steuert nicht die authentifizierte Fortsetzung in der Control UI. |
allowWriteControls |
false |
Bei aktivierter Überwachung autonome codex_threads-Mutationen zum Forken, Umbenennen, Archivieren und Wiederherstellen sowie eigenständige MCP-Vorgänge zum Senden, Steuern und Unterbrechen zulassen. Umgeht keine anderen Prüfungen auf Bindung, Host, Status oder Bestätigung. |
Endpunkteinträge akzeptieren diese Felder:
| Feld | Gilt für | Bedeutung |
|---|---|---|
id |
alle | Stabile Endpunkt-ID. |
label |
alle | Optionale Anzeigebezeichnung. |
transport |
alle | "stdio-proxy" oder "websocket". |
command |
stdio-proxy |
Optionaler App-Server-Befehl. |
args |
stdio-proxy |
Optionale Befehlsargumente. |
cwd |
stdio-proxy |
Optionales Arbeitsverzeichnis des untergeordneten Prozesses. |
url |
websocket |
Erforderliche WebSocket- oder unterstützte lokale Socket-URL. |
authTokenEnv |
websocket |
Optionale Umgebungsvariable, deren Wert den Endpunkt authentifiziert. |
Die Seite Codex-Sitzungen verwendet den Überwachungs-App-Server des Plugins und zeigt
nur nicht archivierte Sitzungen an. Ohne explizite Verbindungseinstellungen unter appServer
wird diese Verbindung als verwaltetes stdio im Benutzer-Home betrieben. Gespeicherte oder inaktive lokale Zeilen können
einen modellgebundenen Chat mit begrenztem Benutzer- und Assistentenverlauf bis zum letzten
persistierten abschließenden Quelldurchlauf erstellen. Seine private Bindung hält den Snapshot-Fork,
den kanonischen Branch aus der appServer-Quelle, die Verlaufseinspeisung und spätere Durchläufe auf dieser
Verbindung. Beim ersten kanonischen Start wird das vom Fork zurückgegebene Paar verwendet. Bei späteren
Fortsetzungen werden OpenClaw-Modell- und Provider-Überschreibungen ausgelassen, damit Codex das
persistierte Paar des kanonischen Threads wiederherstellt; eine separate native Änderung kann dieses
Paar aktualisieren, aber das äußere Modell und die Fallback-Kette ersetzen es niemals. Gespeicherte und inaktive
Zeilen können nach Bestätigung, dass kein anderer Runner vorhanden ist, archiviert werden, sofern nicht eine andere aktive
OpenClaw-Bindung das genaue Ziel oder einen seiner nicht archivierten erzeugten
Nachfolger besitzt. OpenClaw folgt der Nachfolger-Paginierung von Codex und bricht bei
Aufzählungsfehlern, Zyklen oder Ausschöpfung des Sicherheitslimits sicher ab. Die Bestätigung deckt weiterhin
unbekannte native Clients und das Zeitfenster zwischen Statusprüfung und Archivierung ab. Ein überwachter
modellgebundener Chat kann nicht gelöscht werden, solange er die native Bindung schützt.
Aktive Quellen können keinen Branch erstellen oder archiviert werden, ein vorhandener überwachter
Chat kann jedoch weiterhin geöffnet werden. Jede Zeile eines gekoppelten Nodes bleibt schreibgeschützt; der Node-
Transport stellt den vom Harness benötigten Streaming-Lebenszyklus noch nicht bereit.
appServer.homeScope: "user" allein ändert, welches Codex-Home ein verwalteter Harness-
Prozess verwendet; dadurch wird der Flottenkatalog nicht veröffentlicht. Das Aktivieren der Überwachung ändert
den Harness-Standard nicht. Stattdessen verwendet die separate Überwachungsverbindung
standardmäßig verwaltetes stdio im Benutzer-Home, wenn keine expliziten Verbindungseinstellungen unter appServer
vorhanden sind. Explizite Einstellungen werden für diese Verbindung berücksichtigt.
Ausstehende und festgeschriebene überwachte Bindungen behalten diese Verbindung für jeden Durchlauf bei;
eine deaktivierte Überwachung oder eine Abweichung bei Verbindung bzw. Lebenszyklus bricht sicher ab, anstatt
auf den Agenten-Home-Harness zurückzufallen. Die Standardverbindung teilt gespeicherte
Sitzungen mit nativen Codex-Clients, nicht deren prozesslokalen Aktivitätsstatus.
Veraltete Einstellungen unter plugins.entries.codex-supervisor werden nicht mehr unterstützt. Führen Sie
openclaw doctor --fix aus, um den alten Eintrag, die Endpunktdefinitionen, Richtlinien-
Flags und Plugin-Zulassungs-/Sperrverweise in diesen Block zu migrieren. Explizite kanonische
Werte unter codex.config.supervision haben bei Konflikten Vorrang.
App-Server-Transport
Für reguläre Harness-Durchläufe startet OpenClaw die verwaltete Codex-Binärdatei, die
mit dem offiziellen Plugin ausgeliefert wird (derzeit @openai/codex 0.145.0):
codex app-server --listen stdio://Dadurch bleibt die App-Server-Version an das offizielle Plugin codex gebunden, statt
an eine beliebige separat lokal installierte Codex-CLI. Setzen Sie
appServer.command nur, wenn Sie bewusst eine andere ausführbare Datei verwenden möchten.
Reguläre verwaltete Durchläufe mit dem standardmäßig isolierten Agenten-Home bevorzugen dieses angeheftete
Paket auch dann, wenn ein macOS-Desktop-Bundle installiert ist. Wenn
Computer Use aktiviert ist oder homeScope
den Wert "user" hat und nativen Computer-Use-Zustand laden kann, bevorzugt der verwaltete Start stattdessen
die Binärdatei der Desktop-App, die über die erforderlichen macOS-Berechtigungen verfügt. Dieselbe
Desktop-zuerst-Regel gilt, wenn die wirksame Codex-Konfiguration eines isolierten Agenten-Homes
native Computer Use aktiviert. Wenn kein Desktop-App-Bundle installiert ist, greift OpenClaw
auf die Binärdatei des angehefteten Pakets zurück.
Die Übergabe ausführbarer Dateien und die Abschirmung nativer Konfiguration koordinieren Clients innerhalb eines laufenden Gateway-Prozesses. Starten Sie das Gateway neu, nachdem ein anderer Prozess die native Codex-Plugin-Konfiguration geändert hat.
Die Überwachung löst eine separate Verbindung auf. Ohne explizite
Verbindungseinstellungen unter appServer verwendet sie verwaltetes stdio mit homeScope: "user";
der reguläre Harness bleibt bei verwaltetem stdio mit homeScope: "agent". Explizite
Verbindungseinstellungen werden von beiden Pfaden berücksichtigt. Setzen Sie homeScope: "user"
explizit, wenn der reguläre Harness $CODEX_HOME (oder ~/.codex)
mit nativen Clients teilen soll. Eine private überwachte Bindung verwendet unabhängig vom Standard
des regulären Harness die Überwachungsverbindung. Unabhängige App-Server-
Prozesse behalten getrennte Live-Status- und Genehmigungszustände bei.
Für nicht produktive Tests mit einem bereits laufenden App-Server ist der WebSocket- Transport verfügbar:
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { transport: "websocket", url: "ws://gateway-host:39175", authToken: "${CODEX_APP_SERVER_TOKEN}", requestTimeoutMs: 60000, }, }, }, }, },}Codex stuft den WebSocket-Transport als experimentell und nicht unterstützt ein. Bevorzugen Sie für Produktions-Workloads verwaltetes stdio oder den lokalen Unix-Steuerungssocket.
Felder unter appServer:
| Feld | Standard | Bedeutung |
|---|---|---|
transport |
"stdio" |
"stdio" startet Codex; ein explizites "unix" stellt eine Verbindung zum lokalen Steuerungs-Socket her; "websocket" stellt eine Verbindung zu url her. |
homeScope |
"agent" |
"agent" isoliert den gewöhnlichen Harness-Zustand je OpenClaw-Agent. "user" ist eine explizite Opt-in-Option, die das native $CODEX_HOME oder ~/.codex gemeinsam nutzt, die native Authentifizierung verwendet und die Thread-Verwaltung ausschließlich für den Eigentümer aktiviert. Der Benutzerbereich unterstützt lokales stdio oder Unix-Transport. Für die separate Überwachungsverbindung wird ein nicht festgelegter Wert bei stdio oder Unix als "user" und bei WebSocket als "agent" aufgelöst. |
command |
verwaltete Codex-Binärdatei | Ausführbare Datei für den stdio-Transport. Lassen Sie den Wert nicht festgelegt, um die verwaltete Binärdatei zu verwenden. |
args |
["app-server", "--listen", "stdio://"] |
Argumente für den stdio-Transport. |
url |
nicht festgelegt | WebSocket-App-Server-URL oder unix://-URL. Ein explizit leerer Unix-Pfad wählt den kanonischen Steuerungs-Socket im Benutzerverzeichnis aus. |
authToken |
nicht festgelegt | Bearer-Token für den WebSocket-Transport. Akzeptiert eine Literalzeichenfolge oder SecretInput wie ${CODEX_APP_SERVER_TOKEN}. |
headers |
{} |
Zusätzliche WebSocket-Header. Headerwerte akzeptieren Literalzeichenfolgen oder SecretInput-Werte, beispielsweise x-codex-client-session-token: "${CODEX_CLIENT_SESSION_TOKEN}". |
clearEnv |
[] |
Zusätzliche Namen von Umgebungsvariablen, die aus dem gestarteten stdio-App-Server-Prozess entfernt werden, nachdem OpenClaw dessen geerbte Umgebung erstellt hat. |
remoteWorkspaceRoot |
nicht festgelegt | Stammverzeichnis des Remote-Codex-App-Server-Arbeitsbereichs. Wenn festgelegt, leitet OpenClaw das lokale Arbeitsbereich-Stammverzeichnis aus dem aufgelösten OpenClaw-Arbeitsbereich ab, behält das aktuelle cwd-Suffix unter diesem Remote-Stammverzeichnis bei und sendet nur das endgültige App-Server-cwd an Codex. Wenn sich das cwd außerhalb des aufgelösten OpenClaw-Arbeitsbereich-Stammverzeichnisses befindet, verweigert OpenClaw den Vorgang, statt einen Gateway-lokalen Pfad an den Remote-App-Server zu senden. |
loopDetectionPreToolUseRelay |
true |
Installiert den Codex-Unterprozess PreToolUse, der ausschließlich für die OpenClaw-Schleifenerkennung und deren explizite Markierung ohne Richtlinie verwendet wird. Legen Sie false fest, um die Prozessauffächerung pro Tool zu reduzieren. Plugin-Hooks vor der Tool-Ausführung und die Richtlinie für vertrauenswürdige Tools installieren weiterhin das erforderliche Relay. |
requestTimeoutMs |
60000 |
Zeitüberschreitung für Aufrufe der App-Server-Steuerungsebene. |
turnCompletionIdleTimeoutMs |
60000 |
Ruhefenster, nachdem Codex einen Turn akzeptiert hat oder nach einer Turn-bezogenen App-Server-Anfrage, während OpenClaw auf turn/completed wartet. |
turnAssistantCompletionIdleTimeoutMs |
10000 |
Ruhefenster, nachdem ein endgültiges/nicht kommentierendes Assistentenelement oder der Abschluss einer rohen Assistentenausgabe vor einem Tool die Freigabe der Assistentenausgabe aktiviert, während OpenClaw weiterhin auf turn/completed wartet. Eine Erhöhung gibt Codex mehr Zeit, turn/completed auszugeben, bevor OpenClaw unterbricht und die Sitzungsspur freigibt. |
postToolRawAssistantCompletionIdleTimeoutMs |
300000 |
Abschlussleerlauf- und Fortschrittsüberwachung, die nach einer Tool-Übergabe, dem Abschluss eines nativen Tools, dem Fortschritt einer rohen Assistentenausgabe nach einem Tool, dem Abschluss einer rohen Schlussfolgerung oder einem Schlussfolgerungsfortschritt verwendet wird, während OpenClaw auf turn/completed wartet. Verwenden Sie dies für vertrauenswürdige oder rechenintensive Arbeitslasten, bei denen die Synthese nach einem Tool berechtigterweise länger ruhig bleiben kann als das Freigabebudget des endgültigen Assistenten. |
mode |
"yolo", es sei denn, lokale Codex-Anforderungen lassen YOLO nicht zu |
Voreinstellung für YOLO- oder durch einen Guardian geprüfte Ausführung. |
approvalPolicy |
"never" oder eine zulässige Guardian-Genehmigungsrichtlinie |
Native Codex-Genehmigungsrichtlinie, die beim Start und Fortsetzen des Threads sowie beim Turn gesendet wird. |
sandbox |
"danger-full-access" oder eine zulässige Guardian-Sandbox |
Nativer Codex-Sandbox-Modus, der beim Start und Fortsetzen des Threads gesendet wird. Aktive OpenClaw-Sandboxes beschränken danger-full-access-Turns auf Codex workspace-write; das Netzwerk-Flag des Turns folgt dem ausgehenden Netzwerkverkehr der OpenClaw-Sandbox. |
approvalsReviewer |
"user" oder ein zulässiger Guardian-Prüfer |
Verwenden Sie "auto_review", damit Codex native Genehmigungsaufforderungen prüft, sofern dies zulässig ist. |
defaultWorkspaceDir |
aktuelles Prozessverzeichnis | Von /codex bind verwendeter Arbeitsbereich, wenn --cwd nicht angegeben ist. |
serviceTier |
nicht festgelegt | Optionale Dienststufe des Codex-App-Servers. "priority" aktiviert das Fast-Mode-Routing, "flex" fordert die Flex-Verarbeitung an und null entfernt die Überschreibung. Das veraltete "fast" wird als "priority" akzeptiert. |
networkProxy |
deaktiviert | Aktiviert optional das Netzwerk des Codex-Berechtigungsprofils für App-Server-Befehle. OpenClaw definiert die ausgewählte permissions.<profile>.network-Konfiguration und wählt sie mit default_permissions aus, anstatt sandbox zu senden. |
experimental.sandboxExecServer |
false |
Optionale Vorschaufunktion, die eine durch die OpenClaw-Sandbox gestützte Codex-Umgebung beim unterstützten Codex-App-Server registriert, sodass die native Codex-Ausführung innerhalb der aktiven OpenClaw-Sandbox erfolgen kann. |
appServer.networkProxy ist explizit, da es den Sandbox-Vertrag von Codex
ändert. Wenn diese Option aktiviert ist, setzt OpenClaw außerdem features.network_proxy.enabled und
default_permissions in der Codex-Thread-Konfiguration, damit das generierte Berechtigungsprofil
die von Codex verwaltete Netzwerkfunktion starten kann. OpenClaw generiert standardmäßig einen
kollisionsresistenten openclaw-network-<fingerprint>-Profilnamen aus dem
Profilinhalt; verwenden Sie profileName nur, wenn ein stabiler lokaler Name
erforderlich ist.
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", }, }, }, }, }, },};Wenn die normale App-Server-Laufzeit danger-full-access wäre, verwendet die Aktivierung von
networkProxy stattdessen einen Dateisystemzugriff im Workspace-Stil für das generierte
Berechtigungsprofil. Die von Codex verwaltete Netzwerkdurchsetzung ist eine Sandbox-
Netzwerkfunktion, daher würde ein Profil mit Vollzugriff ausgehenden Datenverkehr nicht schützen.
Das Plugin blockiert ältere, neuere noch nicht validierte, Vorabversions-, mit Build-Zusatz versehene oder
unversionierte App-Server-Handshakes. Der Codex-App-Server muss eine stabile Version
von 0.143.0 bis einschließlich der gebündelten Version 0.145.0 melden.
OpenClaw behandelt WebSocket-App-Server-URLs, die nicht auf Loopback verweisen, als remote und erfordert
identitätstragende WebSocket-Authentifizierung über appServer.authToken oder einen
Authorization-Header. appServer.authToken und jeder appServer.headers.*-
Wert können ein SecretInput sein; die Secrets-Laufzeit löst SecretRefs und die
Kurzschreibweise für Umgebungsvariablen auf, bevor OpenClaw App-Server-Startoptionen erstellt, und nicht aufgelöste
strukturierte SecretRefs führen zu einem Fehler, bevor ein Token oder Header gesendet wird. Wenn native
Codex-Plugins konfiguriert sind, verwendet OpenClaw die Plugin-Steuerungsebene des verbundenen App-Servers,
um diese Plugins zu installieren oder zu aktualisieren, und aktualisiert anschließend das App-
Inventar, damit Plugin-eigene Apps für den Codex-Thread sichtbar sind. app/list bleibt
die maßgebliche Quelle für Inventar und Metadaten, aber die OpenClaw-Richtlinie
entscheidet, ob thread/start für eine
aufgeführte zugängliche App config.apps[appId].enabled = true sendet, selbst wenn Codex sie derzeit als deaktiviert kennzeichnet. Unbekannte oder
fehlende App-IDs führen weiterhin zu einem geschlossenen Fehlerzustand; dieser Pfad aktiviert ausschließlich Marketplace-
Plugins über plugin/install und aktualisiert das Inventar. Verbinden Sie OpenClaw nur mit
Remote-App-Servern, denen Sie zutrauen, von OpenClaw verwaltete Plugin-Installationen
und Aktualisierungen des App-Inventars zu akzeptieren.
Genehmigungs- und Sandbox-Modi
Lokale stdio-App-Server-Sitzungen verwenden standardmäßig den YOLO-Modus:
approvalPolicy: "never", approvalsReviewer: "user" und
sandbox: "danger-full-access". Diese vertrauenswürdige lokale Betreiberkonfiguration ermöglicht es
unbeaufsichtigten OpenClaw-Durchläufen und Heartbeats, ohne native Genehmigungsabfragen,
die niemand beantworten kann, Fortschritte zu erzielen.
Wenn die lokale Systemanforderungsdatei von Codex implizite YOLO-Werte für Genehmigung,
Prüfer oder Sandbox nicht zulässt, behandelt OpenClaw den impliziten Standard stattdessen als Guardian
und wählt zulässige Guardian-Berechtigungen aus. tools.exec.mode: "auto"
erzwingt außerdem durch Guardian geprüfte Codex-Genehmigungen und behält unsichere
veraltete Überschreibungen für approvalPolicy: "never" oder sandbox: "danger-full-access" nicht bei;
setzen Sie tools.exec.mode: "full" für eine bewusst gewählte Konfiguration ohne Genehmigungen.
Einträge in [[remote_sandbox_config]], deren Hostname übereinstimmt, werden in derselben Anforderungsdatei
bei der Entscheidung über den Sandbox-Standard berücksichtigt.
Setzen Sie appServer.mode: "guardian" für durch Codex Guardian geprüfte Genehmigungen:
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { mode: "guardian", serviceTier: "priority", }, }, }, }, },}Die Voreinstellung guardian wird zu approvalPolicy: "on-request",
approvalsReviewer: "auto_review" und sandbox: "workspace-write" erweitert, wenn diese
Werte zulässig sind. Einzelne Richtlinienfelder überschreiben mode. Der ältere
Prüferwert guardian_subagent wird weiterhin als Kompatibilitätsalias akzeptiert,
neue Konfigurationen sollten jedoch auto_review verwenden.
Wenn eine OpenClaw-Sandbox aktiv ist, wird der lokale Codex-App-Server-Prozess weiterhin
auf dem Gateway-Host ausgeführt. OpenClaw deaktiviert daher für diesen Durchlauf den nativen Code Mode von Codex,
benutzerdefinierte MCP-Server und die durch Apps gestützte Plugin-Ausführung, anstatt
die hostseitige Sandbox von Codex als gleichwertig mit dem OpenClaw-Sandbox-
Backend zu behandeln. Shell-Zugriff wird über von der OpenClaw-Sandbox gestützte dynamische Tools
wie sandbox_exec und sandbox_process bereitgestellt, wenn die normalen exec-/process-Tools
verfügbar sind.
Native Ausführung in der Sandbox
Der stabile Standard ist ein geschlossener Fehlerzustand: Eine aktive OpenClaw-Sandbox deaktiviert native
Codex-Ausführungsoberflächen, die andernfalls auf dem Host des Codex-App-Servers
ausgeführt würden. Verwenden Sie appServer.experimental.sandboxExecServer: true nur, wenn Sie
die Unterstützung für Remote-Umgebungen von Codex mit dem Sandbox-Backend von OpenClaw testen möchten.
Dieser Vorschaupfad funktioniert mit jeder unterstützten Codex-App-Server-Version.
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { experimental: { sandboxExecServer: true, }, }, }, }, }, },}Wenn das Flag aktiviert und die aktuelle OpenClaw-Sitzung in einer Sandbox ausgeführt wird, startet OpenClaw einen lokalen Loopback-exec-Server, der von der aktiven Sandbox gestützt wird, registriert ihn beim Codex-App-Server und startet den Codex-Thread und -Durchlauf mit dieser OpenClaw-eigenen Umgebung. Wenn der App-Server die Umgebung nicht registrieren kann, schlägt der Lauf geschlossen fehl, statt stillschweigend auf die Host-Ausführung zurückzufallen.
Dieser Vorschaupfad ist ausschließlich lokal verfügbar. Ein Remote-WebSocket-App-Server kann den Loopback-exec-Server nur erreichen, wenn er auf demselben Host ausgeführt wird, daher lehnt OpenClaw diese Kombination ab.
Authentifizierungs- und Umgebungsisolation
Im standardmäßigen agentenspezifischen Home-Verzeichnis wird die Authentifizierung in dieser Reihenfolge ausgewählt:
- Ein explizites OpenClaw-Codex-Authentifizierungsprofil für den Agenten.
- Das vorhandene Konto des App-Servers im Codex-Home-Verzeichnis dieses Agenten.
- Nur für lokale stdio-App-Server-Starts:
CODEX_API_KEY, danachOPENAI_API_KEY, wenn kein App-Server-Konto vorhanden ist und weiterhin eine OpenAI-Authentifizierung erforderlich ist.
Wenn OpenClaw ein Codex-Authentifizierungsprofil im Stil eines ChatGPT-Abonnements erkennt (OAuth oder
Anmeldedatentyp „Token“), entfernt es CODEX_API_KEY und OPENAI_API_KEY aus
dem gestarteten Codex-Unterprozess. Dadurch bleiben API-Schlüssel auf Gateway-Ebene
für Embeddings oder direkte OpenAI-Modelle verfügbar, ohne dass native Codex-App-Server-
Durchläufe versehentlich über die API abgerechnet werden.
Explizite Codex-API-Schlüsselprofile und der lokale stdio-Fallback auf Umgebungsvariablenschlüssel verwenden die App-Server-Anmeldung statt geerbter Unterprozess-Umgebungsvariablen. WebSocket-App-Server- Verbindungen erhalten keinen Fallback auf API-Schlüssel aus der Gateway-Umgebung; verwenden Sie ein explizites Authentifizierungsprofil oder das eigene Konto des Remote-App-Servers.
Starts von stdio-App-Servern erben standardmäßig die Prozessumgebung von OpenClaw.
OpenClaw verwaltet die Kontobrücke des Codex-App-Servers und setzt CODEX_HOME auf ein
agentenspezifisches Verzeichnis im OpenClaw-Zustand dieses Agenten. Dadurch bleiben Codex-
Konfiguration, Konten, Plugin-Cache/-Daten und Thread-Zustand auf den OpenClaw-
Agenten beschränkt, statt aus dem persönlichen Home-Verzeichnis ~/.codex des Betreibers
einzufließen.
Setzen Sie appServer.homeScope: "user", um den nativen Codex-Zustand mit Codex
Desktop und der CLI zu teilen. Dieser lokale Benutzer-Home-Modus unterstützt verwaltetes stdio und
expliziten Unix-Transport. Er verwendet $CODEX_HOME, wenn gesetzt, andernfalls ~/.codex,
einschließlich nativer Authentifizierung, Konfiguration, Plugins und Threads.
OpenClaw überspringt seine Authentifizierungsprofilbrücke für den App-Server. Verifizierte Durchläufe des Besitzers
können codex_threads verwenden, um diese Threads aufzulisten (mit einem optionalen search-Filter),
zu lesen, zu forken, umzubenennen, zu archivieren und aus dem Archiv wiederherzustellen. Forken Sie einen Thread, bevor
Sie ihn in OpenClaw fortsetzen; unabhängige Codex-Prozesse koordinieren keine
gleichzeitigen Schreibzugriffe auf denselben Thread.
Diese Zustimmung zu homeScope gilt für gewöhnliche Harness-Sitzungen. Ein über
Codex Sessions erstellter Chat verwendet stattdessen seine private Überwachungsverbindung, die
die Authentifizierungs- und Provider-Konfiguration der nativen Verbindung für den
kanonischen Branch und zukünftige Wiederaufnahmen beibehält.
In einem modellgebundenen überwachten Chat kann codex_threads keinen anderen
Fork anhängen oder den an den Chat gebundenen nativen Thread archivieren. Auflisten und
ausschließlich Metadaten lesender Zugriff bleiben verfügbar. Das Lesen von Rohtranskripten erfordert allowRawTranscripts;
wenn diese Option deaktiviert ist, wird auch die Listensuche abgelehnt, da die native Suche
Übereinstimmungen in Transkriptvorschauen finden kann. Umbenennen, Wiederherstellen aus dem Archiv, abgelöstes Forken und
Archivieren eines nicht zugehörigen Threads, der keinem anderen OpenClaw-Chat gehört, erfordern
allowWriteControls. Keine der beiden Optionen umgeht eine gesperrte Bindung.
OpenClaw schreibt HOME für normale lokale App-Server-Starts nicht um.
Von Codex ausgeführte Unterprozesse wie openclaw, gh, git, Cloud-CLIs und Shell-
Befehle sehen das normale Prozess-Home-Verzeichnis und können Konfigurationen und
Token aus dem Benutzer-Home-Verzeichnis finden. Codex kann außerdem $HOME/.agents/skills und
$HOME/.agents/plugins/marketplace.json erkennen; diese Erkennung von .agents wird
absichtlich mit dem Home-Verzeichnis des Betreibers geteilt und ist vom isolierten
Zustand ~/.codex getrennt.
Im standardmäßigen Agentenbereich werden OpenClaw-Plugins und Snapshots von OpenClaw-Skills
weiterhin über die eigene Plugin-Registry und den Skill-Loader von OpenClaw bereitgestellt; persönliche
Codex-Assets aus ~/.codex dagegen nicht. Wenn Sie nützliche Codex-CLI-Skills oder
Plugins aus einem Codex-Home-Verzeichnis besitzen, die Teil eines isolierten OpenClaw-
Agenten werden sollen, inventarisieren Sie sie explizit:
openclaw migrate codex --dry-runopenclaw migrate apply codex --yesWenn eine Bereitstellung zusätzliche Umgebungsisolation erfordert, fügen Sie diese Variablen
zu appServer.clearEnv hinzu:
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { clearEnv: ["CODEX_API_KEY", "OPENAI_API_KEY"], }, }, }, }, },}appServer.clearEnv wirkt sich nur auf den gestarteten Unterprozess des Codex-App-Servers aus.
OpenClaw entfernt CODEX_HOME und HOME während der lokalen Startnormalisierung
aus dieser Liste: CODEX_HOME verweist weiterhin auf den ausgewählten Agenten- oder Benutzerbereich,
und HOME wird weiterhin vererbt, damit Unterprozesse den normalen Zustand im Benutzer-Home-Verzeichnis verwenden können.
Dynamische Tools
Dynamische Codex-Tools verwenden standardmäßig das Laden mit searchable und werden im
Namespace openclaw mit deferLoading: true bereitgestellt. OpenClaw stellt normalerweise keine
dynamischen Tools bereit, die native Workspace-Operationen von Codex oder
die eigene Tool-Suchoberfläche von Codex duplizieren:
readwriteeditapply_patchexecprocessupdate_plantool_calltool_describetool_searchtool_search_code
Wenn eine endliche Laufzeit-Zulassungsliste den nativen Code Mode deaktiviert, sendet OpenClaw eine
leere Auswahl der Ausführungsumgebung. In diesem direkten Fall ohne Sandbox
behält OpenClaw seine richtliniengefilterten Tools exec und process als Shell-
Fallback bei. Laufzeit-Zulassungslisten und codexDynamicToolsExclude gelten weiterhin.
Die meisten verbleibenden OpenClaw-Integrationstools, etwa für Messaging, Medien, Cron,
Browser, Nodes, Gateway, heartbeat_respond und web_search, sind
über die Codex-Tool-Suche unter diesem Namespace verfügbar. Dadurch bleibt der anfängliche
Modellkontext kleiner. Eine kleine Gruppe von Tools bleibt unabhängig von
codexDynamicToolsLoading direkt aufrufbar, da die Codex-Tool-Suche möglicherweise nicht verfügbar ist oder
nur eine Connector-Welt auflösen kann: agents_list, sessions_spawn und
sessions_yield. Entwickleranweisungen lenken normale Codex-Subagents
für Codex-native Subagent-Aufgaben weiterhin zu nativem spawn_agent, während
sessions_spawn für die ausdrückliche Delegation an OpenClaw oder ACP verfügbar bleibt.
Auch Quellantworten, die ausschließlich das Nachrichten-Tool verwenden, bleiben direkt, da dies ein
Vertrag zur Ablaufsteuerung ist.
Der Codex Code Mode stellt generische Ergebnisse dynamischer OpenClaw-Tools als Text dar. Parsen Sie ein
JSON-Ergebnis, bevor Sie Felder auslesen. Verschachtelte dynamische Aufrufe werden von der
Codex-Laufzeit serialisiert, daher sendet Promise.all sie nicht gleichzeitig; verwenden Sie beim
Starten untergeordneter Collector-Prozesse eine begrenzte sequenzielle Startschleife.
Mit catalogMode: "direct-only" markierte Tools, einschließlich des OpenClaw-Tools
computer, werden unter openclaw_direct gruppiert. OpenClaw fügt diesen Namespace
zur Liste code_mode.direct_only_tool_namespaces von Codex hinzu, ohne
vom Betreiber bereitgestellte Einträge zu ersetzen. Codex stellt diese Tools daher in
normalen und ausschließlich für den Code Mode vorgesehenen Threads als DirectModelOnly bereit, statt sie
durch verschachtelte Code-Mode-Aufrufe von tools.* zu leiten. Diese Abgrenzung ist für
Ergebnisse mit Bildern erforderlich: Die verschachtelte Code-Mode-Serialisierung reduziert die Bildausgabe auf
Text, wodurch der für die nächste Computeraktion benötigte Screenshot verloren ginge.
Setzen Sie codexDynamicToolsLoading: "direct" nur, wenn Sie eine Verbindung zu einem benutzerdefinierten
Codex-App-Server herstellen, der zurückgestellte dynamische Tools nicht durchsuchen kann, oder wenn Sie
die vollständige Tool-Nutzlast debuggen.
Zeitüberschreitungen
Dynamische Tool-Aufrufe im Besitz von OpenClaw werden unabhängig von
appServer.requestTimeoutMs begrenzt. Jede Codex-Anfrage item/tool/call verwendet die
erste verfügbare Zeitüberschreitung in dieser Reihenfolge:
- Ein positives aufrufspezifisches Argument
timeoutMs. - Für
image_generate:agents.defaults.mediaModels.image.timeoutMs. - Für
image_generateohne konfigurierte Zeitüberschreitung: der Standardwert von 120 Sekunden für die Bilderzeugung. - Für das Medienanalyse-Tool
image: der WerttimeoutSecondsdes ausgewählten bildfähigen Eintragstools.media.models[], in Millisekunden umgerechnet, oder der Medienstandardwert von 60 Sekunden. Bei der Bildanalyse gilt dies für die Anfrage selbst und wird nicht durch vorangegangene Vorbereitungsarbeiten reduziert. - Für das Tool
message: ein festes äußeres Budget von 600 Sekunden, das die Gateway-Zustellung und die begrenzte Abstimmung mit demselben Schlüssel abdeckt. - Der Standardwert von 90 Sekunden für dynamische Tools.
Dieser Watchdog ist das äußere dynamische Budget für item/tool/call. Providerspezifische
Anfragezeitüberschreitungen laufen innerhalb dieses Aufrufs und behalten ihre eigene Zeitüberschreitungssemantik.
Budgets für dynamische Tools sind auf 600000 ms begrenzt. agents_wait fügt 30000 ms
äußeren Spielraum für den Abschluss hinzu, und der App-Server-Client erlaubt 660000 ms, damit
das strukturierte Warteergebnis Codex erreichen kann. Bei einer Zeitüberschreitung bricht OpenClaw das Tool-Signal
nach Möglichkeit ab und gibt eine fehlgeschlagene Antwort des dynamischen Tools an Codex zurück, sodass
der Turn fortgesetzt werden kann, statt die Sitzung in processing zu belassen.
Nachdem Codex einen Turn akzeptiert hat und nachdem OpenClaw auf eine Turn-bezogene
App-Server-Anfrage geantwortet hat, erwartet das Harness, dass Codex im aktuellen Turn Fortschritte erzielt
und den nativen Turn schließlich mit turn/completed abschließt. Wenn der
App-Server für appServer.turnCompletionIdleTimeoutMs inaktiv bleibt, unterbricht OpenClaw
den Codex-Turn nach bestem Bemühen, zeichnet eine diagnostische Zeitüberschreitung auf und
gibt die OpenClaw-Sitzungsspur frei, damit nachfolgende Chatnachrichten nicht
hinter einem veralteten nativen Turn eingereiht werden.
Die meisten nicht abschließenden Benachrichtigungen für denselben Turn deaktivieren diesen kurzen Watchdog,
da Codex damit nachgewiesen hat, dass der Turn noch aktiv ist. Tool-Übergaben verwenden ein längeres
Inaktivitätsbudget nach einem Tool: nachdem OpenClaw eine Antwort item/tool/call zurückgibt,
nachdem native Tool-Elemente wie commandExecution abgeschlossen sind, nach rohen
Abschlüssen von custom_tool_call_output sowie nach rohem Assistentenfortschritt,
rohen Reasoning-Abschlüssen oder Reasoning-Fortschritt nach einem Tool. Der Schutzmechanismus verwendet
appServer.postToolRawAssistantCompletionIdleTimeoutMs, wenn dies konfiguriert ist, und
standardmäßig andernfalls fünf Minuten. Dasselbe Budget nach einem Tool verlängert außerdem
den Fortschritts-Watchdog für das stille Synthesefenster, bevor Codex das
nächste Ereignis des aktuellen Turns ausgibt. Auf Reasoning-Abschlüsse, Abschlüsse von
Commentary-agentMessage sowie rohen Reasoning- oder Assistentenfortschritt vor einem Tool
kann eine automatische endgültige Antwort folgen; daher verwenden sie den Antwortschutz nach Fortschritt,
statt die Sitzungsspur sofort freizugeben. Nur abgeschlossene endgültige bzw. nicht als Commentary
gekennzeichnete agentMessage-Elemente und rohe Assistentenabschlüsse vor einem Tool aktivieren die
Freigabe nach Assistentenausgabe: Wenn Codex anschließend ohne turn/completed inaktiv bleibt,
unterbricht OpenClaw den nativen Turn nach bestem Bemühen und gibt die Sitzungsspur
frei. Wiederholungssichere stdio-App-Server-Fehler, einschließlich Zeitüberschreitungen bei
inaktivem Turn-Abschluss ohne Hinweise auf Assistenten-, Tool-, aktive Element- oder Nebenwirkungsaktivität,
werden einmal mit einem neuen App-Server-Versuch wiederholt. Unsichere Zeitüberschreitungen setzen den
festgefahrenen App-Server-Client dennoch außer Betrieb und geben die OpenClaw-Sitzungsspur frei. Außerdem
löschen sie die veraltete Bindung des nativen Threads, statt automatisch
wiederholt zu werden. Zeitüberschreitungen der Abschlussüberwachung zeigen Codex-spezifischen Text zur
Zeitüberschreitung an: Wiederholungssichere Fälle weisen darauf hin, dass die Antwort unvollständig sein könnte,
während unsichere Fälle den Benutzer auffordern, vor einem erneuten Versuch den aktuellen Zustand zu prüfen.
Öffentliche Zeitüberschreitungsdiagnosen enthalten strukturelle Felder wie die Methode der letzten
App-Server-Benachrichtigung, ID/Typ/Rolle des rohen Assistentenantwortelements, die Anzahl aktiver
Anfragen und Elemente sowie den aktivierten Überwachungsstatus. Wenn die letzte Benachrichtigung ein
rohes Assistentenantwortelement ist, enthalten sie außerdem eine begrenzte Vorschau des Assistententextes.
Sie enthalten weder rohe Prompt- noch Tool-Inhalte.
Modellerkennung
Standardmäßig fragt das Codex-Plugin den App-Server nach verfügbaren Modellen. Die
Modellverfügbarkeit liegt in der Verantwortung des Codex-App-Servers, daher kann sich die Liste ändern, wenn
OpenClaw die gebündelte Version @openai/codex aktualisiert oder wenn eine Bereitstellung
appServer.command auf eine andere Codex-Binärdatei verweist. Die Verfügbarkeit kann auch
kontospezifisch sein. Verwenden Sie /codex models auf einem laufenden Gateway, um den aktuellen
Katalog für dieses Harness und Konto anzuzeigen.
Wenn die Erkennung fehlschlägt oder eine Zeitüberschreitung auftritt, verwendet OpenClaw einen gebündelten Ersatzkatalog:
| Modell-ID | Anzeigename | Reasoning-Stufen |
|---|---|---|
gpt-5.5 |
gpt-5.5 | low, medium, high, xhigh |
gpt-5.4-mini |
GPT-5.4-Mini | low, medium, high, xhigh |
Passen Sie die Erkennung unter plugins.entries.codex.config.discovery an:
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: true, timeoutMs: 2500, }, }, }, }, },}Deaktivieren Sie die Erkennung, wenn beim Start keine Codex-Abfrage erfolgen und ausschließlich der Ersatzkatalog verwendet werden soll:
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: false, }, }, }, }, },}Bootstrap-Dateien des Arbeitsbereichs
Codex verarbeitet AGENTS.md selbst über die native Erkennung von Projektdokumenten.
OpenClaw schreibt keine synthetischen Codex-Projektdokumentdateien und ist für Persona-Dateien
nicht von Codex-Ersatzdateinamen abhängig, da Codex-Ersatzdateien nur gelten, wenn
AGENTS.md fehlt.
Für die Übereinstimmung mit dem OpenClaw-Arbeitsbereich leitet das Codex-Harness die anderen Bootstrap-Dateien als Entwickleranweisungen weiter, jedoch nicht auf identische Weise:
TOOLS.mdwird als vererbte Codex-Entwickleranweisung weitergeleitet, sodass native Codex-Subagents, die während des Turns gestartet werden, sie ebenfalls sehen.SOUL.md,IDENTITY.mdundUSER.mdwerden als Turn-bezogene Zusammenarbeitsanweisungen weitergeleitet. Native Codex-Subagents erben sie nicht, wodurch verhindert wird, dass Subagent-Turns die Persona und das Benutzerprofil des übergeordneten Agents übernehmen.- Die kompakte Liste geladener OpenClaw-Skills wird ebenfalls als Turn-bezogene Entwickleranweisung zur Zusammenarbeit weitergeleitet, sodass native Codex-Subagents sie ebenfalls nicht erben.
- Der Inhalt von
HEARTBEAT.mdwird nicht eingefügt; Heartbeat-Turns erhalten einen Hinweis im Zusammenarbeitsmodus, die Datei zu lesen, wenn sie vorhanden und nicht leer ist. - Der Inhalt von
MEMORY.mdaus dem konfigurierten Agent-Arbeitsbereich wird nicht in die native Codex-Turn-Eingabe eingefügt, wenn für diesen Arbeitsbereich Speicher-Tools verfügbar sind; wenn die Datei vorhanden ist, fügt das Harness den Turn-bezogenen Entwickleranweisungen zur Zusammenarbeit einen kurzen Hinweis auf den Arbeitsbereichsspeicher hinzu, und Codex solltememory_searchodermemory_getverwenden, wenn dauerhafter Speicher relevant ist. Wenn Tools deaktiviert sind, die Speichersuche nicht verfügbar ist oder der aktive Arbeitsbereich vom Agent-Speicherarbeitsbereich abweicht, verwendetMEMORY.mdstattdessen den normalen begrenzten Turn-Kontextpfad. BOOTSTRAP.mdwird, sofern vorhanden, als Referenzkontext für die OpenClaw-Turn-Eingabe weitergeleitet.
Umgebungsüberschreibungen
Umgebungsüberschreibungen bleiben für lokale Tests verfügbar:
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 umgeht die verwaltete Binärdatei, wenn
appServer.command nicht gesetzt ist.
OPENCLAW_CODEX_APP_SERVER_GUARDIAN=1 wurde entfernt. Verwenden Sie stattdessen
plugins.entries.codex.config.appServer.mode: "guardian" oder
OPENCLAW_CODEX_APP_SERVER_MODE=guardian für einmalige lokale Tests. Für
reproduzierbare Bereitstellungen wird die Konfiguration bevorzugt, da das Plugin-Verhalten dadurch in
derselben geprüften Datei wie die übrige Einrichtung des Codex-Harness verbleibt.