mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-27 21:07:01 -06:00
fix(agents): preserve Codex for reasoning capability metadata (#130752)
* fix(agents): preserve Codex for reasoning capability metadata Keep native-compatible reasoning metadata out of authored transport overrides. Share effective harness availability across execution, session metadata, and thinking controls while preserving exact-request fallback and locked ownership. Fixes #130665. * fix(agents): keep cold harness registry reads side-effect free
This commit is contained in:
committed by
GitHub
parent
36856401d4
commit
625f3cf7ea
@@ -4,7 +4,7 @@ title: "Codex harness"
|
||||
read_when:
|
||||
- You want to use the official Codex app-server harness
|
||||
- You need Codex harness config examples
|
||||
- You want Codex-only deployments to fail instead of falling back to OpenClaw
|
||||
- You need explicit Codex runtime policy and fallback rules
|
||||
---
|
||||
|
||||
The official `codex` plugin runs embedded OpenAI agent turns through Codex
|
||||
@@ -735,13 +735,13 @@ Keep provider refs and runtime policy separate:
|
||||
| Send Codex feedback only | `/codex diagnostics [note]` |
|
||||
| Start an ACP/acpx task | ACP/acpx session commands, not `/codex` |
|
||||
|
||||
| Use case | Configure | Verify | Notes |
|
||||
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ------------------------------------------------------- |
|
||||
| Eligible OpenAI route with native Codex runtime | Exact official HTTPS Responses/ChatGPT route with no authored provider request override, plus enabled `codex` plugin | `/status` shows `Runtime: OpenAI Codex` | Valid Fast runtime controls do not disqualify this path |
|
||||
| Fail closed if Codex is unavailable | Provider or model `agentRuntime.id: "codex"` | Turn fails instead of embedded fallback | Use for Codex-only deployments |
|
||||
| Direct OpenAI API-key traffic through OpenClaw | Provider or model `agentRuntime.id: "openclaw"` and normal OpenAI auth | `/status` shows OpenClaw runtime | Use only when OpenClaw is intentional |
|
||||
| Legacy config | legacy Codex GPT refs | `openclaw doctor --fix` rewrites it | Do not write new config this way |
|
||||
| ACP/acpx Codex adapter | ACP `sessions_spawn({ runtime: "acp" })` | ACP task/session status | Separate from native Codex harness |
|
||||
| Use case | Configure | Verify | Notes |
|
||||
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------- |
|
||||
| Eligible OpenAI route with native Codex runtime | Exact official HTTPS Responses/ChatGPT route with no authored provider request override, plus enabled `codex` plugin | `/status` shows `Runtime: OpenAI Codex` | Valid Fast runtime controls do not disqualify this path |
|
||||
| Fail closed if Codex is unavailable | Provider or model `agentRuntime.id: "codex"` | Missing harness fails the turn | Authored request overrides may still use declared fallback |
|
||||
| Direct OpenAI API-key traffic through OpenClaw | Provider or model `agentRuntime.id: "openclaw"` and normal OpenAI auth | `/status` shows OpenClaw runtime | Use only when OpenClaw is intentional |
|
||||
| Legacy config | legacy Codex GPT refs | `openclaw doctor --fix` rewrites it | Do not write new config this way |
|
||||
| ACP/acpx Codex adapter | ACP `sessions_spawn({ runtime: "acp" })` | ACP task/session status | Separate from native Codex harness |
|
||||
|
||||
`agents.defaults.imageModel` follows the same prefix split. Use `openai/gpt-*`
|
||||
for the normal OpenAI route and `codex/gpt-*` only when image understanding
|
||||
@@ -837,9 +837,12 @@ fail-closed rule:
|
||||
}
|
||||
```
|
||||
|
||||
With Codex forced, OpenClaw fails early if the effective route is not declared
|
||||
Codex-compatible, the plugin is disabled, the app-server is too old, or the
|
||||
app-server cannot start.
|
||||
With Codex forced, OpenClaw fails early if the plugin is disabled, the app-server
|
||||
is too old or cannot start, or route/auth support is rejected without a declared
|
||||
fallback. Authored request overrides may instead use the
|
||||
[selection-time OpenClaw fallback](/concepts/agent-runtimes#runtime-selection)
|
||||
that preserves the exact request. Once Codex starts, its failures are not replayed
|
||||
through OpenClaw.
|
||||
|
||||
## App-server policy
|
||||
|
||||
@@ -1501,10 +1504,15 @@ configs. Select an `openai/gpt-*` model, enable
|
||||
|
||||
**OpenClaw uses the built-in harness instead of Codex:** confirm the effective
|
||||
route is an exact official HTTPS Platform Responses or ChatGPT Responses route,
|
||||
has no authored provider request override, and that the Codex plugin is installed and
|
||||
enabled. The `openai/gpt-*` prefix alone is not enough. For strict proof while
|
||||
testing, set provider or model `agentRuntime.id: "codex"`; forced Codex fails
|
||||
instead of falling back when the route or harness is incompatible.
|
||||
has no authored provider request override, and that the Codex plugin is installed
|
||||
and enabled. Affirmative reasoning support and native reasoning-effort metadata
|
||||
do not count as request overrides. Headers, request parameters, timeouts, and
|
||||
payload compatibility switches still do: Codex declares an OpenClaw fallback
|
||||
that preserves the exact request, including for explicit runtime selections.
|
||||
Other unsupported routes/authentication and missing explicit harnesses fail
|
||||
closed. The `openai/gpt-*` prefix and `agentRuntime.id: "codex"` alone are not
|
||||
execution proof; inspect the actual harness in the completed result. See
|
||||
[Runtime selection](/concepts/agent-runtimes#runtime-selection).
|
||||
|
||||
**OpenAI Codex runtime falls back to the API-key path:** collect a redacted
|
||||
gateway excerpt that shows the model, runtime, selected provider, and
|
||||
|
||||
@@ -280,11 +280,13 @@ error. Do not use harness scope after a request or tool action may have produced
|
||||
side effects.
|
||||
|
||||
Configured runtime policy remains authoritative about the desired runtime. A
|
||||
persisted session `agentHarnessId` keeps ownership of its native transcript
|
||||
locked session `agentHarnessId` keeps ownership of its native transcript
|
||||
while route/auth preparation is still pending. Neither makes an incompatible
|
||||
route compatible: once prepared facts exist, the selected or pinned harness
|
||||
must support them or the run fails closed. `/status` shows the effective runtime
|
||||
selected from policy, persisted ownership, and route support.
|
||||
must support them, declare the exact-request OpenClaw fallback, or the run fails
|
||||
closed. Next-turn metadata uses the same registered support decision and retains
|
||||
its model/provider/session source. An unlocked historical producer does not pin
|
||||
the next turn. Projection never loads a harness or reads credentials.
|
||||
Prepared status is explicit: missing `runtimePolicy` stays undeclared instead
|
||||
of being inferred from whichever transport fields happen to be present.
|
||||
When harness-owned auth leaves multiple physical routes unresolved, the
|
||||
@@ -492,10 +494,10 @@ model refs remain compatibility aliases for the native harness.
|
||||
When this mode runs, Codex owns the native thread id, resume behavior,
|
||||
compaction, and app-server execution. OpenClaw still owns the chat channel,
|
||||
visible transcript mirror, tool policy, approvals, media delivery, and session
|
||||
selection. Use provider/model `agentRuntime.id: "codex"` when you need to
|
||||
prove that only the Codex app-server path can claim the run. Explicit plugin
|
||||
runtimes fail closed; Codex app-server selection failures and runtime failures
|
||||
are not retried through another runtime.
|
||||
selection. Use provider/model `agentRuntime.id: "codex"` to require a registered
|
||||
Codex harness. Unsupported routes/auth fail closed unless the harness declares
|
||||
an exact-request fallback before execution. Codex runtime failures are not
|
||||
retried through another runtime.
|
||||
|
||||
## Runtime strictness
|
||||
|
||||
@@ -509,7 +511,7 @@ incompatible route compatible. Selected plugin harness failures always fail
|
||||
hard. This does not block an explicit provider/model
|
||||
`agentRuntime.id: "openclaw"`.
|
||||
|
||||
For Codex-only embedded runs:
|
||||
To request Codex for embedded runs:
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -585,10 +587,10 @@ Legacy whole-agent runtime examples like this are ignored:
|
||||
```
|
||||
|
||||
With an explicit plugin runtime, a session fails early when the requested
|
||||
harness is not registered, does not support the resolved provider/model, or
|
||||
fails before producing turn side effects. That is intentional for Codex-only
|
||||
deployments and for live tests that must prove the Codex app-server path is
|
||||
actually in use.
|
||||
harness is not registered or rejects the resolved provider/model without a
|
||||
declared fallback. An authored transport override may select OpenClaw through
|
||||
that fallback even with an explicit runtime. To prove native execution, inspect
|
||||
the actual harness in the completed result; configured intent alone is not proof.
|
||||
|
||||
This setting only controls the embedded agent harness. It does not disable
|
||||
image, video, music, TTS, PDF, or other provider-specific model routing.
|
||||
|
||||
Reference in New Issue
Block a user