n8n-io/n8n · warning
AGENT_STATIC_PROMPT
AGENT_STATIC_PROMPT
Error message
'${node.name}' has no expression in its prompt. Parameter values must start with '=' to evaluate correctly as expressions. For example '={{ $json.input }}'. What it means
Warning-level validator issue (code AGENT_STATIC_PROMPT, reused by the chain-llm validator) emitted when a Chain LLM node's text prompt contains no '=' expression and no malformed '{{ }}' fragment. Without an expression the prompt cannot incorporate runtime data, so parameter values will not evaluate as expected. The message emphasizes that values must start with '='.
Source
Thrown at packages/@n8n/workflow-sdk/src/workflow-builder/plugins/validators/chain-llm-validator.ts:60
}
const promptType = params.promptType as string | undefined;
// Only check when promptType is 'define' (explicit prompt definition)
if (promptType !== 'define') {
return issues;
}
// Check: Static prompt (no expression)
const text = params.text;
const hasValidExpression = containsExpression(text);
const hasMalformedExpression = containsMalformedExpression(text);
// Only warn about static prompt if there's NO expression at all
// (MISSING_EXPRESSION_PREFIX will handle malformed expressions)
if (!text || (!hasValidExpression && !hasMalformedExpression)) {
issues.push({
code: 'AGENT_STATIC_PROMPT',
message: `'${node.name}' has no expression in its prompt. Parameter values must start with '=' to evaluate correctly as expressions. For example '={{ $json.input }}'.`,
severity: 'warning',
nodeName: node.name,
});
}
return issues;
},
};
View on GitHub (pinned to 5ac6606e81)
Solutions
- Prefix the prompt with '=' and reference input data, e.g. '={{ $json.input }}'.
- If the prompt is genuinely static, acknowledge the warning is benign.
- Switch to promptType 'define' with an explicit expression for dynamic data.
Example fix
// before
chainLlm({ text: 'Answer the question' })
// after
chainLlm({ text: '={{ $json.input }}' }) Defensive patterns
Strategy: validation
Validate before calling
function isExpression(value: unknown): boolean {
return typeof value === 'string' && value.startsWith('=');
}
if (!isExpression(chainLlmParams.text)) {
// warn: prompt will not evaluate as an expression
} Prevention
- Prefix Chain LLM prompts with '=' when referencing input data.
- Avoid hardcoded prompts for nodes that depend on upstream items.
- Run validators as part of CI for code-generated workflows.
When it happens
Trigger: Configuring a Chain LLM node with text: 'Answer the question' (no '=' prefix), or an empty text, expecting it to consume upstream data.
Common situations: Static placeholder prompts left during prototyping; copy-paste from a non-n8n template; expecting $json auto-injection without an expression.
Related errors
- AGENT_STATIC_PROMPT
- AGENT_NO_SYSTEM_MESSAGE
- INVALID_DATE_METHOD
- INVALID_EXPRESSION_PATH
- PARTIAL_EXPRESSION_PATH
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/bf5d584a852fba9c.
Report an issue: GitHub.