Skip to content

[Bug] Top-level custom codex-native agents drop reasoning effort and yolo #2800

Description

@sam100x

Summary

A top-level custom agent using harness: codex-native accepts the spec model,
but does not propagate llm.reasoning_effort or executor.config.yolo into
the native Codex session. The equivalent named-worker path does propagate
those settings.

This prevents a custom Codex-native orchestrator from being reliably
config-driven and unattended.

Environment

  • Omnigent 0.5.1 (built 2026-07-10T23:02:07Z)
  • Codex CLI 0.144.5
  • macOS

Minimal config

spec_version: 1
name: codex-top-level-probe

executor:
  type: omnigent
  config:
    harness: codex-native
    yolo: true

llm:
  model: gpt-5.6-terra
  reasoning_effort: xhigh

Reproduction

  1. Create a fresh session from the custom bundle above, without picker-supplied
    terminal launch arguments or model/effort overrides.
  2. Inspect the persisted conversation row.
  3. Ask the session to run a harmless command, create one throwaway file in
    /tmp, and remove that same file.

Observed persisted fields for two fresh probe sessions:

model_override      gpt-5.6-terra
reasoning_effort    NULL
terminal_launch_args NULL

Observed behavior:

  • pwd and touch /tmp/<probe> proceed.
  • rm -f /tmp/<probe> opens a Codex command-approval request.
  • A first sys_session_get_info call opens an Omnigent MCP approval request.
  • Once manually approved, the custom top-level agent can dispatch its named
    claude_code worker and receive the result through the inbox.

The terminal approval result is consistent with the absence of the configured
full-bypass launch state. The NULL effort means the requested xhigh is not
available to the runner when it builds the Codex app-server configuration.

Expected

For a trusted top-level custom bundle, codex-native should have parity with
the named-worker path:

  • persist llm.reasoning_effort on the session before native launch;
  • apply the explicitly configured yolo: true as the Codex full-bypass launch
    state before the first turn;
  • retain existing Omnigent guardrail policies as the safety boundary.

The first two are needed even if MCP approval policy remains independently
configurable. For an unattended orchestrator, please also document or expose a
config-only way to allow its declared internal Omnigent dispatch/inbox tools
without a first-turn approval card.

Implementation context

Named worker creation already resolves the sub-spec effort and derives native
launch behavior. The top-level/custom-template branch special-cases
claude-native permission_mode, but does not perform the analogous
codex-native spec-to-session propagation.

This looks adjacent to #2747, but is distinct: in this reproduction the model
is persisted correctly; the missing pieces are reasoning effort and the
top-level Codex bypass state.

Metadata

Metadata

Assignees

Labels

BugSomething isn't workingP1-highPriority: major feature broken, no workaroundcomp:harnessesComponent: SDK harnesses (Claude, Cursor, etc.)comp:runnerComponent: agent runner, execution enginecomp:serverComponent: server, API, session managementtriagedIssue has been triaged by the bot

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions