feat(codex): 300-subagent fanout, hydrated model default, drop gpt-mini/nano - #2295
Conversation
Expand the Codex [agents] block: enable it explicitly, allow 300 concurrent subagent threads per session, and default subagents to max reasoning effort. The subagent model comes from models.json rather than a literal, so it tracks the same source as every other tool config. Adds the gpt-luna alias and swaps __GPT_LUNA__ into config.tpl.toml, then regenerates config.toml via scripts/llm-update.sh. Also adds "max" to enabled-reasoning-efforts, since the config now defaults subagents to an effort level that was not in the enabled list. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzCLmLbZreRPqcecy2tzy9
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (6)
Disabled knowledge base sources:
📝 WalkthroughSummary by CodeRabbit
WalkthroughThe PR adds the ChangesModel and agent configuration
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested labels: Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
gpt-5.4-mini and gpt-5.4-nano are deprecated, so remove both aliases from models.json. Four omp bindings referenced them and would otherwise hydrate to dangling placeholders: the smol and commit model roles, plus the comment-analyzer and pr-test-analyzer agent overrides. All four now point at gpt-luna, the current cheap tier. The stale gpt-5.4-mini in the modelRoles example comment becomes a placeholder so it tracks models.json from here on. Regenerated config/omp/config.yml via scripts/llm-update.sh. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzCLmLbZreRPqcecy2tzy9
The provider list and examples above modelRoles still named gpt-5.4, gpt-4o, claude-sonnet-4 and gemini-3-pro. Swap the literals for models.json placeholders so the documentation tracks the same source as the config below it instead of going stale again. Comments only; no role bindings change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzCLmLbZreRPqcecy2tzy9
|
Warning Indent Zero is shutting down on August 7th. Please migrate over to Indent 2.0 to continue getting PR reviews.
|
| # slow: openai-codex/gpt-5.3-codex:high | ||
| # default: openai-codex/__GPT__ | ||
| # fast: openai-codex/__GPT_LUNA__ | ||
| # slow: openai-codex/__GPT_CODEX__:high |
There was a problem hiding this comment.
Docstring example diverges from actual slow role: this example renders as openai-codex/__GPT_CODEX__:high, but the real slow: binding on line 71 is openai-codex/__GPT__ (no :high suffix, non-codex model). The mismatch predates this PR, but since the docs refresh already touched these example lines, it's worth aligning them so readers don't get misled about how slow is actually wired.
| # slow: openai-codex/__GPT_CODEX__:high | |
| # slow: openai-codex/__GPT__ |
Summary
Two related changes to model config, both routed through
models.jsonhydration.models.jsoninstead of hardcoded.gpt-mini/gpt-nanoaliases are gone, and everything that referenced them moves togpt-luna.1 — Codex subagent fanout
config/codex/config.tpl.toml,[agents]went from a baremax_threads = 10to:gpt-5.6-lunawasn't inmodels.json, so agpt-lunaalias was added and referenced as__GPT_LUNA__— the model tracks the same source as every other tool config rather than drifting on its own.Two judgment calls worth a look:
max_threadsbumped 10 → 300 alongsidemax_concurrent_threads_per_session. Setting both means whichever key the installed Codex build honors gives 300; leavingmax_threads = 10risked silently capping the new limit."max"added toenabled-reasoning-efforts(was["medium", "high"]), since the config now defaults subagents to an effort level that wasn't in the enabled list. Side effect:maxbecomes selectable for the main model too. Top-levelmodel_reasoning_effort = "high"is unchanged.2 — Drop deprecated gpt-mini / gpt-nano
gpt-5.4-miniandgpt-5.4-nanoare deprecated, so both aliases are removed frommodels.json.Four
config/omp/config.tpl.ymlbindings referenced them and would otherwise hydrate to dangling__GPT_MINI__/__GPT_NANO__placeholders. All four now point atgpt-luna:modelRoles.smolopenai-codex/gpt-5.4-miniopenai-codex/gpt-5.6-lunamodelRoles.commitopenai/gpt-5.4-nanoopenai/gpt-5.6-lunaagentModelOverrides.comment-analyzergpt-5.4-nanogpt-5.6-lunaagentModelOverrides.pr-test-analyzergpt-5.4-minigpt-5.6-lunacommitkeeps its existingopenai/provider prefix rather than being moved toopenai-codex/— that wasn't part of the ask. The stalegpt-5.4-miniin themodelRolesexample comment became a__GPT_LUNA__placeholder so it tracksmodels.jsonfrom here on; the other stale examples in that upstream doc block were left alone.Also
spec/llm_update_spec.sh— newCodex subagent defaultsblock asserting the template keeps the placeholder, the generated config resolves it, and the concurrency/effort values land.config/codex/config.tomlandconfig/omp/config.ymlregenerated viamake llm-update.Verification
./scripts/llm-update.shregenerates cleanly; onlyconfig/codex/config.tomlandconfig/omp/config.ymlchanged.gpt-5.4-mini,gpt-5.4-nano,__GPT_MINI__, or__GPT_NANO__references remain anywhere in the repo.tomllib), generated YAML parses (yaml.safe_load), and neither contains unresolved__PLACEHOLDER__tokens.shellspecis not available in this environment, so CI is the real check.