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.
- A name that is not a project (
no-such-project,DefaultCollection,_git): 302 to the sign-in page. A tool that reads public projects without a token and is sent to sign in may be asking for a project that is not there, not one that needs a token. - The project's name in capitals read the project, and so did the name with a trailing space (
public%20). Case and a trailing space are not what TF200016 is about. - An all-zero project ID: 400,
The guid specified for parameter projectId must not be Guid.Empty. - On
{organization}.visualstudio.com, aDefaultCollectionsegment in front of the project is accepted:…visualstudio.com/DefaultCollection/{project}/_apis/…answered 200, like…visualstudio.com/{project}/_apis/…. Ondev.azure.comthe same path got an HTML "404 - Page not found".DefaultCollectionbecomes a project name only when a tool takes it for one. git ls-remoteworked signed out withdev.azure.com/{organization}/{project}/_git/{repository},{organization}.visualstudio.com/{project}/_git/{repository}and{organization}.visualstudio.com/DefaultCollection/{project}/_git/{repository}, also in capitals. With no project in the URL ({organization}.visualstudio.com/DefaultCollection/_git/{repository}ordev.azure.com/{organization}/_git/{repository}), git asked for a user name: such a URL means the repository named like its project, and this repository's project has another name. On a public repository that is named like its project, all three forms without a project ({organization}.visualstudio.com/_git/{repository},{organization}.visualstudio.com/DefaultCollection/_git/{repository}anddev.azure.com/{organization}/_git/{repository}) read the same repository as the full URL.
Where it comes from, in public reports
- An old visualstudio.com clone URL. Visual Studio Team Services handed out clone URLs with
DefaultCollectionin 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 tookDefaultCollectionfor 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).DefaultCollectionis never the project, and with no project in the URL, the project is the repository's name. - 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.
- 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. - 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.
- 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
- 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. - Compare it with the projects your account can see:
GET https://dev.azure.com/{organization}/_apis/projects?api-version=7.1lists their names and IDs. - If the project was renamed, restart the client and update the remote:
git remote set-url origin <the URL under Clone>. - Where a tool takes either, give the project's ID: the REST API takes "Project ID or project name" in the same place.
- 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 · 日本語