With model sync enabled, ChatMock silently rewrites reasoning.effort: none to low because none is missing from the Codex model catalog's selectable reasoning levels.
Direct backend tests confirmed every model currently exposed by ChatMock accepts none, including GPT-5.4, GPT-5.5, GPT-5.6 Sol/Terra/Luna, and Daybreak Blue.
ChatMock should pass explicit effort values upstream unchanged, or return the upstream error instead of silently rewriting them.
Tested by sending a Responses payload directly through ChatMock's authenticated upstream client:
{
"model": "gpt-5.6-luna",
"input": [...],
"stream": True,
"reasoning": {"effort": "none"}
}
This bypassed only ChatMock's local build_reasoning_param() validation/clamping.
All exposed models succeeded with none.
As a control, Luna with minimal returned HTTP 400:
Unsupported value: 'minimal' … Supported values are: 'none', 'low', 'medium', 'high', 'xhigh', and 'max'.
With model sync enabled, ChatMock silently rewrites
reasoning.effort: nonetolowbecausenoneis missing from the Codex model catalog's selectable reasoning levels.Direct backend tests confirmed every model currently exposed by ChatMock accepts
none, including GPT-5.4, GPT-5.5, GPT-5.6 Sol/Terra/Luna, and Daybreak Blue.ChatMock should pass explicit effort values upstream unchanged, or return the upstream error instead of silently rewriting them.
Tested by sending a Responses payload directly through ChatMock's authenticated upstream client:
This bypassed only ChatMock's local
build_reasoning_param()validation/clamping.All exposed models succeeded with
none.As a control, Luna with
minimalreturned HTTP 400: