n8n-io/n8n · error · Error

Cannot combine `--langsmith` with `--backend local`

Error message

Cannot combine `--langsmith` with `--backend local`

What it means

Mutually-exclusive-options error in parseEvaluationArgs. It fires when --langsmith is set while --backend was explicitly given as local: the Langsmith flag implies backend langsmith, so an explicit local backend contradicts it. The check distinguishes explicit backend flags from defaults via seenKeys, so implicit defaults do not trigger it.

Solutions

  1. Drop --langsmith to run against the local backend, or drop/change --backend to use LangSmith.
  2. Omit --backend entirely; passing --langsmith sets backend to langsmith automatically.
  3. Explicitly passing --backend local together with --langsmith is the only rejected combination.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/@n8n/ai-workflow-builder.ee/evaluations/cli/argument-parser.ts:519 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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

Appendix: source

Thrown at packages/@n8n/ai-workflow-builder.ee/evaluations/cli/argument-parser.ts:519

	if (args.technique && !filters.technique) filters.technique = args.technique;

	const hasAny = Object.values(filters).some((v) => typeof v === 'string' && v.length > 0);
	return hasAny ? filters : undefined;
}

export function parseEvaluationArgs(argv: string[] = process.argv.slice(2)): EvaluationArgs {
	// Check for help flag before parsing
	if (argv.includes('--help') || argv.includes('-h')) {
		printHelp();
		process.exit(0);
	}

	const { values, seenKeys } = parseCli(argv);

	if (values.langsmith === true) {
		const backendWasExplicit = seenKeys.has('backend');
		if (backendWasExplicit && values.backend !== 'langsmith') {
			throw new Error('Cannot combine `--langsmith` with `--backend local`');
		}
		values.backend = 'langsmith';
	}

	const parsed = cliSchema.parse(values);

	const featureFlags = parseFeatureFlags({
		suite: parsed.suite,
	});

	const filters = parseFilters({
		filter: parsed.filter,
		notionId: parsed.notionId,
		technique: parsed.technique,
	});

	if (parsed.suite !== 'pairwise' && (filters?.doSearch || filters?.dontSearch)) {
		throw new Error(

View on GitHub (pinned to 5ac6606e81)