n8n-io/n8n · error · NodeOperationError

This fallback model is not supported in

Error message

This fallback model is not supported in ${version} version of the Agent node. Please upgrade the Agent node to the latest version.

What it means

Fires in Tools Agent V2 execute when the model wired into the fallback Chat Model input is a Responses-API model: the LangChainJS default call handling for Responses API + tools is broken in this node version, so such a fallback is rejected and the user is told to upgrade the Agent node (V3 handles calls differently).

Solutions

  1. Upgrade the Agent node to V3 so the fallback model also uses the working call path.
  2. Swap the fallback model for a non-Responses-API variant.
  3. If fallback is not strictly needed, disable the needsFallback option.
Defensive patterns

Strategy: validation

Validate before calling

const fallbackModel = needsFallback ? await getChatModel(this, 1) : null;
if (fallbackModel && checkIsResponsesApi(fallbackModel)) {
  throw new NodeOperationError(this.getNode(), 'Fallback model uses Responses API — upgrade Agent to V3 or pick a different fallback.');
}

Type guard

function isResponsesApiModel(model: unknown): boolean {
  return checkIsResponsesApi(model as BaseChatModel);
}

Prevention

When it happens

Trigger: Tools Agent V2 with needsFallback=true and the model connected to the Fallback Model input uses the Responses API.

Common situations: User added a fallback model that happens to be a Responses-API model; same model used for both primary and fallback on V2.

Related errors


AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12). Data as JSON: /api/errors/c9f0125f3a21e6a0. Report an issue: GitHub.

Appendix: source

Thrown at packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V2/execute.ts:287

			0,
		) as number;
		const needsFallback = this.getNodeParameter('needsFallback', 0, false) as boolean;
		const memory = await getOptionalMemory(this);
		const model = await getChatModel(this, 0);
		assert(model, 'Please connect a model to the Chat Model input');
		const fallbackModel = needsFallback ? await getChatModel(this, 1) : null;

		// FIXME: remove when this is fixed: https://github.com/langchain-ai/langchainjs/pull/9082
		// Responses API + tools is broken when using langchain default call handling. In V3 calls are handled differently, so it works.
		if (checkIsResponsesApi(model)) {
			throw new NodeOperationError(
				this.getNode(),
				`This model is not supported in ${version} version of the Agent node. Please upgrade the Agent node to the latest version.`,
			);
		}

		if (checkIsResponsesApi(fallbackModel)) {
			throw new NodeOperationError(
				this.getNode(),
				`This fallback model is not supported in ${version} version of the Agent node. Please upgrade the Agent node to the latest version.`,
			);
		}

		if (needsFallback && !fallbackModel) {
			throw new NodeOperationError(
				this.getNode(),
				'Please connect a model to the Fallback Model input or disable the fallback option',
			);
		}

		// Check if streaming is enabled
		enableStreaming = this.getNodeParameter('options.enableStreaming', 0, true) as boolean;

		for (let i = 0; i < items.length; i += batchSize) {
			const batch = items.slice(i, i + batchSize);
			const batchPromises = batch.map(async (_item, batchItemIndex) => {

View on GitHub (pinned to 5ac6606e81)