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
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 setsfeatures.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, sandboxread-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
features.multi_agent=falseshould gate all sub-agent spawning,
including ultra's internal orchestration — or the docs should state that
ultra ignores it.
- 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
2 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
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 thoughfeatures.multi_agent=falseis 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=falsewould not fix serialization. Keeping open.