diff --git a/packages/app/src/context/local.tsx b/packages/app/src/context/local.tsx index f51bb693092..20ca458cfdc 100644 --- a/packages/app/src/context/local.tsx +++ b/packages/app/src/context/local.tsx @@ -175,6 +175,17 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ if (currentAgent) setEphemeral("model", currentAgent.name, next) if (model) models.setVisibility(model, true) if (options?.recent && model) models.recent.push(model) + // Persist the model selection to config so child processes inherit it + if (model && !options?.recent) { + sdk.config.set({ + directory: sdk.directory, + config: { + model: `${model.providerID}/${model.modelID}`, + }, + }).catch((error) => { + console.error("Failed to persist model selection to config", error) + }) + } }) }, visible(model: ModelKey) { diff --git a/packages/opencode/src/acp/agent.ts b/packages/opencode/src/acp/agent.ts index cc9a029a045..198ef5b5b89 100644 --- a/packages/opencode/src/acp/agent.ts +++ b/packages/opencode/src/acp/agent.ts @@ -1373,6 +1373,9 @@ export namespace ACP { return undefined }) + // If a model is specified in the config file, use it instead of falling back to defaults + if (specified) return specified + const providers = await sdk.config .providers({ directory }, { throwOnError: true }) .then((x) => x.data?.providers ?? []) @@ -1411,8 +1414,6 @@ export namespace ACP { } } - if (specified) return specified - return { providerID: "opencode", modelID: "big-pickle" } }