From 18e02a33be12751424212309247acdd950253f42 Mon Sep 17 00:00:00 2001 From: justsisyphus Date: Tue, 20 Jan 2026 18:48:13 +0900 Subject: [PATCH] feat(delegate-task): force background mode for unstable agents Detects unstable agents via is_unstable_agent config or gemini in model name. Forces background mode even when run_in_background=false, with system message explaining the forced conversion for monitoring. --- src/tools/delegate-task/tools.ts | 45 ++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/tools/delegate-task/tools.ts b/src/tools/delegate-task/tools.ts index f492d21c..88081912 100644 --- a/src/tools/delegate-task/tools.ts +++ b/src/tools/delegate-task/tools.ts @@ -482,6 +482,51 @@ ${textContent || "(No text output)"}` : parsedModel) : undefined categoryPromptAppend = resolved.promptAppend || undefined + + // Unstable agent detection - force background mode for monitoring + const isUnstableAgent = resolved.config.is_unstable_agent === true || actualModel.toLowerCase().includes("gemini") + if (isUnstableAgent && args.run_in_background === false) { + // Force background mode for unstable agents + const systemContent = buildSystemContent({ skillContent, categoryPromptAppend }) + + try { + const task = await manager.launch({ + description: args.description, + prompt: args.prompt, + agent: agentToUse, + parentSessionID: ctx.sessionID, + parentMessageID: ctx.messageID, + parentModel, + parentAgent, + model: categoryModel, + skills: args.skills.length > 0 ? args.skills : undefined, + skillContent: systemContent, + }) + + ctx.metadata?.({ + title: args.description, + metadata: { sessionId: task.sessionID, category: args.category }, + }) + + return `[UNSTABLE AGENT MODE] + +This category uses an unstable/experimental model (${actualModel}). +Forced to background mode for monitoring stability. + +Task ID: ${task.id} +Session ID: ${task.sessionID} + +Monitor progress: Use \`background_output\` with task_id="${task.id}" +Or watch the session directly for real-time updates.` + } catch (error) { + return formatDetailedError(error, { + operation: "Launch background task (unstable agent)", + args, + agent: agentToUse, + category: args.category, + }) + } + } } else { if (!args.subagent_type?.trim()) { return `Agent name cannot be empty.`