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