From b1cb84d42e01672169e04de365859136a1e59913 Mon Sep 17 00:00:00 2001 From: Plaidmustache Date: Mon, 16 Feb 2026 22:06:54 +0100 Subject: [PATCH] fix(agents): honor MODEL_PROVIDER for subagent routing Bug fix: remove hardcoded azure-openai fallback in SubagentExecutor._callModel. Subagents now use config.modelProvider.type (with legacy provider fallback) for Claude/GPT family models. This prevents Task/subagent failures on non-Azure setups (e.g., moonshot/openai/openrouter). --- src/agents/executor.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/agents/executor.js b/src/agents/executor.js index d52964f..39be0ab 100644 --- a/src/agents/executor.js +++ b/src/agents/executor.js @@ -162,14 +162,22 @@ class SubagentExecutor { payload.tools = filteredTools; } - // Determine provider based on model - subagents should use the specified model + // Determine provider based on model family. + // Subagents should use the currently configured MODEL_PROVIDER and avoid + // hard-fallbacks to Azure when Azure is not selected/configured. let forceProvider = null; - if (payload.model?.includes('claude') || payload.model?.includes('sonnet') || payload.model?.includes('haiku') || payload.model?.includes('opus')) { - // Route Claude models to the configured Claude provider (azure-openai, databricks, etc.) + const modelLower = String(payload.model || "").toLowerCase(); + const isClaudeFamilyModel = + modelLower.includes("claude") || + modelLower.includes("sonnet") || + modelLower.includes("haiku") || + modelLower.includes("opus"); + const isGptFamilyModel = modelLower.includes("gpt"); + + if (isClaudeFamilyModel || isGptFamilyModel) { const config = require('../config'); - forceProvider = config.modelProvider?.provider || 'azure-openai'; - } else if (payload.model?.includes('gpt')) { - forceProvider = 'azure-openai'; + // `type` is the canonical key; `provider` kept as legacy fallback. + forceProvider = config.modelProvider?.type || config.modelProvider?.provider || null; } logger.debug({