Data table name conflicts handled gracefully
The AI builder no longer wastes agent iterations retrying when a data table name conflict occurs during workflow creation. Instead of throwing an error that causes looping, the tool now returns guidance pointing to the existing table.
When users tried building workflows with data tables, they sometimes ran into a problem: if a table with that name already existed, the builder would throw an error and start looping—retrying the same failed operation over and over. One user reported spending 45 minutes before giving up entirely.
The fix is straightforward. When the create-data-table tool encounters a name conflict, instead of throwing an error, it now returns denied: true along with guidance: use list-data-tables to find the existing table and get-data-table-schema to check its columns. The AI builder handles this gracefully, course-correcting instead of spinning.
Before the fix, parallel build runs succeeded just 1 out of 3 times. After the fix, all 3 runs complete successfully.
This change lives in the AI builder's data table creation tool, part of ongoing work to make the builder more resilient during rebuild cycles.
View Original GitHub Description
Summary
- Fix
create-data-tabletool throwingDataTableNameConflictErrorwhen the table already exists during the builder's rebuild cycle, causing the agent to waste iterations retrying - Return
denied: truewith guidance to use the existing table, which the agent handles gracefully - Add unit tests for the create-data-table tool (8 tests covering all tool states)
Before / After
| Before | After | |
|---|---|---|
| Build | 1/3 succeeded (parallel runs) | 3/3 succeeded |
Context
Reported independently by product team — a user spent 45 min trying to build a workflow with a data table before giving up. The data table conflict during the builder's rebuild cycle wastes agent iterations and context, making it more likely to hit proxy timeouts.
Related Linear ticket
https://linear.app/n8n/issue/AI-2358
Review checklist
- I have seen this code, I have run this code, and I take responsibility for this code.
Test plan
- Unit tests: 8/8 passing (create, conflict handling, suspension, permission blocked, non-conflict errors)
- Typecheck clean
- Manual before/after testing: without fix 1/3 builds succeed, with fix 3/3 builds succeed
🤖 Generated with Claude Code