fix: sessions_sspawn model override ignored for sub-agents

Fix bug where sessions_spawn model parameter was ignored, causing sub-agents
   to always use the parent's default model.

   The allowAny flag from buildAllowedModelSet() was not being captured or used.

   🤖 AI-assisted (Claude) - fully tested locally

   Fixes #17479, #6295, #10963
This commit is contained in:
Slats
2026-02-19 16:38:20 +00:00
committed by Peter Steinberger
parent f6b4baa776
commit 87dd896963

View File

@@ -390,6 +390,7 @@ export async function agentCommand(
let allowedModelKeys = new Set<string>(); let allowedModelKeys = new Set<string>();
let allowedModelCatalog: Awaited<ReturnType<typeof loadModelCatalog>> = []; let allowedModelCatalog: Awaited<ReturnType<typeof loadModelCatalog>> = [];
let modelCatalog: Awaited<ReturnType<typeof loadModelCatalog>> | null = null; let modelCatalog: Awaited<ReturnType<typeof loadModelCatalog>> | null = null;
let allowAnyModel = false;
if (needsModelCatalog) { if (needsModelCatalog) {
modelCatalog = await loadModelCatalog({ config: cfg }); modelCatalog = await loadModelCatalog({ config: cfg });
@@ -401,6 +402,7 @@ export async function agentCommand(
}); });
allowedModelKeys = allowed.allowedKeys; allowedModelKeys = allowed.allowedKeys;
allowedModelCatalog = allowed.allowedCatalog; allowedModelCatalog = allowed.allowedCatalog;
allowAnyModel = allowed.allowAny ?? false;
} }
if (sessionEntry && sessionStore && sessionKey && hasStoredOverride) { if (sessionEntry && sessionStore && sessionKey && hasStoredOverride) {
@@ -412,7 +414,7 @@ export async function agentCommand(
const key = modelKey(normalizedOverride.provider, normalizedOverride.model); const key = modelKey(normalizedOverride.provider, normalizedOverride.model);
if ( if (
!isCliProvider(normalizedOverride.provider, cfg) && !isCliProvider(normalizedOverride.provider, cfg) &&
allowedModelKeys.size > 0 && !allowAnyModel &&
!allowedModelKeys.has(key) !allowedModelKeys.has(key)
) { ) {
const { updated } = applyModelOverrideToSessionEntry({ const { updated } = applyModelOverrideToSessionEntry({
@@ -439,7 +441,7 @@ export async function agentCommand(
const key = modelKey(normalizedStored.provider, normalizedStored.model); const key = modelKey(normalizedStored.provider, normalizedStored.model);
if ( if (
isCliProvider(normalizedStored.provider, cfg) || isCliProvider(normalizedStored.provider, cfg) ||
allowedModelKeys.size === 0 || allowAnyModel ||
allowedModelKeys.has(key) allowedModelKeys.has(key)
) { ) {
provider = normalizedStored.provider; provider = normalizedStored.provider;