Lesstep
Azure DevOps Services and Server · REST API, Azure CLI, Git tools and pipelines · Tested signed out October 30, 2026

Azure DevOps: "TF200016: The following project does not exist: …. Verify that the name of the project is correct and that the project exists on the specified Azure DevOps Server."

TF200016 means Azure DevOps looked for a project with the name after the colon and found none. Read that name before anything else: in public reports it was often not a project name at all, but DefaultCollection, _git, the repository's name, an e-mail address or a work item number, or the right name with one character changed on the way. Team Foundation Server ends the same message with "…on the specified Team Foundation Server."

The whole answer

As public reports show it (2019 to 2026), here for a list of repositories:

GET https://dev.azure.com/{organization}/{name}/_apis/git/repositories?api-version=7.1

HTTP/1.1 404 Not Found

{"$id": "1", "innerException": null,
 "message": "TF200016: The following project does not exist: {name}. Verify that the name of the project is correct and that the project exists on the specified Azure DevOps Server.",
 "typeName": "Microsoft.TeamFoundation.Core.WebApi.ProjectDoesNotExistWithNameException, Microsoft.TeamFoundation.Core.WebApi",
 "typeKey": "ProjectDoesNotExistWithNameException", …}

The Azure CLI prints the message and adds Operation returned a 404 status code. In a pipeline it comes after the YAML file's path.

Signed out, it is the sign-in page

Tested on October 30, 2026 against a public project on dev.azure.com, with no sign-in. TF200016 never came back: Azure DevOps answers a signed-out caller only about public projects.

Where it comes from, in public reports

  1. An old visualstudio.com clone URL. Visual Studio Team Services handed out clone URLs with DefaultCollection in front of the project, https://{account}.visualstudio.com/DefaultCollection/{project}/_git/{repository}, and for the repository named like its project with no project at all: …/DefaultCollection/_git/{repository} or …/_git/{repository}. Clones made then still carry them. Tools that read the path by position took DefaultCollection for the project (an editor extension's Azure DevOps integration, fixed in 2026 to read the repository's name as the project, and a desktop coding app's Azure DevOps extension, 2026) or, from a clone URL with no project, _git (a dependency-update tool, 2019). DefaultCollection is never the project, and with no project in the URL, the project is the repository's name.
  2. The repository's name in the project's place. An IDE plugin in 2025 and a security scanner on Azure DevOps Server 2020 in 2023 asked for a project named like the repository. That works only for the repository named like its project.
  3. A name changed on the way. An IDE plugin sent a project with ™ in its name as …!22 (2025), and the Azure CLI's project list failed on a project with ë, printed as ã« (2025, still open). A name with a space or a non-ASCII character is encoded once, as UTF-8: a space is %20.
  4. A renamed project. Microsoft's Rename a project says links keep working with the old name, but a client that cached the project names fails with a project-not-found error until it is restarted, and every Git remote has to be updated to the new name. In 2023 a tool kept polling with the old name after a rename and got TF200016.
  5. Something that is not a project. An e-mail address in a call for a user's repositories (2026), a work item number passed as the project (2026), and Microsoft's internal pipeline templates (1ESPipelineTemplates) named in the YAML of a fork of a Microsoft repository, run in another organization (2024).

What to check

  1. Copy the name after the colon from the raw response. If it is DefaultCollection, _git, the repository, or not a name at all, the tool built the URL wrong: look at the git remote or the setting it read.
  2. Compare it with the projects your account can see: GET https://dev.azure.com/{organization}/_apis/projects?api-version=7.1 lists their names and IDs.
  3. If the project was renamed, restart the client and update the remote: git remote set-url origin <the URL under Clone>.
  4. Where a tool takes either, give the project's ID: the REST API takes "Project ID or project name" in the same place.
  5. If the message says the project "does not exist, or you do not have permission to access it", it is VS800075, about a project ID and the account's access, not TF200016.

Azure DevOps pull requests in IntelliJ IDEA and Rider

Azure DevOps Pull Requests, a plugin by Lesstep for JetBrains IDEs 2024.1 or later and Android Studio, reads the organization, project and repository from your git remote and lists the pull requests that wait for your review in an IDE tool window, on Azure DevOps Services and on Azure DevOps Server. It reads the old Visual Studio Team Services URLs too: with DefaultCollection in front of the project, and, from version 1.0.71, with no project at all, as the repository named like its project; from 1.0.72 also dev.azure.com/{organization}/_git/{repository}. The review inbox and diffs are free; voting, commenting, completing and creating are Pro, with a 30-day trial.

Get it on JetBrains Marketplace

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

More: Git remote URLs: every form, tested · VS800075: the account cannot see the project · TF401019: the repository does not exist or you have no permission · TF400813: the user is not authorized · 日本語