Delete and recover packages

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Artifacts securely stores various package types within your feed, whether you've published them directly or saved them from upstream sources. As older package versions become less relevant, you may consider removing them through manual deletion or by using retention policies. In this article, you'll learn how to:

  • Delete packages from your feed.
  • Set up retention policies.
  • Manually delete packages permanently.
  • Recover recently deleted packages.

Note

To delete/recover packages or set up retention policies, you must be a Feed Owner.

Delete packages

In Azure Artifacts, packages are immutable. Once you publish a package to your feed, its version number is reserved permanently. Even if you delete it from your feed, you cannot publish a new package with the same version number.

Note

You must be a Feed Publisher (Contributor) to unlist a package and a Feed Owner to delete it.

There are two available choices for removing a NuGet package from your feed, Unlist and Delete. Unlisting a package version hides it from the search results in Azure Artifacts feeds and on NuGet.org, while deleting a package version sends it to the recycle bin and makes it unavailable for installation.

  1. Sign in to your Azure DevOps organization, and then navigate to your project.

  2. Select Artifacts, and then select your feed from the dropdown menu.

  3. Select the package you wish to delete, and then select Unlist or Delete.

    A screenshot showing how to delete or unlist a NuGet package.

Unlist packages using NuGet.exe

  1. Sign in to your Azure DevOps organization, and then navigate to your project.

  2. Select Artifacts, and then select your feed from the dropdown menu.

  3. Select Connect to feed > NuGet.exe, and then find and copy your Package Source URL. It should resemble this format: "https://pkgs.dev.azure.com/OrganizationName/ProjectName/_packaging/FeedName/nuget/v3/index.json".

  4. Run the following command to unlist your NuGet package:

    nuget.exe delete <PACKAGE_NAME> <PACKAGE_VERSION> -Source <PACKAGE_SOURCE_URL> -ApiKey <KEY>
    

Note

Azure DevOps and Visual Studio Team Foundation Server interpret the nuget.exe delete command as an unlisting operation. To delete a package, you must use the REST API or delete it manually from the web interface.

Delete packages permanently

Packages placed in the Recycle Bin are permanently deleted after 30 days, but they continue to contribute to your storage costs during that time. If you wish to remove them before this period, you can manually delete them from the Recycle Bin by following these steps:

  1. Sign in to your Azure DevOps organization, and then navigate to your project.

  2. Select Artifacts, and then select your feed from the dropdown menu.

  3. Select Recycle Bin from the upper-right corner.

    A screenshot showing how to access the recycle bin in Azure Artifacts.

  4. Select the package you want to permanently delete, and then select Permanently Delete.

    A screenshot showing how to permanently delete a package in Azure Artifacts.

  5. Select Permanently Delete once more to confirm your decision. Your package will be deleted permanently.

    A screenshot showing a confirmation message before you delete a package permanently.

Delete packages automatically with retention policies

The number of versions for each package hosted in your feed can grow quickly. To free up storage space, you can set up retention policies to automatically delete old packages.

If you want to retain a package indefinitely, you can promote it to a view. Packages promoted to a view are exempt from retention policies and will not be subject to deletion. To configure retention policies for your feed, please follow the steps below:

Note

Azure Artifacts does not support package demotion.

  1. Sign in to your Azure DevOps organization, and then navigate to your project.

  2. Select Artifacts, and then select the gear icon gear icon from the upper-right corner to access your feed's settings.

  3. Select Feed details, and then check the Enable package retention checkbox. Provide values for both the Maximum number of versions per package and Days to keep recently downloaded packages.

    • Maximum number of versions per package: The number of versions for each package you wish to retain.

    • Days to keep recently downloaded packages: Packages will only be deleted if they haven't been downloaded for the specified number of days specified here.

  4. Select Save when you're done.

    A screenshot showing how to set up retention policies for your feed.

Note

When you enable retention policies, a version of a package will be deleted when both of the following conditions are met:

  • The number of published versions reaches the Maximum number of versions per package limit.
  • A version of that package has not been downloaded for the period specified in Days to keep recently downloaded packages.

Restore deleted packages

Deleted packages remain in the Recycle Bin for 30 days. After this period, they'll be permanently deleted. You must be a feed Owner to restore deleted packages.

  1. Sign in to your Azure DevOps organization, and then navigate to your project.

  2. Select Artifacts, and then select Recycle Bin.

  3. Select your package, and then select Restore.

    A screenshot showing how to restore deleted packages.

  4. Select Restore once more to confirm your decision.

Q&A

Q: What is the difference between Deprecate, Unlist, Yank, and Delete a package version?

A: Deprecate applies to npm packages, Yank applies to Cargo packages while Unlist applies to NuGet packages. You can also Delete any of the package types (npm, Maven, Python, Cargo, and Universal Packages):

  • Deprecate (npm): When you deprecate a package version, a warning message is added to the package's metadata. Azure Artifacts and most npm clients will display this warning message whenever the package is viewed or installed.

  • Unlist (NuGet): Unlisting a package version hides it from the search results in Azure Artifacts feeds and on NuGet.org.

  • Yank (Cargo): Yanking a package version marks it as obsolete or deprecated, discouraging its use, but it doesn't delete the package.

  • Delete: Deleting a package version makes it unavailable to install. Deleted packages can be restored from the Recycle Bin within 30 days of deletion. After this period, the packages will be permanently deleted.

Q: What happens with old or existing packages when we enable retention policies?

A: Old or existing packages will be soft-deleted and moved to the Recycle Bin. The deletion job runs once a day, but there might be an initial delay after the policy is turned on for the first time because of an influx of packages.

Packages remain in the Recycle Bin for 30 days before they're permanently deleted. To remove the packages from your billable storage, you can choose to delete them manually by using the UI or the REST API before the 30 days are up.

Q: How long does it take for the billed storage amount to update after deleting Artifacts?

A: Typically, storage consumption should be updated within 24 hours, although in certain cases it might take up to 48 hours for the changes to be reflected. The Artifacts usage on the billing page of your organization is updated once a day. However, The Artifact Storage page is updated more frequently, which may lead to a minor discrepancy between the information displayed on the two pages.