gpt-5.6 Responses Lite turns do not expose exec/code-mode tools in codex exec

Open 💬 5 comments Opened Jul 9, 2026 by willsmanley

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

View original on GitHub ↗

This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗