n8n-io/n8n · error · NodeOperationError

Manual thinking mode is not supported on "${modelName}". Use

Error message

Manual thinking mode is not supported on "${modelName}". Use Thinking Mode = Adaptive (with Effort) instead.

What it means

Thrown by the Anthropic node when thinkingMode === 'manual' is selected for a model id starting with 'claude-opus-4-7'. Claude Opus 4.7 removed the manual thinking-budget API in favour of adaptive thinking with an effort level, so sending manual thinking parameters would 400. The node blocks the misconfiguration before the request, pointing the user at the Adaptive mode.

Source

Thrown at packages/@n8n/nodes-langchain/nodes/llms/LMChatAnthropic/LmChatAnthropic.node.ts:527

			topK?: number;
			topP?: number;
			thinking?: boolean;
			thinkingBudget?: number;
			thinkingMode?: 'disabled' | 'adaptive' | 'manual';
			effort?: 'low' | 'medium' | 'high' | 'xhigh' | 'max';
			streaming?: boolean;
		};

		const isOpus47Model = modelName.startsWith('claude-opus-4-7');
		const thinkingMode: 'disabled' | 'adaptive' | 'manual' =
			version >= 1.5
				? (options.thinkingMode ?? 'disabled')
				: options.thinking
					? 'manual'
					: 'disabled';

		if (thinkingMode === 'manual' && isOpus47Model) {
			throw new NodeOperationError(
				this.getNode(),
				`Manual thinking mode is not supported on "${modelName}". Use Thinking Mode = Adaptive (with Effort) instead.`,
				{ itemIndex },
			);
		}

		let invocationKwargs: Record<string, unknown> = {};
		if (thinkingMode === 'adaptive') {
			invocationKwargs = {
				thinking: { type: 'adaptive' },
				output_config: { effort: options.effort ?? 'medium' },
				max_tokens: options.maxTokensToSample ?? DEFAULT_MAX_TOKENS,
				top_k: undefined,
				top_p: undefined,
				temperature: undefined,
			};
		} else if (thinkingMode === 'manual') {
			invocationKwargs = {

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. Switch 'Thinking Mode' to 'Adaptive' and set an 'Effort' value (low/medium/high).
  2. Or pick a non-opus-4-7 model that still supports manual thinking.
  3. On typeVersion < 1.5, either upgrade the node typeVersion or disable the legacy 'thinking' toggle for opus-4-7.

Example fix

// before
options.thinkingMode === 'manual' && modelName.startsWith('claude-opus-4-7')
// after
options.thinkingMode === 'adaptive' && options.effort === 'medium'
Defensive patterns

Strategy: validation

Validate before calling

const isOpus47Model = modelName.startsWith('claude-opus-4-7');
if ((options.thinkingMode === 'manual' || options.thinking === true) && isOpus47Model) {
  // force adaptive before constructing the request
  options.thinkingMode = 'adaptive';
  options.effort = options.effort ?? 'medium';
}

Type guard

const isOpus47 = (m: string): boolean => m.startsWith('claude-opus-4-7');

Try / catch

// Pre-validate model + thinking combo at node-save time.

Prevention

When it happens

Trigger: User selects claude-opus-4-7-* in the model field and sets 'Thinking Mode' to 'Manual' (or, on typeVersion < 1.5, toggles the legacy 'thinking' boolean on). The isOpus47Model check matches and the error fires.

Common situations: Reusing an Opus 4.5/4.6 workflow that used manual thinking after upgrading to Opus 4.7; toggling thinking on without re-reading the model's docs; an expression that resolves the model to an opus-4-7 string while thinking is set to manual.

Related errors


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