Lesstep
Azure Pipelines · Tasks and agents · Checked November 5, 2026

Azure Pipelines "is dependent on a Node version (10) that is end-of-life": Node.js 6, 10 and 16 leave the agent on November 24, 2026

Azure Pipelines tasks written in JavaScript run on a Node.js runner that ships with the agent, and each task's task.json says which ones it can use. Microsoft's Node.js runners page says that Node.js 6, 10 and 16 will be removed from the agent on November 24, 2026, and that tasks that require them may fail to run after that. Until then, the agent runs those tasks and only warns. On October 25 and 26, 2026, issues asking for Node.js 24 handlers were opened on many Marketplace extensions at once, among them azure-pipelines-terraform #384 and jfrog-azure-devops-extension #675.

To see which pull requests' builds fail on November 24: Azure DevOps Pull Requests, a plugin for JetBrains IDEs, shows a failing build policy as failed next to its pull request in your IDE. Get it on JetBrains Marketplace

What it looks like

A task that declares an end-of-life runner gives warnings like these from the agent (the agent's own strings, with the task's name and version in place of the placeholders):

Task '<name>' version <n> (<name>@<n>) is dependent on a Node version (10) that is end-of-life. Contact the extension owner for an updated version of the task. Task maintainers should review Node upgrade guidance: https://aka.ms/node-runner-guidance
Task ... relies on an unsupported version of Node.js. Unsupported Node versions (6, 10, and 16) are being retired, and any pipelines using tasks dependent on these versions will begin to fail.

The pipeline still passes, so the warning is easy to miss in a run with many steps. The runner a task declares is in the execution section of its task.json: Node is Node.js 6, then Node10, Node16, Node20_1 and Node24. A task that lists Node20_1 or Node24 next to an old one is not affected, because the agent picks the highest handler it has.

Find the affected pipelines before November 24

Microsoft added an organization setting to try the removal in advance:

  1. Open Organization settings → Pipelines → Settings.
  2. Under Task restrictions, turn on Restrict out of support Node.js versions in pipeline tasks.
  3. Run your pipelines and read the warnings.

With the setting on, a task that declares Node.js 6, 10 or 16 does not get that runner: the agent runs it with Node.js 24, or Node.js 20 if 24 is not available, and logs that the task "may fail or work unexpectedly". If no newer runner is available, the task fails. It applies to Microsoft-hosted and self-hosted agents and to tasks in container jobs; a self-hosted agent needs version 4.278.0 or later. You can turn the setting off again while you fix a task, but only until November 24. The setting does not exist in Azure DevOps Server.

A task that runs a script with Node.js, such as script: node build.js, is not affected: the removal is about the runner a task declares, not about Node.js in your build.

What to do with each kind of task

If a task cannot be updated in time

Microsoft lists ways to keep an old runner, mainly for self-hosted agents: install the runner on the agent yourself, add a NodeTaskRunnerInstaller@0 step to the pipelines that need it, or install the vsts-agent package, which still includes Node.js 6 and 10 (the pipelines-agent package does not, and neither includes Node.js 16). Microsoft's page warns that keeping an end-of-life runtime has security and compatibility risks, so these are for buying time only.

Telling it apart

Build validation in IntelliJ IDEA and Rider

Azure DevOps Pull Requests, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, lists your pull requests in an IDE tool window with their branch policies in plain words, so a build policy that starts failing on November 24 shows up as failed next to the pull request. With Pro, a build that failed or expired has a Run again link that queues it again. The review inbox and the branch policies are free; voting, commenting, completing, running a build policy again and creating pull requests are Pro (US$1 a month, with a 30-day trial).

Get it on JetBrains Marketplace

Azure DevOps and Azure Pipelines are trademarks of Microsoft Corporation; Node.js is a trademark of the OpenJS Foundation; IntelliJ IDEA and Rider are trademarks of JetBrains s.r.o. This page is not affiliated with or endorsed by Microsoft, the OpenJS Foundation or JetBrains.

More: "Cannot connect to the Docker daemon" in container jobs since agent 5.279.0 · build validation: expired builds and why a pull request build did not run · 日本語