Agent pool

What it is

An agent pool is a named collection of agents that execute jobs. In Azure Pipelines you assign a job to a pool with pool:; the job then runs on any available agent in that pool.

Why it exists

Pipelines need compute to execute steps. Instead of pinning each job to one machine, a pool lets Azure Pipelines choose an available agent that meets the job’s requirements. A pool can contain Microsoft-hosted or self-hosted agents, but it is not itself a VM image.

Key ideas

  • Microsoft-hosted agents run in the built-in Azure Pipelines pool. vmImage: ubuntu-latest selects an image; it is not the name of a pool. Each job receives a fresh VM, which is discarded after that job.
  • Self-hosted pools contain agents that you register and maintain. They offer more control, but your organization is responsible for the machines, security, and capacity.
  • In Azure DevOps Services, agent pools are organization-scoped and can be shared with projects. Pool permissions and pipeline permissions control which projects and pipelines may use them.
  • One agent runs one job at a time. More eligible agents can increase concurrent jobs, subject to the available parallel-job capacity.
  • GitHub Actions equivalent: runners (GitHub-hosted or self-hosted) chosen via runs-on:.

Exam notes

  • Syntax: pool: { vmImage: 'ubuntu-latest' } selects a Microsoft-hosted image; pool: mySelfHostedPool selects a named self-hosted pool.
  • Demand/demands: — self-hosted agents can declare capabilities (e.g. dotnet), letting jobs pick capable agents.
  • Hosted pool names/vmImage values are common exam items.

self-hosted-agent · azure-pipelines · jobs-steps

📘 Source: Microsoft Learn — Create and manage agent pools, checked 2026-09-17.