From d63d7acc450118cd0f7c38025ec21d1fdc3ed334 Mon Sep 17 00:00:00 2001 From: Frederik Loukes Date: Thu, 7 May 2026 19:10:03 +0200 Subject: [PATCH 1/4] fix: avoid sending reasoningEffort for gpt-5.5 --- packages/opencode/src/provider/transform.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index cd29e40822da..b64ec229dda6 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -1046,7 +1046,11 @@ export function options(input: { result["enable_thinking"] = true } - if (input.model.api.id.includes("gpt-5") && !input.model.api.id.includes("gpt-5-chat")) { + if ( + input.model.api.id.includes("gpt-5") && + !input.model.api.id.includes("gpt-5-chat") && + !input.model.api.id.includes("gpt-5.5") + ) { if (!input.model.api.id.includes("gpt-5-pro")) { result["reasoningEffort"] = "medium" // Only inject reasoningSummary for providers that support it natively. From a35eedeaf52b66839247e39a66afdcdd3876d3a9 Mon Sep 17 00:00:00 2001 From: Frederik Loukes Date: Thu, 7 May 2026 19:32:56 +0200 Subject: [PATCH 2/4] fix: add tests for reasoning effort options and move 5.5 check level lower --- packages/opencode/src/provider/transform.ts | 8 +-- .../opencode/test/provider/transform.test.ts | 69 +++++++++++++++++++ 2 files changed, 71 insertions(+), 6 deletions(-) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index b64ec229dda6..e33ab052e4cb 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -1046,12 +1046,8 @@ export function options(input: { result["enable_thinking"] = true } - if ( - input.model.api.id.includes("gpt-5") && - !input.model.api.id.includes("gpt-5-chat") && - !input.model.api.id.includes("gpt-5.5") - ) { - if (!input.model.api.id.includes("gpt-5-pro")) { + if (input.model.api.id.includes("gpt-5") && !input.model.api.id.includes("gpt-5-chat")) { + if (!input.model.api.id.includes("gpt-5-pro") && !input.model.api.id.includes("gpt-5.5")) { result["reasoningEffort"] = "medium" // Only inject reasoningSummary for providers that support it natively. // @ai-sdk/openai-compatible proxies (e.g. LiteLLM) do not understand this diff --git a/packages/opencode/test/provider/transform.test.ts b/packages/opencode/test/provider/transform.test.ts index c7a321d57199..d14bed8697d4 100644 --- a/packages/opencode/test/provider/transform.test.ts +++ b/packages/opencode/test/provider/transform.test.ts @@ -310,6 +310,75 @@ describe("ProviderTransform.options - gpt-5 textVerbosity", () => { }) }) +describe("ProviderTransform.options - gpt-5 reasoningEffort", () => { + const sessionID = "test-session-123" + + const createModel = (apiId: string) => + ({ + id: `azure/${apiId}`, + providerID: "azure", + api: { + id: apiId, + url: "https://azure.com", + npm: "@ai-sdk/azure", + }, + name: apiId, + capabilities: { + temperature: true, + reasoning: true, + attachment: true, + toolcall: true, + input: { + text: true, + audio: false, + image: true, + video: false, + pdf: false, + }, + output: { + text: true, + audio: false, + image: false, + video: false, + pdf: false, + }, + interleaved: false, + }, + cost: { + input: 0.03, + output: 0.06, + cache: { read: 0.001, write: 0.002 }, + }, + limit: { + context: 128000, + output: 4096, + }, + status: "active", + options: {}, + headers: {}, + }) as any + + test('gpt-5-chat should NOT set reasoningEffort', () => { + const result = ProviderTransform.options({ + model: createModel("gpt-5-chat"), + sessionID, + providerOptions: {}, + }) + + expect(result.reasoningEffort).toBeUndefined() + }) + + test("gpt-5.5 should NOT set reasoningEffort", () => { + const result = ProviderTransform.options({ + model: createModel("gpt-5.5"), + sessionID, + providerOptions: {}, + }) + + expect(result.reasoningEffort).toBeUndefined() + }) +}) + describe("ProviderTransform.options - gateway", () => { const sessionID = "test-session-123" From a5d79e86100d82029f015aaaf0c116c6b9a13b85 Mon Sep 17 00:00:00 2001 From: Frederik Loukes Date: Sun, 10 May 2026 07:01:07 +0200 Subject: [PATCH 3/4] add reasoningEffort only for azure --- packages/opencode/src/provider/transform.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index e33ab052e4cb..313dfb48fd8d 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -1046,8 +1046,13 @@ export function options(input: { result["enable_thinking"] = true } + if (input.model.api.npm === "@ai-sdk/azure" && input.model.api.id.includes("gpt-5.5")) { + result["reasoningSummary"] = "auto" + return result; + } + if (input.model.api.id.includes("gpt-5") && !input.model.api.id.includes("gpt-5-chat")) { - if (!input.model.api.id.includes("gpt-5-pro") && !input.model.api.id.includes("gpt-5.5")) { + if (!input.model.api.id.includes("gpt-5-pro")) { result["reasoningEffort"] = "medium" // Only inject reasoningSummary for providers that support it natively. // @ai-sdk/openai-compatible proxies (e.g. LiteLLM) do not understand this From b95e97688a92b667299628c214cdbbba19e3b72e Mon Sep 17 00:00:00 2001 From: Frederik Loukes Date: Mon, 3 Aug 2026 11:30:21 +0200 Subject: [PATCH 4/4] fix: avoid setting reasoningEffort parameter in gpt-5.5+ in combination with azure --- packages/opencode/src/provider/transform.ts | 11 +++++++++-- packages/opencode/test/provider/transform.test.ts | 9 +++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index bf26fdb4abb5..968ccbb5f5fa 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -1135,9 +1135,16 @@ export function options(input: { result["enable_thinking"] = true } - if (input.model.api.npm === "@ai-sdk/azure" && input.model.api.id.includes("gpt-5.5")) { + // Any gpt version above 5.4 in combination with azure does not support reasoningEffort + // so we should return early here. + const [, gptMajorVersion, gptMinorVersion] = input.model.api.id.match(/gpt-(\d+)\.(\d+)/) ?? [] + const supported = Number(gptMajorVersion) > 5 || (Number(gptMajorVersion) === 5 && Number(gptMinorVersion) >= 5) + if ( + input.model.api.npm === "@ai-sdk/azure" && + supported + ) { result["reasoningSummary"] = "auto" - return result; + return result } if (input.model.api.id.includes("gpt-5") && !input.model.api.id.includes("gpt-5-chat")) { diff --git a/packages/opencode/test/provider/transform.test.ts b/packages/opencode/test/provider/transform.test.ts index 786d528642bb..76d31a20ef3f 100644 --- a/packages/opencode/test/provider/transform.test.ts +++ b/packages/opencode/test/provider/transform.test.ts @@ -375,6 +375,15 @@ describe("ProviderTransform.options - gpt-5 reasoningEffort", () => { providerOptions: {}, }) + expect(result.reasoningEffort).toBeUndefined() + }) + test("gpt-5.6 should NOT set reasoningEffort", () => { + const result = ProviderTransform.options({ + model: createModel("gpt-5.6"), + sessionID, + providerOptions: {}, + }) + expect(result.reasoningEffort).toBeUndefined() }) })