n8n-io/n8n · error
FILTER_MISSING_OPTIONS
FILTER_MISSING_OPTIONS
Error message
${nodeRef} is missing 'options' in ${paramPath}. Add: options: { caseSensitive: false, leftValue: '', typeValidation: 'strict' } What it means
Error-level validator issue (code FILTER_MISSING_OPTIONS) emitted when a Filter node's filter value object is missing the 'options' key (or options is not an object). n8n's Filter node requires options (caseSensitive, leftValue, typeValidation) to evaluate conditions deterministically; the message suggests the canonical default object.
Source
Thrown at packages/@n8n/workflow-sdk/src/workflow-builder/plugins/validators/filter-node-validator.ts:39
} from '../types';
const FILTER_NODE_TYPES = ['n8n-nodes-base.if', 'n8n-nodes-base.switch', 'n8n-nodes-base.filter'];
/**
* Check a single filter value object for missing required fields.
*/
function validateFilterValue(
filterValue: Record<string, unknown>,
nodeRef: string,
paramPath: string,
nodeName: string,
originalName: string | undefined,
): ValidationIssue[] {
const issues: ValidationIssue[] = [];
if (!filterValue.options || typeof filterValue.options !== 'object') {
issues.push({
code: 'FILTER_MISSING_OPTIONS',
message: `${nodeRef} is missing 'options' in ${paramPath}. Add: options: { caseSensitive: false, leftValue: '', typeValidation: 'strict' }`,
severity: 'error',
nodeName,
originalName,
parameterPath: `${paramPath}.options`,
});
}
if (!Array.isArray(filterValue.conditions) || filterValue.conditions.length === 0) {
issues.push({
code: 'FILTER_MISSING_CONDITIONS',
message: `${nodeRef} is missing or has empty 'conditions' array in ${paramPath}. Add at least one condition with leftValue, operator, and rightValue.`,
severity: 'error',
nodeName,
originalName,
parameterPath: `${paramPath}.conditions`,
});
}View on GitHub (pinned to 5ac6606e81)
Solutions
- Add options: { caseSensitive: false, leftValue: '', typeValidation: 'strict' } to the filter value.
- Confirm options is an object literal, not a primitive.
- Re-run the validator to confirm the error clears.
Example fix
// before
filter({ conditions: [...] })
// after
filter({
options: { caseSensitive: false, leftValue: '', typeValidation: 'strict' },
conditions: [...]
}) Defensive patterns
Strategy: validation
Validate before calling
function hasFilterOptions(fv: Record<string, unknown>): boolean {
return !!fv.options && typeof fv.options === 'object';
}
if (!hasFilterOptions(filterValue)) {
// error: add options object
} Type guard
function isFilterOptions(v: unknown): v is { caseSensitive: boolean; leftValue: string; typeValidation: string } {
return typeof v === 'object' && v !== null && 'typeValidation' in v;
} Prevention
- Always include the options object on Filter node config.
- Use the canonical defaults: { caseSensitive: false, leftValue: '', typeValidation: 'strict' }.
- Run the filter validator before saving.
When it happens
Trigger: Defining a Filter node with conditions but omitting the options object; passing options as a primitive or array.
Common situations: Hand-authoring filter config without the full schema; LLM-generated filter that omits options; minimal config that assumed defaults.
Related errors
- FILTER_MISSING_CONDITIONS
- FILTER_MISSING_COMBINATOR
- SWITCH_WRONG_RULES_KEY
- Invalid filter operator "${operator}" for key "${key}". Supp
- Filter operator "${operator}" on key "${key}" requires a non
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/82e07b9d2ee8646f.
Report an issue: GitHub.