Safeguard
Developer Tools•

Registry rate limit myths: five things CI teams get wrong

Five common beliefs about registry rate limits in CI, checked against Docker and HTTP documentation: what counts as a pull, who is limited, how to retry.

Safeguard Security Team
4 min read

Five beliefs cause most rate limit surprises in CI: that limits are per pipeline, that signing in removes them, that any pull counts the same, that fast retries get through, and that a bigger fleet needs more registry access. Each is wrong or incomplete, and the vendor documentation shows why.

Myth 1: "The limit is per pipeline"

Fact. Docker's documentation counts unauthenticated pulls per IPv4 address or IPv6 /64 subnet. MDN adds that rate limiting restrictions may be server wide or per resource. Neither is per pipeline. If many pipelines leave through one gateway, they share a bucket. Detail in why CI jobs hit pull rate limits on a shared runner IP.

Myth 2: "If we sign in, there is no limit"

Fact. Docker's table lists a pull rate limit per 6 hours that depends on account type. Unauthenticated users get 100 per address. Authenticated personal accounts get 200. Pro, Team and Business accounts are listed as unlimited, subject to fair use. So signing in raises the allowance, and what you get depends on the plan. Read the table for your plan, and re-read it when you plan fleet growth, because limits change. See Docker Hub rate limit policy changes.

Myth 3: "Every docker pull costs one pull"

Fact. Docker's definition says a pull includes both a version check and any download that results. Version checks, which verify that an image or tag exists without downloading it, do not count towards usage. A normal image is one pull for a single manifest, but a multi-architecture image counts as one pull per architecture. A job that pulls the same image for two architectures uses two.

Myth 4: "Retry fast and one will get through"

Fact. A 429 means too many requests in a given time. MDN says a Retry-After header may be included to say how long to wait. Retrying immediately adds to the count that caused the limit. A fleet doing it together creates the pattern in retry storms. Wait at least the Retry-After value if one is sent, add jitter, and cap attempts. MDN also notes that client support for the header is inconsistent, so you may have to read it in your own script.

Myth 5: "A bigger fleet means we should request a higher limit"

Fact. More runners usually means more repeat pulls of the same images. The cheaper fix is to stop pulling the same thing many times:

A higher limit with the same waste only moves the problem later.

A one page summary

BeliefReality
Limit is per pipelinePer address or per account, shared by your fleet
Signing in removes itRaises it, depending on plan
Every pull counts onceVersion checks do not count, multi-arch counts per architecture
Retry quicklyWait, honour Retry-After, add jitter
Ask for moreCache and copy first

What to do this week

  1. Find your 429s and group them by image and by hour.
  2. Check which account, if any, your runners authenticate as.
  3. List the base images your pipelines pull and how often.
  4. Decide whether a pull-through cache or a copy into your own registry fits better.

Where Safeguard fits

Once your base images are in one place, Safeguard's container image scanning and SBOM show what each contains and which findings are reachable. You can start with a free scan at gold.safeguard.sh/scan.

Quick check

Does a pull of a multi-architecture image count once?

Docker's documentation says it counts as one pull for each architecture, so pulling several architectures uses several pulls.

What should a script do on a 429?

Wait at least the Retry-After value if present, add random jitter, and limit the number of attempts. Do not retry immediately.

Sources

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.