-
Notifications
You must be signed in to change notification settings - Fork 6.7k
Description
What version of Codex is running?
codex-cli 0.65.0
What subscription do you have?
Azure OpenAI deployment
Which model were you using?
gpt-5.1-codex
What platform is your computer?
Darwin 25.1.0 arm64 arm
What issue are you seeing?
A simple session, simply saying "hi" is responded with:
{
"error": {
"message": "Invalid 'messages[5].tool_calls[0].function.name': empty string. Expected a string with minimum length 1, but got an empty string instead.",
"type": "invalid_request_error",
"param": "messages[5].tool_calls[0].function.name",
"code": "empty_string"
}
}What steps can reproduce the bug?
Uploaded thread: 019aed70-d44c-7202-b4e1-3a2a1e3d1f9a
What is the expected behavior?
The assistant should respond normally to the greeting without errors. Tool call function names should be preserved from the initial SSE delta and not overwritten by empty strings in subsequent deltas.
Additional information
Related Issues:
This appears to be related to:
- Empty function name cause Azure to reject the request #7094 - Empty function name cause Azure to reject the request
- Tool call streaming broken in 0.64.0 with local LLM providers #7517 - Tool call streaming broken in 0.64.0 with local LLM providers
- Regression: Tool Name Lost in Streaming Chat Completions After PR #6996 #7579 - Regression: Tool Name Lost in Streaming Chat Completions (root cause)
Root Cause:
The SSE streaming parser (since v0.64.0 / PR #6996) unconditionally overwrites tool call function names with values from subsequent deltas. Azure OpenAI and other providers send the tool name in the first delta, then send empty strings in subsequent deltas containing only arguments. The current parser overwrites the valid name with these empty strings.
Environment Notes:
- Issue does NOT occur with ChatGPT Pro subscription (non-Azure)
- Issue started in version 0.64.0 (worked correctly in 0.63.0)
- Affects Azure OpenAI and other OpenAI-compatible providers (LM Studio, etc.)
Fix Status:
A fix has been developed that prevents empty strings from overwriting valid tool names during SSE delta parsing. See: https://github.com/timvw/codex/tree/fix/empty-tool-call-names