n8n Workflows Broken After 2.0 Update
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. Restore env var access or move secrets to credentials
- Preferably store secrets in n8n credentials
- Or set N8N_BLOCK_ENV_ACCESS_IN_NODE=false and restart
2. Re-enable Execute Command / Local File Trigger
- Set NODES_EXCLUDE="[]" (or list only nodes you want excluded)
- Restart n8n
3. Fix Code node expressions
- Rewrite $evaluateExpression() logic in plain JavaScript
- Or evaluate the expression in an Edit Fields (Set) node before the Code node
4. Replace removed nodes and storage
- Replace Start nodes with Manual Trigger or Execute Workflow Trigger
- Move Python Code nodes to native Python with external task runners (n8nio/runners image)
- Migrate MySQL/MariaDB storage to PostgreSQL or SQLite before upgrading
- Switch binary data mode to filesystem, database or s3
5. Pin versions and test before upgrading
- Pin a specific image tag instead of latest (latest is now 'stable')
- Test upgrades on a staging copy first
- 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
- n8n Webhook Not Registered (404 Error)
- n8n Webhook URL Shows localhost
- n8n Out of Memory (JavaScript Heap Out of Memory)
- n8n Connection Lost Error
- n8n Executions Stuck in Queued / Starting Soon
- n8n Google OAuth redirect_uri_mismatch Error
- n8n Schedule Trigger Running at the Wrong Time
- n8n 'Cannot Read Properties of Undefined' Error
- n8n Cloud Workspace Offline (503 Error)