Problema ao salvar workflow após usar o Assistente de IA do n8n para renomear nós

Olá a todos,

Recentemente enfrentei esse problema e corrigi manualmente. Postando minhas descobertas aqui caso não seja um comportamento intencional — ou caso o Assistente de IA precise melhorar.

O Problema

Pedi ao Assistente de IA do n8n para renomear alguns nós em um de meus fluxos de trabalho. Ele fez a edição e tudo parecia bem na tela. Mas logo após, o fluxo de trabalho ficou completamente impossível de salvar — cada edição que fiz depois disso falhou com:

Problema ao salvar fluxo de trabalho
Salvamento automático falhou: Não é possível converter indefinido ou nulo para objeto

O console do navegador mostrou o mesmo erro disparando repetidamente do renderizador de tela e do manipulador de salvamento:

Os Sintomas (IA)

  • Renomear era a única coisa que pedi ao Assistente de IA para fazer, mas após sua edição, o JSON do fluxo de trabalho voltou com vários campos em nível de nó explicitamente definidos como null — coisas como credentials, webhookId, notes, notesInFlow, executeOnce, retryOnFail, alwaysOutputData e onError.
  • Qualquer nó que normalmente não precisasse dessas propriedades simplesmente omite a chave inteiramente em uma exportação padrão do n8n. A edição do Assistente de IA em vez disso as escreveu como null.
  • Uma vez que essa forma atingiu a tela, cada ação subsequente (mover um nó, salvar, salvar automaticamente) travou com o mesmo erro Object.keys, porque nodeTransforms.ts tenta normalizar esses campos e não espera um null literal.

A Causa Raiz (IA)

nodeTransforms.ts (usado tanto pela lógica de diff da tela quanto por useWorkflowSaving.ts) chama Object.keys(...) em certas propriedades de nó (como credentials) ao calcular o diff para salvar. Object.keys(null) lança uma exceção, então assim que um nó no fluxo de trabalho tiver null em vez de uma chave omitida, salvar/salvar automaticamente o fluxo de trabalho inteiro quebra — não apenas esse nó.

Parece que o caminho de edição de nó do Assistente de IA serializa o objeto de nó sem descartar chaves que resolvidas para null, o que produz um JSON tecnicamente válido, mas um formato de nó não seguro para o frontend.

A Solução (manualmente)

Exporte o JSON do fluxo de trabalho, remova qualquer chave em qualquer nó cujo valor seja null (em vez de configurá-lo como null), e reimporte. Por exemplo, nos nós afetados, remova chaves como:

"credentials": null,
"webhookId": null,
"notes": null,
"notesInFlow": null,
"executeOnce": null,
"retryOnFail": null,
"alwaysOutputData": null,
"onError": null

para que o objeto de nó simplesmente não tenha essas chaves se não as usar. Após remover os campos null e reimportar (Importar do Arquivo em um novo fluxo de trabalho, não colar na tela), o fluxo de trabalho foi salvo e salvo automaticamente normalmente novamente.

Espero que isso economize algumas horas de depuração de alguém!
Isso parece ser um bug em como o Assistente de IA serializa edições de nó — agradeceria uma confirmação da equipe do n8n, já que qualquer pessoa editando em lote nós com ele poderia bater na mesma parede.

Ótima descoberta, @mohamed3nan !!!
Parece ser um bug mesmo

Ótimo artigo - relatar e documentar a causa raiz é genuinamente útil. Se isso acontecer novamente e você quiser pular a edição manual de JSON, um pequeno nó Code pode automatizar a limpeza:

const workflow = JSON.parse($input.item.json.workflowJson);
workflow.nodes = workflow.nodes.map(node =>
  Object.fromEntries(Object.entries(node).filter(([_, v]) => v !== null))
);
return { workflowJson: JSON.stringify(workflow) };

Cole o JSON do fluxo de trabalho exportado em um nó Set, execute-o por meio disto e importe o resultado - economiza alguns minutos se o bug atingir um fluxo de trabalho complexo.

Uma pergunta, @mohamed3nan.
Você hospedou seu sandbox de IA você mesmo?

Oi @kjooleng, ainda não tentei auto-hospedagem porque parece um pouco complexa,

Estou usando a opção Daytona porque é muito mais fácil de configurar..

@mohamed3nan Como o recurso Assistente de IA ainda está em visualização prévia e apresenta esse bug, se for uma tarefa simples, ajustar as coisas normalmente ou manualmente é muito melhor.

Criei ADO-5601 como nosso ticket interno para resolver isso.

A nova versão n8n@2.33.0 foi lançada, que inclui o GitHub PR 34668.