Lesstep
Azure DevOps Services and Server · REST API, pipelines and review tools · Tested October 24, 2026

Azure DevOps: "TF401174: The item '…' could not be found in the repository '…' at the version specified by '…'"

TF401174 means the repository has no file or folder at that path in that version. The version itself was found: the message says which commit it resolved to. In review tools and diff scripts it is most often a file that the pull request adds, read at the target commit, where it does not exist yet. In pipelines it is a file read from a branch, or from a repository, that does not have it.

The whole answer

Tested on October 24, 2026 on dev.azure.com, against a public repository with no sign-in, by reading a file that a completed pull request added, at the pull request's target commit:

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repository}/items
    ?path=/es-metadata.yml&versionDescriptor.version=2adc745e…&versionDescriptor.versionType=commit&api-version=7.1

HTTP/1.1 404 Not Found

{"$id": "1", "innerException": null,
 "message": "TF401174: The item 'es-metadata.yml' could not be found in the repository 'dotnet-public-wiki'
             at the version specified by '<Commit: 2adc745e… >' (resolved to commit '2adc745e…')",
 "typeName": "Microsoft.TeamFoundation.Git.Server.GitItemNotFoundException, Microsoft.TeamFoundation.Git.Server",
 "typeKey": "GitItemNotFoundException", "errorCode": 0, "eventId": 3000}

Neighbours: the version was not found

Where it comes from, in public reports

  1. Diffs of pull requests: a file that the pull request adds has no earlier version, so reading it at the target or base commit gets TF401174. Review bots quoted it in 2023 and 2024, and an AsciiDoc extension for Azure DevOps started to ignore it for added files in September 2026. A renamed file has the same problem under its new path: read the earlier version from its old path. In the pull request's iteration changes, changeType says add, delete or rename, and a rename also names the old path.
  2. Pipelines reading a file from a branch: in July 2026 a .NET repository's pipelines reported it for .config/1espt/PipelineBranchControl.yml on refs/heads/main, because the pull request that would add the file had not been completed. Templates and configuration read from another repository or branch get it the same way.
  3. A path that is not a path in the repository: an absolute path on the build machine, or a URL. In a 2022 report the item was C:/Program Files/Git where / was meant; that is what Git Bash on Windows makes of an argument / when it passes it to a Windows program, so check what path reached the server.

What to check

  1. Read the version in the message: which branch or commit it resolved to. Is the file there? items?scopePath=/&recursionLevel=OneLevel with the same version lists what is.
  2. In a pull request, is the file added, deleted or renamed? Then the older or newer side does not have it under that path.
  3. Does the path have a prefix it should not, such as a drive letter, the repository name or a URL?
  4. If the message is TF401175 or TF401029 instead, the branch or commit is the problem, not the file.

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. Its diffs read the earlier version only for files that existed there, take a renamed file from its old path, and show an empty side for an added or deleted file. 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: TF401398: the source or the target branch is missing · TF401019: the repository does not exist or you have no permission · TF401181: completed or abandoned meanwhile · TF401175: no branch by that name · 日本語