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.

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.

Appendix: 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)