FlowiseAI/Flowise · warning · Error

Aborted!

Error message

Aborted!

What it means

Worker's agentNode checks `abortControllerSignal.signal.aborted` before invoking the agent. If the worker run was cancelled before invoke started (e.g. supervisor decided to stop, user clicked stop), it throws 'Aborted!' immediately.

Source

Thrown at packages/components/nodes/multiagents/Worker/Worker.ts:281

            ])
        }
        return conversationChain
    }
}

async function agentNode(
    {
        state,
        agent,
        name,
        nodeId,
        abortControllerSignal
    }: { state: ITeamState; agent: AgentExecutor | RunnableSequence; name: string; nodeId: string; abortControllerSignal: AbortController },
    config: RunnableConfig
) {
    try {
        if (abortControllerSignal.signal.aborted) {
            throw new Error('Aborted!')
        }

        const result = await agent.invoke({ ...state, signal: abortControllerSignal.signal }, config)
        const additional_kwargs: ICommonObject = { nodeId, type: 'worker' }
        if (result.usedTools) {
            additional_kwargs.usedTools = result.usedTools
        }
        if (result.sourceDocuments) {
            additional_kwargs.sourceDocuments = result.sourceDocuments
        }
        return {
            messages: [
                new HumanMessage({
                    content: typeof result === 'string' ? result : result.output,
                    name,
                    additional_kwargs: Object.keys(additional_kwargs).length ? additional_kwargs : undefined
                })
            ]

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Treat as benign cancellation — log at info level and exit cleanly.
  2. Investigate premature aborts by tracing where options.signal.abort() is called.
  3. Return a partial/empty result instead of throwing if your graph tolerates it.

Example fix

// before
if (abortControllerSignal.signal.aborted) {
  throw new Error('Aborted!')
}
// after
if (abortControllerSignal.signal.aborted) {
  return { messages: [], cancelled: true }
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (abortControllerSignal.signal.aborted) {
  return { messages: [], cancelled: true }
}

Try / catch

try { /* invoke */ }
catch (e) {
  if (abortControllerSignal.signal.aborted || (e as Error)?.name === 'AbortError') return { messages: [], cancelled: true }
  throw e
}

Prevention

When it happens

Trigger: Cancellation signal already set when agentNode is entered — stop button, parent timeout, graph teardown.

Common situations: Long-running worker pipelines where the user cancels mid-flight; supervisor max-iterations reached with concurrent worker aborts.

Related errors


AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12). Data as JSON: /api/errors/40535e5d234ca500. Report an issue: GitHub.