n8n-io/n8n · error · UserError
Seed agents "${clash.name ?? clash.agentId}" and "${entry.na
Error message
Seed agents "${clash.name ?? clash.agentId}" and "${entry.name ?? entry.agentId}" both address as "${entry.ref}" — give them names that differ by more than case, spacing or punctuation What it means
Error "Seed agents "${clash.name ?? clash.agentId}" and "${entry.name ?? entry.agentId}" both address as "${entry.ref}" — give them names that differ by more than case, spacing or punctuation" thrown in n8n-io/n8n.
Source
Thrown at packages/@n8n/instance-ai/src/tools/orchestration/agent-target-binding.ts:142
/**
* Same metadata `saveAgentBuilderTarget` writes, as a plain value — for eval
* thread seeding, which has no `InstanceAiContext` to hand it. Last target wins
* as the active one, mirroring "most recently targeted".
*/
export function agentBuilderTargetMetadata(targets: AgentBuilderTarget[]): Record<string, unknown> {
const entries = targets.map((target) =>
target.ref ? { ...target, ref: normalizeAgentRef(target.ref) } : target,
);
const registry: Record<string, AgentBuilderTarget> = {};
for (const entry of entries) {
if (!entry.ref) continue;
// Two refs normalizing to one key ("Support Bot" / "support-bot") would drop
// an entry, and a later ref lookup would then edit the surviving agent —
// silently the wrong one. Refuse instead, like a duplicate seed workflow name.
const clash = registry[entry.ref];
if (clash && clash.agentId !== entry.agentId) {
throw new UserError(
`Seed agents "${clash.name ?? clash.agentId}" and "${entry.name ?? entry.agentId}" both address as "${entry.ref}" — give them names that differ by more than case, spacing or punctuation`,
);
}
registry[entry.ref] = entry;
}
return {
[METADATA_KEY]: entries[entries.length - 1],
[REGISTRY_METADATA_KEY]: registry,
};
}
/** Epoch ms of a seed message's `createdAt`, or 0 when it is missing/unparseable. */
function stampOf(message: Record<string, unknown>): number {
const raw = message.createdAt;
if (typeof raw !== 'string') return 0;
const parsed = Date.parse(raw);
return Number.isNaN(parsed) ? 0 : parsed;
}View on GitHub (pinned to 5ac6606e81)
When it happens
Trigger: Thrown at packages/@n8n/instance-ai/src/tools/orchestration/agent-target-binding.ts:142 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/b986e5227d96bd7e.
Report an issue: GitHub.