n8n Workflows Broken After 2.0 Update

Workaround available Self-hosted (Docker, npm); some changes also affect n8n Cloud Updated October 21, 2026

Quick answer

n8n 2.0 introduced many breaking changes: Code nodes run on task runners and can't read env vars by default, Execute Command is disabled, the Start node and Pyodide Python are gone, and Activate became Publish. Check the official breaking-changes list and re-enable or rewrite what you need.

Most likely fix: Restore env var access or move secrets to credentials.

Symptoms

After upgrading, Code nodes fail or return null for $evaluateExpression, $env access is denied, Execute Command or Local File Trigger nodes are missing, Python Code nodes fail, workflows with a Start node won't run, or n8n won't start on MySQL.

Why it happens

  • N8N_BLOCK_ENV_ACCESS_IN_NODE now defaults to true
  • Task runners enabled by default; $evaluateExpression blocked in Code nodes
  • ExecuteCommand and LocalFileTrigger disabled by default
  • Pyodide Python Code node removed
  • Start node, in-memory binary mode and MySQL/MariaDB storage removed
  • File access restricted to ~/.n8n-files by default

How to fix it

Try these in order — the most common fix is first.

  1. 1. Restore env var access or move secrets to credentials

    1. Preferably store secrets in n8n credentials
    2. Or set N8N_BLOCK_ENV_ACCESS_IN_NODE=false and restart
  2. 2. Re-enable Execute Command / Local File Trigger

    1. Set NODES_EXCLUDE="[]" (or list only nodes you want excluded)
    2. Restart n8n
  3. 3. Fix Code node expressions

    1. Rewrite $evaluateExpression() logic in plain JavaScript
    2. Or evaluate the expression in an Edit Fields (Set) node before the Code node
  4. 4. Replace removed nodes and storage

    1. Replace Start nodes with Manual Trigger or Execute Workflow Trigger
    2. Move Python Code nodes to native Python with external task runners (n8nio/runners image)
    3. Migrate MySQL/MariaDB storage to PostgreSQL or SQLite before upgrading
    4. Switch binary data mode to filesystem, database or s3
  5. 5. Pin versions and test before upgrading

    1. Pin a specific image tag instead of latest (latest is now 'stable')
    2. Test upgrades on a staging copy first
    3. Read docs.n8n.io breaking changes before each major upgrade

This guide also covers

  • n8n 2.0 breaking changes
  • n8n update broke workflows
  • n8n execute command node missing
  • n8n access to env vars denied

Still not working?

If n8n keeps failing, you're not alone. See every n8n problem users report or the alternatives people switch to.

Other n8n errors