GPT5.4 is too aggressive to use parallel tool calls
Open 💬 6 comments Opened Mar 12, 2026 by winoros
💡 Likely answer: A maintainer (github-actions[bot], contributor)
responded on this thread — see the highlighted reply below.
What version of Codex CLI is running?
0.114
What subscription do you have?
Pro
Which model were you using?
gpt-5.4
What platform is your computer?
Linux 6.17.0-14-generic x86_64 x86_64
What terminal emulator and version are you using (if applicable)?
ssh
What issue are you seeing?
While it also performs very aggressively parallel tool calls for my repo's specific command, it also does so for git operations.
When I say commit the changes, it could run git add and git commit in parallel and report an error git commit failed because it executed before the git add, then retry.
What steps can reproduce the bug?
Let it commit the diff produced in one session, which can also be produced with probability.
What is the expected behavior?
If the wrong parallel tool calling only affects our repo-specified commands, we can add note for it as repo-level guidance.
But the git operation may also be affected, so I think this is a model behavior issue.
Additional information
_No response_
6 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
When it comes to unintended model behavior, it is best to use /feedback and post the ID here.
I've seen this too, it typically recovers gracefully but can spin out especially with parallel git commands, it then takes 10x longer doing them as sequential tool calls when a simple
command1;command2would sufficeFrom my investigation, the behavior is aggressive enough to become a common issue.
And yes, it's the same issue mentioned by the bot. I didn't find it when I created the issue.
Bug: a single upstream response can contain duplicate tool calls with different
item_id/call_idvalues but identical tool name and identical arguments. The client/executor currently treats those as independent calls, so the same side-effectful tool invocation can run more than once.This is not just “the model is too aggressive with parallel calls”. The bug is visible in the protocol stream: exact duplicate tool calls are delivered in the same response with distinct IDs.
Actual behavior:
nameand byte-identical arguments;item_idandcall_id;Expected behavior:
call_idstill receives a valid tool output, because the Responses protocol expects that;Evidence from a local codex-lb archive sample: on 2026-05-03, grouping
server_to_codexframes by(response_id, tool_name, sha256(arguments))found 78 duplicate groups where the same response had multiple differentitem_id/call_idvalues for identical arguments.Example 1:
Example 2:
Example 3, same shape but with
exec_commandinstead of polling:A robust executor fix is to treat exact same-response duplicates as one invocation: execute the first one once, then fan out/cache the resulting tool output for all duplicate
call_ids, including duplicates observed after the first output has already completed.