{"collection":{"slug":"workflow-orchestration","name":"Background Jobs & Orchestration"},"digest":{"id":"cwd_U-_g61tPHvmchIeQSGe9X","weekStart":"2026-07-13","title":"n8n ships v2.31 across the board as Inngest adds deferred abort and scoring","intro":"n8n released version 2.31.0 across its maintenance lines, addressing security around credential binding and community package provenance, while Inngest introduced deferred run abort and a new v2 scoring API.","body":"### n8n’s biggest week in months: v2.31.0 security and platform fixes\n\nn8n dominated the week with a coordinated release of v2.31.0 across three maintenance streams, backporting critical fixes. The headline release, [n8n 2.31.0](/release/rel_os61jyVdoYNyNbAEZZJ-m-n8n-2-31-0), shipped on July 14 and brought a suite of bug fixes alongside the new features. Most notably, dynamic credential tokens are now bound to a user ID, closing a security gap that could have allowed credential reuse across user contexts. This fix was immediately backported to [2.31.1](/release/rel_yKU3BFqT9mTj2eLp4ZczP-n8n-2-31-1) and [2.30.5](/release/rel_G5VXi3sWaUMRrmnDDbPxH-n8n-2-30-5) on July 15.\n\nSecurity hardening continued with [2.30.7](/release/rel_GpAAqWqmlXB795-_i1ZKK-n8n-2-30-7) and [2.31.3](/release/rel_zbJoriPALvxYKNSDU1Nnr-n8n-2-31-3), which both fix SES request signing and add provenance-attested linting for community packages, ensuring that plugins installed from npm can be verified against their source. The 1.x maintenance line also got attention: [1.123.66](/release/rel_C1ES2CHGodgArzlcx6idy-n8n-1-123-66) fixed external modules in the Code node that had stopped working.\n\nPlatform stability saw improvements across the board. Webhook execution promises now settle properly on early errors, fixed in [2.29.11](/release/rel_SuNpfSk4csFQCjt93lLLF-n8n-2-29-11), [2.30.4](/release/rel_K6kLzcvXrdX-hP-5p4NQn-n8n-2-30-4), and [1.123.65](/release/rel_GzSCs6erZq6G65YjpfylU-n8n-1-123-65). The 2.31.x line also required explicit execution mode for MCP workflow executions — backported to [2.31.2](/release/rel_oqS5pyDasdHuMlw6hKA7C-n8n-2-31-2) and [2.30.6](/release/rel_Ydc8KJNPpnEvuVbuRsZUf-n8n-2-30-6) — preventing workflows from running in unintended environments.\n\n### Inngest adds deferred abort and v2 scoring\n\n[Inngest’s JS SDK 4.13.0](/release/rel_A30qRHdf4T3QqjO1d1hjS-inngest-4-13-0) introduced `defer().abort()`, letting developers programmatically cancel deferred runs. This is a practical addition for workflows that need to react to external cancellation signals without waiting for a timeout.\n\nThe [Inngest Server v1.37.0](/release/rel_RPxrSoh_8BqgLft1zBGdZ-v1-37-0) added a v2 scoring endpoint (`POST /v2/runs/{runId}/scores`), allowing you to record named scores against function runs or individual steps. This is straightforward telemetry for evaluation pipelines — think A/B testing prompt strategies or tracking LLM response quality per step.\n\n### Temporal and Trigger.dev: bundler fixes and v3 cleanup\n\n[Temporal’s TypeScript SDK 1.20.3](/release/rel_HKPfsR08P9Ye_1T9-b6R5-v1-20-3) fixed a webpack module cache regression introduced in 1.20.1, and made LangSmith bundle rewrites compatible with pnpm’s non-hoisting layout. The fire-and-forget LangSmith run emission also removes a problematic yield point that could reorder commands under `signalWithStart`.\n\n[Trigger.dev v4.5.4](/release/rel_69xYZmUxD0kYFm4bDCUS1-trigger-dev-v4-5-4) (also covered in the [Trigger.dev changelog](/release/rel_jkrT2A6h3NKqWjtW2WnDC-trigger-dev-v4-5-4)) removed the v3 engine entirely, marking a clean break. It also added secret marking for `syncEnvVars` and fixed a chat.agent message drop — a welcome stability fix for anyone using agent-based workflows.","releaseIds":["rel_os61jyVdoYNyNbAEZZJ-m","rel_yKU3BFqT9mTj2eLp4ZczP","rel_G5VXi3sWaUMRrmnDDbPxH","rel_GpAAqWqmlXB795-_i1ZKK","rel_zbJoriPALvxYKNSDU1Nnr","rel_C1ES2CHGodgArzlcx6idy","rel_SuNpfSk4csFQCjt93lLLF","rel_K6kLzcvXrdX-hP-5p4NQn","rel_GzSCs6erZq6G65YjpfylU","rel_oqS5pyDasdHuMlw6hKA7C","rel_Ydc8KJNPpnEvuVbuRsZUf","rel_A30qRHdf4T3QqjO1d1hjS","rel_RPxrSoh_8BqgLft1zBGdZ","rel_HKPfsR08P9Ye_1T9-b6R5","rel_69xYZmUxD0kYFm4bDCUS1","rel_jkrT2A6h3NKqWjtW2WnDC"],"releaseCount":16,"generatedAt":"2026-07-20T06:18:29.290Z","releases":[{"id":"rel_os61jyVdoYNyNbAEZZJ-m","title":"n8n@2.31.0","path":"/release/rel_os61jyVdoYNyNbAEZZJ-m-n8n-2-31-0","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_yKU3BFqT9mTj2eLp4ZczP","title":"n8n@2.31.1","path":"/release/rel_yKU3BFqT9mTj2eLp4ZczP-n8n-2-31-1","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_G5VXi3sWaUMRrmnDDbPxH","title":"n8n@2.30.5","path":"/release/rel_G5VXi3sWaUMRrmnDDbPxH-n8n-2-30-5","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_GpAAqWqmlXB795-_i1ZKK","title":"n8n@2.30.7","path":"/release/rel_GpAAqWqmlXB795-_i1ZKK-n8n-2-30-7","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_zbJoriPALvxYKNSDU1Nnr","title":"n8n@2.31.3","path":"/release/rel_zbJoriPALvxYKNSDU1Nnr-n8n-2-31-3","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_C1ES2CHGodgArzlcx6idy","title":"n8n@1.123.66","path":"/release/rel_C1ES2CHGodgArzlcx6idy-n8n-1-123-66","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_SuNpfSk4csFQCjt93lLLF","title":"n8n@2.29.11","path":"/release/rel_SuNpfSk4csFQCjt93lLLF-n8n-2-29-11","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_K6kLzcvXrdX-hP-5p4NQn","title":"n8n@2.30.4","path":"/release/rel_K6kLzcvXrdX-hP-5p4NQn-n8n-2-30-4","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_GzSCs6erZq6G65YjpfylU","title":"n8n@1.123.65","path":"/release/rel_GzSCs6erZq6G65YjpfylU-n8n-1-123-65","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_oqS5pyDasdHuMlw6hKA7C","title":"n8n@2.31.2","path":"/release/rel_oqS5pyDasdHuMlw6hKA7C-n8n-2-31-2","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_Ydc8KJNPpnEvuVbuRsZUf","title":"n8n@2.30.6","path":"/release/rel_Ydc8KJNPpnEvuVbuRsZUf-n8n-2-30-6","org":{"slug":"n8n","name":"n8n"},"importance":null},{"id":"rel_A30qRHdf4T3QqjO1d1hjS","title":"inngest@4.13.0","path":"/release/rel_A30qRHdf4T3QqjO1d1hjS-inngest-4-13-0","org":{"slug":"inngest","name":"Inngest"},"importance":null},{"id":"rel_RPxrSoh_8BqgLft1zBGdZ","title":"v1.37.0","path":"/release/rel_RPxrSoh_8BqgLft1zBGdZ-v1-37-0","org":{"slug":"inngest","name":"Inngest"},"importance":null},{"id":"rel_HKPfsR08P9Ye_1T9-b6R5","title":"v1.20.3","path":"/release/rel_HKPfsR08P9Ye_1T9-b6R5-v1-20-3","org":{"slug":"temporal","name":"Temporal"},"importance":null},{"id":"rel_69xYZmUxD0kYFm4bDCUS1","title":"trigger.dev v4.5.4","path":"/release/rel_69xYZmUxD0kYFm4bDCUS1-trigger-dev-v4-5-4","org":{"slug":"trigger-dev","name":"Trigger.dev"},"importance":null},{"id":"rel_jkrT2A6h3NKqWjtW2WnDC","title":"Trigger.dev v4.5.4","path":"/release/rel_jkrT2A6h3NKqWjtW2WnDC-trigger-dev-v4-5-4","org":{"slug":"trigger-dev","name":"Trigger.dev"},"importance":null}]}}