[CLI] Custom agent service_tier = "fast" is ignored when the parent runs Standard
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of Codex CLI is running?
codex-cli 0.153.0
This appears to be a regression from 0.152.1. The same custom Reviewer configuration worked with a Standard parent and Fast children on 0.152.1. The earlier child tier is based on direct user observation because 0.152.1 did not persist an effective service-tier field in those child rollout files.
What subscription do you have?
ChatGPT Pro
Which model were you using?
- Parent:
gpt-5.6-sol, high reasoning, Standard service tier. - Custom child agents:
gpt-5.6-luna, high reasoning, configured for Fast service tier.
What platform is your computer?
Linux 6.18.33.2-microsoft-standard-WSL2 x86_64 unknown
What terminal emulator and version are you using (if applicable)?
Windows Terminal 1.24.11911.0, with Codex running inside WSL2. TERM=xterm-256color.
Codex doctor report
codex doctor --json was run on 0.153.0. The full report is omitted because it contains local paths. The relevant sanitized results were:
{
"schemaVersion": 1,
"overallStatus": "fail",
"codexVersion": "0.153.0",
"checks": {
"auth.credentials": { "status": "ok" },
"config.load": {
"status": "ok",
"model": "gpt-5.6-sol",
"model provider": "openai"
},
"installation": {
"status": "ok",
"platform": "linux-x86_64",
"version": "0.153.0"
},
"state.rollout_db_parity": { "status": "ok" },
"network.provider_reachability": {
"status": "fail",
"summary": "one or more required provider endpoints are unreachable over HTTP"
}
}
}
The network failure was expected because doctor ran inside a restricted diagnostic sandbox. Normal authenticated Codex sessions work. The failure is unrelated to this report.
What issue are you seeing?
A project-local custom agent config sets service_tier = "fast", but a child spawned from a Standard parent does not use Fast. Other settings from the same custom agent file are applied correctly.
Sanitized custom agent configuration:
name = "code-standards-reviewer"
description = "Independently reviews a supplied Git comparison against Repository standards."
model = "gpt-5.6-luna"
model_reasoning_effort = "high"
service_tier = "fast"
sandbox_mode = "read-only"
The parent session recorded:
model: gpt-5.6-sol
reasoning_effort: high
service_tier: default
Two children were spawned with custom agent roles. Their session metadata correctly recorded the requested agent roles, and their turn contexts correctly used gpt-5.6-luna with high reasoning. This proves that Codex found and partially applied the custom agent files.
However, both child startup logs recorded:
TurnStartOptions { ..., service_tier: None, ... }
The children consequently ran Standard instead of using the role's service_tier = "fast" override.
Affected threads:
Root: 01a06684-5bcd-7b30-ad6c-c35a26b6b3f4
Child: 01a06815-c6cb-7ae3-a0f8-14681759d216
Child: 01a06816-3b49-74e2-b765-7dbf522b3c83
What steps can reproduce the bug?
- Install Codex CLI 0.153.0.
- Set the parent session to Standard, for example with
service_tier = "default". - Create a project-local custom agent file under
.codex/agents/with a different model and reasoning effort plusservice_tier = "fast". - Start a parent session and spawn that custom agent by its
agent_type. - Inspect the child session.
- Confirm that the child receives the custom model and reasoning effort.
- Observe that the child does not use Fast, and that its startup options show
service_tier: None.
The same setup was observed working on 0.152.1: the parent remained Standard while custom Reviewer children ran Fast. Historical evidence confirms that the 0.152.1 parent recorded service_tier = "default", the role files already contained service_tier = "fast", and eight custom Reviewer children were created. The effective child tier in 0.152.1 is a direct user observation rather than a persisted rollout field.
What is the expected behavior?
The child should use the complete custom agent configuration, including service_tier = "fast", even when the parent is Standard.
Official documentation says that custom agents are loaded as configuration layers for spawned sessions and can override the same settings as normal session configuration:
https://learn.chatgpt.com/docs/agent-configuration/subagents
service_tier is a supported session configuration key, and fast maps to the priority request tier:
https://learn.chatgpt.com/docs/config-file/config-reference
Applying the model and reasoning fields while silently discarding the service-tier field makes one custom agent file only partially effective.
Additional information
This is related to, but distinct from, https://github.com/openai/codex/issues/35187. That issue requests a new service_tier parameter on the spawn_agent tool. This report does not require the model to select a tier per call. It reports that an existing, documented custom-agent configuration layer is already selected but one supported field from that layer is ignored.
The following open issues describe the opposite failure mode, where children unexpectedly use Fast while the parent is Standard, so they are not duplicates of this report:
- https://github.com/openai/codex/issues/29940
- https://github.com/openai/codex/issues/30407
- https://github.com/openai/codex/issues/38277
Raw rollout files are not attached because they contain private task context and local paths. The root and child thread IDs plus the sanitized configuration and startup fields above should allow internal correlation.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by searching the CLI's agent-spawning and session-configuration code for service_tier, TurnStartOptions, and spawn_agent; the issue identifies the .codex/agents/ configuration as the input. Reproduce with a Standard parent and a custom agent configured with service_tier = "fast", then verify that the child startup options preserve the Fast tier while retaining the custom model and reasoning settings.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100