FlowiseAI/Flowise · warning · Error

Aborted!

Error message

Aborted!

What it means

Thrown by agentNode at the start of execution when `abortControllerSignal.signal.aborted` is already true. This indicates the user (or a parent flow) cancelled the run before the agent's invoke began. The signal is passed in from options.signal.

Source

Thrown at packages/components/nodes/multiagents/Supervisor/Supervisor.ts:682

            checkpointMemory: nodeData.inputs?.agentMemory
        }

        return returnOutput
    }
}

async function agentNode(
    {
        state,
        agent,
        nodeId,
        abortControllerSignal
    }: { state: ITeamState; agent: AgentExecutor | Runnable; 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: 'supervisor' }
        result.additional_kwargs = { ...result.additional_kwargs, ...additional_kwargs }
        return result
    } catch (error) {
        throw new Error('Aborted!')
    }
}

const processImageMessage = async (
    index: number,
    llm: BaseChatModel,
    prompt: ChatPromptTemplate,
    nodeData: INodeData,
    options: ICommonObject
) => {
    let multiModalMessageContent: MessageContentImageUrl[] = []

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Treat as expected control flow — ensure the caller surfaces 'cancelled by user' rather than as a crash.
  2. If unexpected, inspect where options.signal is being aborted prematurely (middleware, socket disconnect handler).
  3. Add a graceful no-op return when aborted instead of throwing, if your graph supports partial results.

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 {
  // ... agent.invoke
} catch (e) {
  if (abortControllerSignal.signal.aborted || (e as Error)?.name === 'AbortError') {
    // expected cancellation
    return { messages: [], cancelled: true }
  }
  throw e
}

Prevention

When it happens

Trigger: Calling agentNode after the abort controller was already triggered — e.g. a stop button pressed during graph setup, or a parent supervisor loop that aborted while scheduling this worker node.

Common situations: User cancels a long-running multi-agent chat; chatflow-level timeout fires; upstream node aborted and the graph still attempted to invoke downstream agent nodes.

Related errors


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