Safeguard
Security Guides•

How do you retire an approved open source package safely?

Retiring an approved package takes a deprecation state, a usage report, a migration path and a hard stop date. Follow these steps to avoid outages.

Safeguard Security Team
3 min read

To retire an approved package, mark it deprecated, block new use, find every current user, offer a replacement and migration help, set a stop date, then remove it from the registry and list. Skipping the usage report is how retirements cause outages.

Reasons to retire

A package may be abandoned, relicensed, replaced by a better supported option, or found to carry a risk you cannot fix. Whatever the reason, the process is the same, and the urgency varies.

The steps

  1. Decide and record the reason, the date and the owner of the retirement.
  2. Set the status to deprecated in the approved list. New projects can no longer add it, and the intake form points to the replacement.
  3. Produce a usage report from SBOMs, lockfiles and proxy logs: which products and versions use it, and which teams own them.
  4. Name a replacement or an approved approach. If there is none, say so, and decide whether the work is a rewrite.
  5. Notify owners with the stop date and what support they get. Give a realistic window and keep it.
  6. Track progress weekly and escalate stragglers to their leaders, not to individual developers.
  7. At the stop date, block the package at the proxy for new downloads, except for listed exceptions.
  8. After the last user moves, remove it from the list and keep the record.

Urgency levels

SituationWindow
Confirmed malicious or compromisedImmediate block, treat as an incident
Serious unfixed vulnerability, actively exploitedDays, with compensating controls
Abandoned, no known exploitMonths, planned in normal work
Replaced by a preferred optionA release or two, tracked in the roadmap

Define these categories in advance so you do not argue about urgency during the event.

Common mistakes

  • Blocking the proxy before the usage report, which breaks builds without warning.
  • Forgetting transitive users. A package you retire may still arrive through another dependency.
  • Not handling cached copies. Remove it from caches and mirrors when the stop date passes, or it stays available.
  • Leaving old container images that include it. Rebuild and rotate images on a schedule.

Evidence

Keep the decision, notice, usage report and completion date together. If an auditor or customer asks how you manage end of life components, this is a complete answer.

Try it yourself

Click through it at your own pace, or open it full screen. Look at how findings are tracked from detection to closure, which is the same loop a retirement needs.

Quick check

Can we just delete it from the registry?

Not before you know who uses it. Run a usage report first, then block new downloads at the stop date.

What about transitive users?

Check the full resolved tree in SBOMs, not only manifests, and engage the owners of the parent packages.

Safeguard scans dependencies and builds SBOMs, runs reachability analysis, and applies policies and gates on pull requests, so the rules in this post can be checked automatically. Autonomous fix PRs are off by default, with every category on Manual. You can run a free scan at gold.safeguard.sh/scan.

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.