Safeguard
Developer Tools•

Why was my package blocked by the internal mirror, and what now?

A developer guide to why an internal mirror or gate blocks an open source package, how to read the message, and the fastest legitimate way forward.

Safeguard Security Team
4 min read

A package is usually blocked for one of five reasons: it is not on the approved list, a version is flagged for a known vulnerability, the licence is not allowed, it is too new to trust yet, or it failed a malware or integrity check. Read the block message first, then file the right request.

Start with the message

A good block message names the rule that fired. If yours only says "forbidden" or returns an HTTP 403, ask the platform team to add the policy name to the response. Developers who guess waste days.

The five common causes and the fix

CauseWhat it meansWhat to do
Not approvedNobody has reviewed this package for your organisationFile an intake request with purpose and version
Vulnerable versionThe version has a known advisoryMove to a fixed version, or request a time limited exception
Licence not allowedThe licence is outside the allowed setPick an alternative, or ask the licence reviewer about your use
Too newThe version was published recently and is held for a cooling periodUse the previous approved version, or wait
Integrity or malware checkThe package failed a hash or reputation checkDo not work around it; report it to security

What to put in an intake request

Reviewers move quickly when the request is complete:

  1. Package name and exact version, plus the registry it comes from.
  2. What you need it for and what you tried first.
  3. Where it will run: a build tool, an internal service or a shipped product.
  4. A link to the repository and the failing build.
  5. A target date, if one genuinely exists.

Skip the pleading. A clear purpose does more than urgency.

Things not to do

Do not edit the registry URL in your project file to reach the public registry. Do not vendor the code into your repository to dodge the gate. Do not paste a download link into a build script. Each of these defeats the control, appears in logs, and can turn a minor request into a policy incident. Vendored code still needs review, which our post on exceptions for vendored or forked code explains.

If the block is blocking production work, there is usually an emergency path. Ask for it by name, and expect a record afterwards.

What reviewers can do to help you

If you own the platform, publish a short status page for requests, show the queue age, and send an alternative suggestion with every rejection. A rejection with an alternative costs the developer an hour; a bare rejection costs a week.

Try it yourself

Click through it at your own pace, or open it full screen.

Look at how a vulnerable version is flagged and what the fixed version options are.

Quick check

Can I ask for a one-off exception to build today?

Usually yes, through the exception or emergency path your organisation defines. Expect it to be time limited, approved by someone other than you, and recorded.

Why is a package blocked when my laptop installs it fine?

Your laptop may reach a public registry directly, while CI and the mirror apply policy. Passing locally does not mean it is approved.

Safeguard policies and gates can return the rule name with every block, and the free scan at gold.safeguard.sh/scan lets you check a project before you file a request.

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.