Safeguard
Supply Chain•

How do you give disconnected customers images with digests intact?

skopeo copy can write images to a directory or another registry and keep digests with preserve-digests and all. Steps and traps for on-prem vendors.

Safeguard Security Team
3 min read

Copy each image, including every platform in its manifest list, to a transferable directory or a customer registry using skopeo copy with the all and preserve-digests options. The digests then match what you published, so signatures and pinned references still work. Check the result with the digest file option.

Definitions

skopeo copy moves images between locations called transports, such as a registry, a local directory or an archive. A manifest list points to one image per platform. A digest is the content hash of a manifest, so if conversion changes the manifest, the digest changes and anything pinned or signed against it no longer matches.

The options that matter

From the skopeo copy manual:

OptionEffect
allIf the source is a manifest list, copy every image in the list and the list itself, not only the one matching the current platform
preserve-digestsKeep the original digests and fail if they cannot be kept. It does not change what is copied, so it is often paired with all
digestfileWrite the digest of the resulting image after the copy
sign-byAdd a simple signing signature using a key ID
src-creds and dest-credsCredentials for the source or destination registry
strip-removed-platformsChanges digests, invalidates the manifest list signature, and requires removing signatures

The directory transport copies layers into a local folder, which is the natural choice for media you carry across a boundary.

Steps for a vendor bundle

  1. List the images and exact digests in your release, from your build output.
  2. For each, run skopeo copy with all and preserve-digests, to a directory transport path, and record the digest file.
  3. Compare the digest file with your published list. Any difference means a conversion happened.
  4. Package the folders with a manifest of names and digests and a checksum file, signed with your release key.
  5. Document how the customer loads them into their registry with the same options and checks the digests again.

Why not just copy one platform

Without all, only the image for the current platform is copied. If a customer runs a different architecture from your build machine, they get the wrong image or none. And the list digest you published will not exist in their registry, so a chart that pins it fails.

Traps

Do not strip platforms to save space unless you accept new digests and say so. Do not rely on a tag. Reference by digest in the chart for offline installs. See Helm install by digest from an OCI registry and air-gapped software updates.

Try it yourself

Click through it at your own pace, or open it full screen. Scan the bundle contents before you ship them.

If you want a second look at what you ship, Safeguard can generate and scan an SBOM and run dependency scanning with reachability analysis, and you can try the free scan.

Quick check

Why did my digest change after copying?

Likely a conversion or platform stripping. Use all with preserve-digests so the copy fails instead of silently changing.

How do I confirm what was produced?

Use the digest file option to write the resulting digest and compare it with the published one.

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.