diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index bc212629d33..b75dfd57276 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -685,7 +685,14 @@ export namespace Provider { } } } - return getModel("opencode", "gpt-5-nano") + + // Check if opencode provider is available before using it + const opencodeProvider = await state().then((state) => state.providers["opencode"]) + if (opencodeProvider && opencodeProvider.info.models["gpt-5-nano"]) { + return getModel("opencode", "gpt-5-nano") + } + + return undefined } const priority = ["gpt-5", "claude-sonnet-4", "big-pickle", "gemini-3-pro"] diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 08c3d7809ab..7495843472b 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -1408,7 +1408,8 @@ export namespace SessionPrompt { input.history.filter((m) => m.info.role === "user" && !m.parts.every((p) => "synthetic" in p && p.synthetic)) .length === 1 if (!isFirst) return - const small = await Provider.getSmallModel(input.providerID) + const small = + (await Provider.getSmallModel(input.providerID)) ?? (await Provider.getModel(input.providerID, input.modelID)) const options = pipe( {}, mergeDeep(ProviderTransform.options(small.providerID, small.modelID, small.npm ?? "", input.session.id)), diff --git a/packages/opencode/src/session/summary.ts b/packages/opencode/src/session/summary.ts index de2ef2e5c92..d9247f182dc 100644 --- a/packages/opencode/src/session/summary.ts +++ b/packages/opencode/src/session/summary.ts @@ -73,7 +73,10 @@ export namespace SessionSummary { await Session.updateMessage(userMsg) const assistantMsg = messages.find((m) => m.info.role === "assistant")!.info as MessageV2.Assistant - const small = await Provider.getSmallModel(assistantMsg.providerID) + const small = + (await Provider.getSmallModel(assistantMsg.providerID)) ?? + (await Provider.getModel(assistantMsg.providerID, assistantMsg.modelID)) + const options = pipe( {}, mergeDeep(ProviderTransform.options(small.providerID, small.modelID, small.npm ?? "", assistantMsg.sessionID)),