Skip to content

feat(codex): 300-subagent fanout, hydrated model default, drop gpt-mini/nano - #2295

Merged
shunkakinoki merged 3 commits into
mainfrom
claude/subagents-models-json-xmvacb
Aug 8, 2026
Merged

feat(codex): 300-subagent fanout, hydrated model default, drop gpt-mini/nano#2295
shunkakinoki merged 3 commits into
mainfrom
claude/subagents-models-json-xmvacb

Conversation

@shunkakinoki

@shunkakinoki shunkakinoki commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Summary

Two related changes to model config, both routed through models.json hydration.

  1. Codex subagents actually fan out, with the subagent model sourced from models.json instead of hardcoded.
  2. The deprecated gpt-mini / gpt-nano aliases are gone, and everything that referenced them moves to gpt-luna.

1 — Codex subagent fanout

config/codex/config.tpl.toml, [agents] went from a bare max_threads = 10 to:

[agents]
enabled = true
max_threads = 300
max_concurrent_threads_per_session = 300
default_subagent_model = "__GPT_LUNA__"   # → gpt-5.6-luna
default_subagent_reasoning_effort = "max"

gpt-5.6-luna wasn't in models.json, so a gpt-luna alias 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_threads bumped 10 → 300 alongside max_concurrent_threads_per_session. Setting both means whichever key the installed Codex build honors gives 300; leaving max_threads = 10 risked silently capping the new limit.
  • "max" added to enabled-reasoning-efforts (was ["medium", "high"]), since the config now defaults subagents to an effort level that wasn't in the enabled list. Side effect: max becomes selectable for the main model too. Top-level model_reasoning_effort = "high" is unchanged.

2 — Drop deprecated gpt-mini / gpt-nano

gpt-5.4-mini and gpt-5.4-nano are deprecated, so both aliases are removed from models.json.

Four config/omp/config.tpl.yml bindings referenced them and would otherwise hydrate to dangling __GPT_MINI__ / __GPT_NANO__ placeholders. All four now point at gpt-luna:

Binding Before After
modelRoles.smol openai-codex/gpt-5.4-mini openai-codex/gpt-5.6-luna
modelRoles.commit openai/gpt-5.4-nano openai/gpt-5.6-luna
agentModelOverrides.comment-analyzer gpt-5.4-nano gpt-5.6-luna
agentModelOverrides.pr-test-analyzer gpt-5.4-mini gpt-5.6-luna

commit keeps its existing openai/ provider prefix rather than being moved to openai-codex/ — that wasn't part of the ask. The stale gpt-5.4-mini in the modelRoles example comment became a __GPT_LUNA__ placeholder so it tracks models.json from here on; the other stale examples in that upstream doc block were left alone.

Also

  • spec/llm_update_spec.sh — new Codex subagent defaults block asserting the template keeps the placeholder, the generated config resolves it, and the concurrency/effort values land.
  • config/codex/config.toml and config/omp/config.yml regenerated via make llm-update.

Verification

  • ./scripts/llm-update.sh regenerates cleanly; only config/codex/config.toml and config/omp/config.yml changed.
  • No gpt-5.4-mini, gpt-5.4-nano, __GPT_MINI__, or __GPT_NANO__ references remain anywhere in the repo.
  • Generated TOML parses (tomllib), generated YAML parses (yaml.safe_load), and neither contains unresolved __PLACEHOLDER__ tokens.
  • New spec assertions verified by running their underlying commands directly — shellspec is not available in this environment, so CI is the real check.

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
@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 3d3c332b-d083-4da4-846c-a76337d6576d

📥 Commits

Reviewing files that changed from the base of the PR and between f5d6335 and d152bd0.

📒 Files selected for processing (6)
  • config/codex/config.toml
  • config/codex/config.tpl.toml
  • config/omp/config.tpl.yml
  • config/omp/config.yml
  • models.json
  • spec/llm_update_spec.sh

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.


📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added support for the GPT Luna model and updated default model assignments.
    • Enabled maximum reasoning effort and agent execution with higher concurrency limits.
    • Added configurable subagent defaults for model selection and reasoning effort.
  • Bug Fixes

    • Updated configuration templates and model mappings for consistent model resolution.
  • Tests

    • Added coverage for agent settings, concurrency limits, reasoning effort, and template configuration.

Walkthrough

The PR adds the gpt-luna model mapping, updates OMP model roles, enables Codex agents with higher limits and maximum reasoning effort, and adds configuration tests.

Changes

Model and agent configuration

Layer / File(s) Summary
Model aliases and OMP roles
models.json, config/omp/config*
Adds the gpt-luna mapping. Updates OMP roles and analyzer agents to use the Luna model.
Codex agent settings
config/codex/config*, spec/llm_update_spec.sh
Enables agents, sets 300-thread limits, permits maximum reasoning effort, and validates the generated configuration.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested labels: enhancement

Poem

A rabbit tuned the models bright,
Luna hops through roles tonight.
Codex agents wake and run,
Three hundred threads beneath the sun.
Max effort joins the joyful spree!

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/subagents-models-json-xmvacb

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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
@shunkakinoki shunkakinoki changed the title feat(codex): raise subagent fanout to 300 with hydrated model default feat(codex): 300-subagent fanout, hydrated model default, drop gpt-mini/nano Aug 8, 2026
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
@shunkakinoki
shunkakinoki marked this pull request as ready for review August 8, 2026 09:55
@indent-zero

indent-zero Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Warning

Indent Zero is shutting down on August 7th. Please migrate over to Indent 2.0 to continue getting PR reviews.

PR Summary

Housekeeping PR that tightens Codex subagent config and rotates deprecated OpenAI aliases in models.json. Materially raises Codex concurrent subagent fanout (10 → 300) and defaults subagents to gpt-luna at max reasoning effort; all downstream hydrated configs are regenerated via scripts/llm-update.sh and new shellspec coverage is added.

  • Adds gpt-luna (→ gpt-5.6-luna) to models.json; removes deprecated gpt-mini and gpt-nano aliases.
  • Expands Codex [agents] block: enabled = true, max_threads = 300, max_concurrent_threads_per_session = 300, default_subagent_model = __GPT_LUNA__, default_subagent_reasoning_effort = "max".
  • Adds "max" to enabled-reasoning-efforts so the new subagent default is a valid enum member.
  • Retargets omp smol, commit, comment-analyzer, and pr-test-analyzer bindings from mini/nano to __GPT_LUNA__ (regenerated config/omp/config.yml).
  • Refreshes stale model literals in the omp modelRoles docstring to __…__ placeholders so docs track models.json.
  • Adds a Codex subagent defaults shellspec block asserting placeholder retention, hydration, and each new [agents] key.

Issues

1 potential issue found:

  • Docstring example slow: openai-codex/__GPT_CODEX__:high doesn't match the actual slow: role a few lines below (openai-codex/__GPT__); pre-existing mismatch but re-touched by the docs refresh, so consider aligning the example with the real binding. → Autofix

CI Checks

Waiting for CI checks...


⚡ Autofix All Issues

@shunkakinoki
shunkakinoki merged commit ba07925 into main Aug 8, 2026
34 checks passed
@shunkakinoki
shunkakinoki deleted the claude/subagents-models-json-xmvacb branch August 8, 2026 09:55
Comment thread config/omp/config.tpl.yml
# slow: openai-codex/gpt-5.3-codex:high
# default: openai-codex/__GPT__
# fast: openai-codex/__GPT_LUNA__
# slow: openai-codex/__GPT_CODEX__:high

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
# slow: openai-codex/__GPT_CODEX__:high
# slow: openai-codex/__GPT__

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants