Regression: Codex CLI 0.133.0 breaks native subagent spawning for local Ollama provider; 0.132.0 works

Open 💬 8 comments Opened May 22, 2026 by Ghasak

What version of Codex CLI is running?

Regression observed between: - Working: codex-cli 0.132.0 - Broken: codex-cli 0.133.0

What subscription do you have?

ChatGPT Plus

Which model were you using?

Local models through Codex local-provider launch paths: 1. Ollama: qwen3.6:35b-a3b-coding-mxfp8 2. oMLX: Qwen3.6-35B-A3B-8bit-MTPLX-Optimized-Speed OpenAI-backed gpt-5.5 was also tested as a control and real subagents worked there.

What platform is your computer?

uname -mprs

What terminal emulator and version are you using (if applicable)?

iTerm2 on macOS 3.6.10

Codex doctor report

What issue are you seeing?

Native Codex subagent spawning regressed for local/custom provider sessions between codex-cli 0.132.0 and codex-cli 0.133.0.

With the same minimal smoke-test repository, same config, and same local models:

  • 0.132.0 successfully spawns real worker subagents with both Ollama and oMLX local provider launch paths.
  • 0.133.0 fails to expose working native subagents for local provider sessions and reports SUBAGENTS_UNAVAILABLE / multi_agent_v1 unsupported, or the Main agent does the work itself.

This is not just role simulation. On 0.132.0, the Codex UI shows real child workers in the Subagents panel, and the transcript includes real Spawned ... / Waiting for ... agents / Finished waiting events.

OpenAI-backed Codex with gpt-5.5 was tested as a control and native subagents work there. The regression appears specific to local/custom provider sessions in 0.133.0.

This is serious for local LLM Codex workflows because upgrading from 0.132.0 to 0.133.0 silently breaks native multi-agent orchestration that worked previously.

What steps can reproduce the bug?

1. Enable multi-agent in ~/.codex/config.toml

Add or confirm the following settings:

[features]
multi_agent = true

[agents]
max_threads = 6
max_depth = 1
job_max_runtime_seconds = 900

2. Create a minimal smoke-test repository

mkdir -p ~/codex-subagent-smoke-test
cd ~/codex-subagent-smoke-test

cat > AGENTS.md <<'EOF_AGENTS'
# Codex Subagent Smoke Test

This repo is only for testing whether real Codex runtime subagents can spawn.

Rules:
- Do not modify files unless asked.
- Do not SSH.
- Do not run backend commands.
- If real subagents are unavailable, report SUBAGENTS_UNAVAILABLE.
- Do not simulate subagents inside Main.
EOF_AGENTS

cat > README.md <<'EOF_README'
# Codex Subagent Smoke Test

Tiny repo to test whether Codex can spawn real child subagents.
EOF_README

cat > file_a.txt <<'EOF_A'
Agent A fact: apples are red.
EOF_A

cat > file_b.txt <<'EOF_B'
Agent B fact: bananas are yellow.
EOF_B

cat > file_c.txt <<'EOF_C'
Agent C fact: cherries are dark red.
EOF_C

cat > SUBAGENT_TEST_PROMPT.md <<'EOF_PROMPT'
Test real Codex subagent spawning only.

Do not modify files.
Do not SSH.
Do not simulate roles inside Main.
Do not let Main do the child agents' work.

Hard requirement:
Use the real Codex multi_agent/subagent runtime.

Spawn exactly three real subagents:

1. Agent A
Mission:
Read file_a.txt and report the fact.

2. Agent B
Mission:
Read file_b.txt and report the fact.

3. Agent C
Mission:
Read file_c.txt and report the fact.

Main agent role:
Coordinator only.

If real subagents are unavailable, stop and report exactly:
SUBAGENTS_UNAVAILABLE

Return:
- whether real subagents were spawned
- subagent names/IDs if available
- each subagent report
- final conclusion: SUBAGENTS_AVAILABLE or SUBAGENTS_UNAVAILABLE
EOF_PROMPT

3. Working case: @openai/codex@0.132.0 with a local provider

Install the known-working version:

npm install -g @openai/codex@0.132.0
codex --version

Launch Codex through a local provider. Example using Ollama:

cd ~/codex-subagent-smoke-test
ollama launch codex --model qwen3.6:35b-a3b-coding-mxfp8

Inside Codex, run:

Read SUBAGENT_TEST_PROMPT.md and execute it.

Observed result on 0.132.0:

Spawned ...
Spawned ...
Spawned ...

Waiting for 3 agents
  Newton [worker]
  Kepler [worker]
  Euclid [worker]

Finished waiting
  Newton [worker]: Completed
  Kepler [worker]: Completed
  Euclid [worker]: Completed

The Subagents panel shows real child workers, for example:

1. Main [default]
2. Newton [worker]
3. Kepler [worker]
4. Euclid [worker]

This confirms that the local-provider session can spawn real runtime subagents in 0.132.0.

4. Working case: @openai/codex@0.132.0 with another local OpenAI-compatible provider

Using the same smoke-test repo and the same prompt, launch Codex through another local OpenAI-compatible provider, for example an oMLX wrapper:

cd ~/codex-subagent-smoke-test
/Applications/oMLX.app/Contents/MacOS/omlx-cli launch codex

Inside Codex, run:

Read SUBAGENT_TEST_PROMPT.md and execute it.

Observed result on 0.132.0:

Spawned ...
Spawned ...
Spawned ...

Waiting for 3 agents
Finished waiting

The Subagents panel shows Main plus real worker agents. This confirms the behavior is not limited to one local provider wrapper.

5. Broken case: upgrade to @openai/codex@0.133.0

Upgrade Codex:

npm install -g @openai/codex@0.133.0
codex --version

Repeat the same local-provider launch from the same smoke-test repo.

Example with Ollama:

cd ~/codex-subagent-smoke-test
ollama launch codex --model qwen3.6:35b-a3b-coding-mxfp8

Inside Codex, run the exact same prompt:

Read SUBAGENT_TEST_PROMPT.md and execute it.

Observed result on 0.133.0:

SUBAGENTS_UNAVAILABLE
multi_agent_v1 unsupported

or the Main agent performs the child tasks itself and no real child workers appear in the Subagents panel.

6. Control: OpenAI-backed Codex

Using OpenAI-backed Codex with the same smoke-test repo and the same prompt, native subagents spawn successfully.

This suggests that native subagents are not globally broken. The regression appears to affect local/custom provider sessions in 0.133.0.

7. Summary of reproduction result

0.132.0 + local provider + multi_agent=true:
  Real subagents spawn successfully.

0.133.0 + local provider + multi_agent=true:
  Real subagents fail / multi_agent_v1 unsupported / Main-only behavior.

OpenAI-backed Codex:
  Real subagents spawn successfully.

What is the expected behavior?

`0.133.0` should preserve the `0.132.0` behavior:
- Local-provider sessions using Ollama or oMLX should expose the native multi-agent/subagent runtime when `[features].multi_agent = true`.
- The same smoke-test prompt should spawn real child workers.
- The Subagents panel should show Main plus worker agents.
- The Main agent should not silently perform the child work itself when the prompt explicitly forbids simulation.

Additional information

This may be related to existing custom-provider/subagent issues, especially:

  • #17598 — Native subagent orchestration does not work correctly with non-OpenAI custom providers.
  • #13204 — Subagent ignores active custom provider/profile and falls back to OpenAI.
  • #15250 / #14579 — custom/project-local subagent definitions not being available as expected.

However, this report adds a direct version regression:

  • 0.132.0: local provider subagents work.
  • 0.133.0: local provider subagents fail.

Temporary workaround:

npm install -g @openai/codex@0.132.0

Recommendation for local-provider users: avoid upgrading to 0.133.0 if you depend on native Codex subagents with Ollama/oMLX until this is clarified or fixed.

View original on GitHub ↗

8 Comments

Yi-Eaaa · 1 month ago

same

iqdoctor · 1 month ago

+1

StevanusPangau · 1 month ago

Root Cause Analysis

I traced this regression to commit bf9fd885b (PR #25722 — "Resolve per-thread multi-agent runtime").

What changed

Before #25722, collab_tools_enabled() in core/src/tools/spec_plan.rs checked Feature::Collab directly (which defaults to true), so subagent tools were always registered regardless of provider.

After #25722, it depends on turn_context.multi_agent_version, which is resolved from model metadata. The resolution chain:

  1. multi_agent_version_from_features() in config.rs checks ModelMetadata::multi_agent_version
  2. For models not in the hardcoded registry (any custom/local provider), ModelInfo::fallback() returns multi_agent_version: None
  3. None resolves to MultiAgentVersion::Disabled
  4. collab_tools_enabled() returns false for Disabled → subagent tools are never registered

Reproduction

Any OPENAI_BASE_URL pointing to a non-OpenAI provider (ollama, vllm, litellm, local proxy, etc.) with any model name not in the hardcoded metadata list will hit this path. The codex-agent-spawn and codex-agent-message tools silently disappear from the tool registry.

Proposed Fix

In the MultiAgentVersion::Disabled arm, fall back to Feature::Collab check (the pre-v0.133.0 behavior) so custom providers retain subagent capability

MultiAgentVersion::Disabled => {
    // Fallback for custom/local providers whose model metadata does not
    // carry a multi_agent_version field. When the runtime resolved
    // Disabled but the user explicitly enabled the multi_agent
    // feature flag, honour the flag so subagent tools remain available.
    turn_context.config.features.get().enabled(Feature::Collab)
        && !exceeds_thread_spawn_depth_limit(
            next_thread_spawn_depth(&turn_context.session_source),
            turn_context.config.agent_max_depth,
        )
}

This is safe because:

  • OpenAI-backed sessions resolve to V1 or V2, never hitting the Disabled fallback
  • The existing depth limit is still enforced
  • It only activates when the user has Feature::Collab enabled (default: true)

Verification

  • cargo check -p codex-core — compiles cleanly
  • All 27 spec_plan tests pass (cargo test -p codex-core --lib -- spec_plan)
  • No behavior change for OpenAI-backed sessions

Branch with the fix: https://github.com/StevanusPangau/codex/tree/fix/subagent-custom-provider-regression

Happy to submit a PR if the team would like to take this approach.

jpcaparas · 29 days ago

This issue has not yet been fixed with the latest release: 0.141.0

If you run a custom model and have it spawn subagents, it will just spawn a process instead (and parallel processes if you request multiple subagents)

<img width="962" height="539" alt="Image" src="https://github.com/user-attachments/assets/e5cda24d-b88b-4e27-9a5e-6fc2c1afd640" />

<img width="1509" height="287" alt="Image" src="https://github.com/user-attachments/assets/0dcadf1b-9af4-4466-b1da-a91307d59a3e" />

kurushimee · 20 days ago

Still present in 0.142.4:

<img width="1110" height="152" alt="Image" src="https://github.com/user-attachments/assets/9eb0c766-40bd-4da5-bc16-1fdd0c1cc44f" />

mig8447 · 12 days ago

This is still happening in 0.143.0

iqdoctor · 11 days ago

Cross-links for visibility:

This appears to be the main upstream ticket for native subagent spawning regressions on local/custom providers.

niieani · 10 days ago

This also breaks caara - which gave codex the ability to run claude and antigravity as native subagents.