n8n-io/n8n · error · Error
--source langtracer requires --suite <slug>
Error message
--source langtracer requires --suite <slug>
What it means
Thrown by `loadTestCases()` in data/source.ts when `args.source === 'langtracer'` but `args.suite` is unset. The LangTracer provider needs a suite slug to know which suite of recorded cases to pull; without it the request is ambiguous and the provider would return either everything or nothing. The disk source (default) does not need a suite, which is why the check is gated on the source.
Source
Thrown at packages/@n8n/instance-ai/evaluations/data/source.ts:15
// Test-case source selector — `disk` (default) or `langtracer`, both returning the
// same WorkflowTestCaseWithFile[] so the rest of the pipeline is source-agnostic.
import { loadAgentEvalTestCasesWithFiles } from './agents';
import { loadWorkflowTestCasesWithFiles, type WorkflowTestCaseWithFile } from './workflows';
import type { CliArgs } from '../cli/args';
import type { EvalLogger } from '../harness/logger';
import { loadTestCasesFromLangTracer } from '../langtracer/provider';
export async function loadTestCases(
args: CliArgs,
logger: EvalLogger,
): Promise<WorkflowTestCaseWithFile[]> {
if (args.source === 'langtracer') {
if (!args.suite) throw new Error('--source langtracer requires --suite <slug>');
return await loadTestCasesFromLangTracer({
suite: args.suite,
filter: args.filter,
exclude: args.exclude,
tier: args.tier,
logger,
});
}
const cases = [
...loadWorkflowTestCasesWithFiles(args.filter, args.exclude),
...loadAgentEvalTestCasesWithFiles(args.filter, args.exclude),
];
const { tier } = args;
if (!tier) return cases;
const matched = cases.filter(({ testCase }) => testCase.datasets.includes(tier));
if (matched.length === 0) {View on GitHub (pinned to 5ac6606e81)
Solutions
- Add `--suite <suite-slug>` alongside `--source langtracer`. The slug is the LangTracer suite identifier your team configured.
- If you didn't mean to use LangTracer, drop `--source langtracer` (the default `disk` source loads local JSON cases).
- Confirm the suite slug exists upstream in LangTracer before re-running; an unknown slug will fail later in the provider, not here.
Example fix
// before $ node eval.ts --source langtracer // after $ node eval.ts --source langtracer --suite my-team-suite
Defensive patterns
Strategy: validation
Validate before calling
function validateArgs(args: CliArgs): void {
if (args.source === 'langtracer' && !args.suite) {
throw new Error('--source langtracer requires --suite <slug>');
}
} Prevention
- Treat `--source langtracer` and `--suite <slug>` as a paired requirement in wrapper scripts — assert both or neither.
- Document the dependency clearly in the CLI's `--help` output.
When it happens
Trigger: Run the workflow/agent eval CLI with `--source langtracer` but forget `--suite <slug>`. Typo the flag as `--suites` or `--suite-name`. Set the suite via an env var that the CLI doesn't actually read (the CLI only reads `--suite`).
Common situations: Switching from local disk cases to a LangTracer suite for the first time. A wrapper script that conditionally passes `--source langtracer` but forgets to also pass `--suite`.
Related errors
- Unknown flag: ${arg.split('=', 1)[0]}
- Unexpected positional argument
- Missing value for ${flag}
- No test cases match --tier "${tier}". Known tiers: ${known.j
- Missing value for ${arg}
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/684b1893fd5fadcd.
Report an issue: GitHub.