From cd0949ccfa1326974d1ae8b9fbc2fe516643f8be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pe=C3=AFo=20Thibault?= Date: Tue, 10 Feb 2026 18:44:45 +0100 Subject: [PATCH] fix(call-omo-agent): enforce disabled_agents config (#1716) ## Summary - Added disabled_agents parameter to createCallOmoAgent factory - Check runs after ALLOWED_AGENTS validation, before agent execution - Case-insensitive matching consistent with existing patterns - Clear error message distinguishes 'disabled' from 'invalid agent type' - Threaded disabledAgents config into tool factory from pluginConfig ## Changes - tools.ts: Add disabledAgents parameter and validation check - tool-registry.ts: Pass pluginConfig.disabled_agents to factory --- src/plugin/tool-registry.ts | 2 +- src/tools/call-omo-agent/tools.ts | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/plugin/tool-registry.ts b/src/plugin/tool-registry.ts index 7236ddc4..162b81ed 100644 --- a/src/plugin/tool-registry.ts +++ b/src/plugin/tool-registry.ts @@ -48,7 +48,7 @@ export function createToolRegistry(args: { const { ctx, pluginConfig, managers, skillContext, availableCategories } = args const backgroundTools = createBackgroundTools(managers.backgroundManager, ctx.client) - const callOmoAgent = createCallOmoAgent(ctx, managers.backgroundManager) + const callOmoAgent = createCallOmoAgent(ctx, managers.backgroundManager, pluginConfig.disabled_agents ?? []) const isMultimodalLookerEnabled = !(pluginConfig.disabled_agents ?? []).some( (agent) => agent.toLowerCase() === "multimodal-looker", diff --git a/src/tools/call-omo-agent/tools.ts b/src/tools/call-omo-agent/tools.ts index dbcfcf97..8eca44ea 100644 --- a/src/tools/call-omo-agent/tools.ts +++ b/src/tools/call-omo-agent/tools.ts @@ -8,7 +8,8 @@ import { executeSync } from "./sync-executor" export function createCallOmoAgent( ctx: PluginInput, - backgroundManager: BackgroundManager + backgroundManager: BackgroundManager, + disabledAgents: string[] = [] ): ToolDefinition { const agentDescriptions = ALLOWED_AGENTS.map( (name) => `- ${name}: Specialized agent for ${name} tasks` @@ -44,6 +45,11 @@ export function createCallOmoAgent( const normalizedAgent = args.subagent_type.toLowerCase() as AllowedAgentType args = { ...args, subagent_type: normalizedAgent } + // Check if agent is disabled + if (disabledAgents.some((disabled) => disabled.toLowerCase() === normalizedAgent)) { + return `Error: Agent "${normalizedAgent}" is disabled via disabled_agents configuration. Remove it from disabled_agents in your oh-my-opencode.json to use it.` + } + if (args.run_in_background) { if (args.session_id) { return `Error: session_id is not supported in background mode. Use run_in_background=false to continue an existing session.`