diff --git a/src/hooks/keyword-detector/hook.ts b/src/hooks/keyword-detector/hook.ts index 8af85a30f..4a0c8269f 100644 --- a/src/hooks/keyword-detector/hook.ts +++ b/src/hooks/keyword-detector/hook.ts @@ -48,7 +48,7 @@ export function createKeywordDetectorHook(ctx: PluginInput, _collector?: Context // Athena is a council orchestrator — skip all keyword injections. // search/analyze modes tell the agent to use explore agents and grep directly, - // which conflicts with Athena's job of calling athena_council for council fan-out. + // which conflicts with Athena's job of launching council members via task calls. // Use getAgentConfigKey to handle display name remapping ("Athena (Council)" → "athena"). const agentConfigKey = currentAgent ? getAgentConfigKey(currentAgent) : undefined if (agentConfigKey === "athena") { diff --git a/src/plugin/tool-execute-before.ts b/src/plugin/tool-execute-before.ts index 718d18655..06210ff7d 100644 --- a/src/plugin/tool-execute-before.ts +++ b/src/plugin/tool-execute-before.ts @@ -9,6 +9,7 @@ import { parseRalphLoopArguments } from "../hooks/ralph-loop/command-arguments" import { getAgentConfigKey } from "../shared/agent-display-names" import type { CreatedHooks } from "../create-hooks" +import { COUNCIL_MEMBER_KEY_PREFIX } from "../agents/builtin-agents/council-member-agents" export function createToolExecuteBeforeHandler(args: { ctx: PluginContext @@ -27,7 +28,7 @@ export function createToolExecuteBeforeHandler(args: { const tasks = backgroundManager.getTasksByParentSession(sessionID) return tasks.some((task) => - task.agent === "council-member" && + (task.agent === "council-member" || task.agent.startsWith(COUNCIL_MEMBER_KEY_PREFIX)) && (task.status === "pending" || task.status === "running") ) }