gpt-5.6 Responses Lite turns do not expose exec/code-mode tools in codex exec
Summary
codex exec with gpt-5.6-sol can report that shell/code-mode tools are unavailable, while the same prompt works with gpt-5.5.
The issue appears to be the Responses Lite request shape: for use_responses_lite=true models, Codex currently moves client tool schemas into an input[0] item of type additional_tools and omits top-level tools. In the live 5.6 path I tested, those additional_tools are not exposed as callable tools, so the model does not see the public code-mode exec tool.
Environment
- Codex CLI:
codex-cli 0.144.0 - OS: Ubuntu 26.04 x86_64
- Model that works:
gpt-5.5 - Model that fails:
gpt-5.6-sol
Reproduction
This works with gpt-5.5:
codex exec --model gpt-5.5 --json --ephemeral --skip-git-repo-check --sandbox read-only 'please run ls and tell me if it works'
Observed: Codex emits a command execution item and runs /bin/bash -lc ls successfully.
This fails with gpt-5.6-sol:
codex exec --model gpt-5.6-sol --json --ephemeral --skip-git-repo-check --sandbox read-only 'please run ls and tell me if it works'
Observed assistant message:
I can’t run `ls` because no shell execution tool is available in this session.
Request capture
Using a local Responses capture provider, the gpt-5.5 request includes top-level tools:
{
"model": "gpt-5.5",
"tool_names": [
"exec_command",
"write_stdin",
"list_mcp_resources",
"list_mcp_resource_templates",
"read_mcp_resource",
"update_plan",
"request_user_input",
"request_plugin_install",
"apply_patch",
"view_image",
"tool_search",
"web_search"
]
}
The gpt-5.6-sol request has no top-level tools:
{
"model": "gpt-5.6-sol",
"tools": null,
"parallel_tool_calls": false
}
But input[0] contains the code-mode tools as additional_tools:
{
"type": "additional_tools",
"role": "developer",
"tool_names": ["exec", "wait", "request_user_input", "collaboration"]
}
The exec additional tool description includes nested tools.exec_command(...), but the live model does not appear to receive exec as callable.
Expected behavior
gpt-5.6-sol should be able to call the public code-mode exec tool, and from there call nested tools.exec_command(...), so simple shell prompts work as they do with gpt-5.5.
Suspected cause
codex-rs/core/src/client.rs has a Responses Lite branch in build_responses_request that inserts ResponseItem::AdditionalTools { tools, ... } into input, then sends tools: None at the top level.
If the live Responses Lite path does not promote additional_tools into callable tool declarations, then the model is left with no callable code-mode tools.
Candidate fix
Keep the existing additional_tools item for the Responses Lite input contract, but also send the same client-executed tool schemas in top-level tools.
I have a small patch ready that:
- clones the generated tool schemas into
additional_tools - preserves
tools: Some(tools)at the top level for Responses Lite turns - updates HTTP and websocket regression tests to assert both locations match
Related issues
These are related to the same 5.6 custom exec/code-mode tool path, but appear to describe crashes after an exec tool call is emitted rather than the model not seeing exec at all:
- #30861
- #31475
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗