gpt-5.6-sol `ultra` effort spawns multi-agent swarms despite `features.multi_agent=false`, consuming 250–600 credits per read-only task without batching guidance

Open 💬 2 comments Opened Jul 24, 2026 by ForrestGrump
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

Summary

On gpt-5.6-sol at model_reasoning_effort="ultra", codex exec spawns
20+ sub-agent sessions per task even when the config explicitly sets
features.multi_agent=false. Combined with the Code Mode serialization
described in #32503 / #35050, a single bounded read-only investigation task
consumed 7.5–17.6M raw tokens (267–605 credits at the published rate card) —
about 1% of a Pro weekly allowance per task. The identical task at xhigh
with batching guidance: ~150k raw tokens / ~10 credits, with an
identically-graded answer.

Environment

  • Codex CLI 0.145.0 (linux x86_64, WSL2), ChatGPT Pro auth
  • gpt-5.6-sol, sandbox read-only, approval_policy="never"
  • Overrides per run: mcp_servers={}, plugins={},

features.multi_agent=false, features.memories=false

Reproduction

Fixed synthetic repo (48 small modules + config + manifest; generator in
https://github.com/ForrestGrump/codex-batch-bench), prompt = per-module inventory table (all reads independent
after reading the manifest). 2 trials per arm, arms differ only in a
batching instruction vs length-matched placebo via developer_instructions.

Observed (per trial)

| arm | sessions spawned | model cycles | raw tokens | credits | Promise.all* cells |
|---|---|---|---|---|---|
| no batching guidance | 23, 25 | 305, 652 | 7.5M, 17.6M | 267, 605 | 0, 0 |
| batching guidance | 8, 6 | 120, 78 | 3.4M, 2.3M | 138, 101 | 18, 19 |

Both arms produced correct, equivalent answers (48/48 modules, 40/40 config
keys). Sub-sessions were identified by session_meta.cwd in
~/.codex/sessions rollout logs; counts are a lower bound.

Expected

  1. features.multi_agent=false should gate all sub-agent spawning,

including ultra's internal orchestration — or the docs should state that
ultra ignores it.

  1. Ultra's orchestrator and sub-agents should batch independent Code Mode

reads (see #35050) — at minimum, effort-conditional guidance, since the
serialization also appears at xhigh/max but not at high and below.

Notes

  • Sub-agents inherit the parent process's resolved config, including

-c developer_instructions overrides (verified: 0/48 placebo-arm
sub-sessions contained the globally-configured instruction text when the
CLI override replaced it).

  • Full effort curve and real-repo replication data in my comment on #35050:

#35050

View original on GitHub ↗

2 Comments

github-actions[bot] contributor · 1 month ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #35050

Powered by Codex Action

ForrestGrump · 1 month ago

Not a duplicate, though related and cross-linked. #35050 documents Code Mode call serialization and shows batching guidance reduces weighted usage. This issue reports a distinct defect observed only at model_reasoning_effort="ultra": sub-agent swarms (20+ sessions per task) are spawned even though features.multi_agent=false is set — a config-contract violation independent of whether calls are batched. The batching numbers appear here only to quantify cost impact.

The fixes are disjoint: better batching guidance (#35050) would not stop the flag from being ignored, and honoring multi_agent=false would not fix serialization. Keeping open.