Skip to content

Kiro rejects Codex requests with permissive parallel_tool_calls #2308

Description

@yrlan-montagnier

Client or integration

Codex CLI (also observed through Codex App with WSL as its backend), version 0.149.0.

Provider or upstream service

Kiro

OpenCodex version

2.29.0

Endpoint or capability

POST /v1/responses — function tools and the parallel_tool_calls request hint

Current behaviour

Codex sends a normal Responses request containing parallel_tool_calls: true. OpenCodex parses this into options.parallelToolCalls === true, then the Kiro adapter rejects the request locally with HTTP 400 before dispatching it upstream:

Kiro does not support parallel tool calls

This happens even though the routed Kiro catalog row advertises supports_parallel_tool_calls: false. That catalog metadata does not reliably suppress the request-level hint in Codex.

Expected behaviour

The Kiro adapter should accept the request and continue translating tools on Kiro's serialized wire. In the Responses contract, parallel_tool_calls: true permits parallel calls; it does not require the upstream transport to implement a corresponding request flag or produce parallel calls.

Kiro's translated request has no parallel-tool-call field, so OpenCodex can safely ignore this hint while retaining serialized Kiro execution.

Minimal redacted request or reproduction

curl -i http://127.0.0.1:10100/v1/responses \
  -H 'content-type: application/json' \
  -H 'authorization: Bearer <REDACTED>' \
  --data '{
    "model": "kiro/claude-haiku-4.5",
    "input": "test",
    "stream": true,
    "parallel_tool_calls": true,
    "tools": [{
      "type": "function",
      "name": "bash",
      "description": "Run a shell command",
      "parameters": {"type": "object"}
    }]
  }'

The same request shape is emitted by Codex CLI/App 0.149.0 during an ordinary tool-enabled turn.

Actual response or error

HTTP/1.1 400 Bad Request

Kiro does not support parallel tool calls

Upstream documentation

OpenAI Responses API reference for parallel_tool_calls: https://platform.openai.com/docs/api-reference/responses/create#responses_create-parallel_tool_calls

There is no public Kiro wire specification for this exact field. The concrete integration requirement is also supported by Codex commit openai/codex@86b1123, which removes supports_parallel_tool_calls from ModelInfo/the bundled catalog and sets parallel_tool_calls: true for regular and remote-compaction prompts (while preserving the Responses Lite exception).

Suggested mapping or implementation notes

Remove only the Kiro capability validation that throws when options.parallelToolCalls === true. Do not add a parallel field to the Kiro wire. Keep all other Kiro capability checks unchanged.

A focused regression can parse the Codex-shaped request above, assert that parallelToolCalls remains true, build the Kiro request successfully, and verify that the translated tool catalog is still present.

Additional context and attachments

This is not caused by WSL or a bad local catalog path. The Kiro catalog value is correct; the incompatibility is the adapter's overly strict interpretation of a permissive client hint.

Codex 0.148.0 and 0.149.0 source inspection showed ordinary prompts can send parallel_tool_calls: true. The linked later Codex commit makes the direction explicit by removing the model capability metadata entirely.

Related but not duplicate: #1650 concerns forcing parallelToolCalls=false for OpenAI Chat providers.

Checks

  • I searched existing provider and compatibility issues.
  • The request and response were redacted.
  • The expected behaviour is based on an upstream specification or a concrete client requirement.

Metadata

Metadata

Assignees

No one assigned

    Labels

    providerProvider adapters, OpenAI-compat presets, upstream API quirksprovider-compatibilityProvider compatibility reportstoolstool_calls, MCP, web-search / sidecar tools

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions