I’ve been investigating this over the last week and it looks like we have a bug in our handling of tool_choice=required for the GPT-OSS models. On all other models, we return a 400 error when the model doesn’t call a tool when it’s required. On GPT-OSS models, it doesn’t return an error, but it should.
@benank how come this is the expected/default behaviour? The behaviour for e.g. OpenAI is that if a tool is required, the model HAS to return a tool - even if it normally wouldn’t; I believe they use constrained decoding to only allow tokens that produce json corresponding to one of the available tools. I think you already support this somehow, since you do support structured outputs/tool calls? Why is supporting the required setting different?