Summary
Using openai-codex/gpt-5.6-luna as the classifier causes classifier-routed tool calls to fail closed with:
Classifier response was not valid decision JSON; auto mode fails closed.
The response is not malformed JSON. The underlying provider error is:
Codex error: Unsupported parameter: temperature
Reproduction
With @czottmann/pi-automode 1.7.0, set:
{
"autoMode": {
"classifierModel": "openai-codex/gpt-5.6-luna"
}
}
Then trigger any classifier-routed action.
Cause
classifyWithRetry() defaults temperature to 0 and always passes it to complete(). The openai-codex-responses endpoint rejects that parameter.
The resulting assistant message has stopReason: "error", empty text, and the provider error in errorMessage. The classifier tries to parse the empty text and replaces the useful provider error with the misleading invalid-JSON message.
Expected behavior
- Omit
temperature for openai-codex-responses classifier calls.
- Handle
stopReason: "error" before JSON parsing and fail closed with the sanitized errorMessage.
Suggested regression coverage
- An
openai-codex classifier completion receives no unsupported temperature option.
- An assistant response containing
stopReason: "error" and errorMessage reports the provider failure rather than malformed JSON.
As a control, openai/gpt-5.6-luna works with the current classifier options, and openai-codex/gpt-5.6-luna works as a normal Pi model with provider-compatible options.
Summary
Using
openai-codex/gpt-5.6-lunaas the classifier causes classifier-routed tool calls to fail closed with:The response is not malformed JSON. The underlying provider error is:
Reproduction
With
@czottmann/pi-automode1.7.0, set:{ "autoMode": { "classifierModel": "openai-codex/gpt-5.6-luna" } }Then trigger any classifier-routed action.
Cause
classifyWithRetry()defaultstemperatureto0and always passes it tocomplete(). Theopenai-codex-responsesendpoint rejects that parameter.The resulting assistant message has
stopReason: "error", empty text, and the provider error inerrorMessage. The classifier tries to parse the empty text and replaces the useful provider error with the misleading invalid-JSON message.Expected behavior
temperatureforopenai-codex-responsesclassifier calls.stopReason: "error"before JSON parsing and fail closed with the sanitizederrorMessage.Suggested regression coverage
openai-codexclassifier completion receives no unsupported temperature option.stopReason: "error"anderrorMessagereports the provider failure rather than malformed JSON.As a control,
openai/gpt-5.6-lunaworks with the current classifier options, andopenai-codex/gpt-5.6-lunaworks as a normal Pi model with provider-compatible options.