{"record":{"id":"9ba15efb4ad0caa9","repo":"n8n-io/n8n","slug":"filter-missing-combinator","errorCode":"FILTER_MISSING_COMBINATOR","errorMessage":"${nodeRef} is missing 'combinator' in ${paramPath}. Add: combinator: 'and'","messagePattern":"(.+?) is missing 'combinator' in (.+?)\\. Add: combinator: 'and'","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/@n8n/workflow-sdk/src/workflow-builder/plugins/validators/filter-node-validator.ts","lineNumber":61,"sourceCode":"\t\t\toriginalName,\n\t\t\tparameterPath: `${paramPath}.options`,\n\t\t});\n\t}\n\n\tif (!Array.isArray(filterValue.conditions) || filterValue.conditions.length === 0) {\n\t\tissues.push({\n\t\t\tcode: 'FILTER_MISSING_CONDITIONS',\n\t\t\tmessage: `${nodeRef} is missing or has empty 'conditions' array in ${paramPath}. Add at least one condition with leftValue, operator, and rightValue.`,\n\t\t\tseverity: 'error',\n\t\t\tnodeName,\n\t\t\toriginalName,\n\t\t\tparameterPath: `${paramPath}.conditions`,\n\t\t});\n\t}\n\n\tif (filterValue.combinator === undefined) {\n\t\tissues.push({\n\t\t\tcode: 'FILTER_MISSING_COMBINATOR',\n\t\t\tmessage: `${nodeRef} is missing 'combinator' in ${paramPath}. Add: combinator: 'and'`,\n\t\t\tseverity: 'error',\n\t\t\tnodeName,\n\t\t\toriginalName,\n\t\t\tparameterPath: `${paramPath}.combinator`,\n\t\t});\n\t}\n\n\treturn issues;\n}\n\nexport const filterNodeValidator: ValidatorPlugin = {\n\tid: 'core:filter-node',\n\tname: 'Filter Node Validator',\n\tnodeTypes: FILTER_NODE_TYPES,\n\tpriority: 40,\n\n\tvalidateNode(","sourceCodeStart":43,"sourceCodeEnd":79,"githubUrl":"https://github.com/n8n-io/n8n/blob/5ac6606e81f67bb9534255570cd4e86fd8101eee/packages/@n8n/workflow-sdk/src/workflow-builder/plugins/validators/filter-node-validator.ts#L43-L79","documentation":"Error-level validator issue (code FILTER_MISSING_COMBINATOR) emitted when a Filter node's filter value has no 'combinator' key. The combinator ('and' / 'or') defines how multiple conditions are combined; omitting it leaves evaluation ambiguous, so the validator requires it explicitly.","triggerScenarios":"Defining a filter with conditions and options but no combinator; assuming a default combinator is inferred.","commonSituations":"Minimal filter config; LLM-generated filter that omitted the key; migration from a single-condition filter that never needed a combinator.","solutions":["Add combinator: 'and' (or 'or') to the filter value.","Confirm the combinator matches the intended logic across all conditions.","Re-run the validator to confirm the error clears."],"exampleFix":"// before\nfilter({ options: {...}, conditions: [...] })\n// after\nfilter({\n  options: {...},\n  conditions: [...],\n  combinator: 'and'\n})","handlingStrategy":"validation","validationCode":"if (filterValue.combinator === undefined) {\n  // error: add combinator: 'and' | 'or'\n}","typeGuard":"function isCombinator(v: unknown): v is 'and' | 'or' {\n  return v === 'and' || v === 'or';\n}","tryCatchPattern":null,"preventionTips":["Always set combinator explicitly on Filter nodes with multiple conditions.","Do not rely on implicit defaults — make the logic visible.","Run the filter validator as part of local builds."],"tags":["filter","validator","combinator","node-config"],"backgroundTag":null,"analyzedSha":"5ac6606e81f67bb9534255570cd4e86fd8101eee","analyzedAt":"2026-08-12T05:26:35.080Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}