Environmental Info:
root@production:~# uname -a
Linux production 6.12.0-160000.35-default #1 SMP PREEMPT_DYNAMIC Wed Jun 10 13:35:47 UTC 2026 (c70d539) x86_64 x86_64 x86_64 GNU/Linux
Hauler Version:
root@production:~# hauler version
__ __ ___ __ __ __ _______ .______
| | | | / \ | | | | | | | ____|| _ \
| |__| | / ^ \ | | | | | | | |__ | |_) |
| __ | / /_\ \ | | | | | | | __| | /
| | | | / _____ \ | `--' | | `----.| |____ | |\ \----.
|__| |__| /__/ \__\ \______/ |_______||_______|| _| `._____|
hauler: Airgap Swiss Army Knife
GitVersion: devel
GitCommit: unknown
GitTreeState: unknown
BuildDate: unknown
GoVersion: go1.26.4
Compiler: gc
Platform: linux/amd64
root@production:~# zypper --no-refresh info hauler
Loading repository data...
Reading installed packages...
Information for package hauler:
-------------------------------
Repository : repo-oss (16.0)
Name : hauler
Version : 2.0.1-bp160.1.1
Arch : x86_64
Vendor : openSUSE
Installed Size : 154.8 MiB
Installed : Yes
Status : up-to-date
Source package : hauler-2.0.1-bp160.1.1.src
Upstream URL : https://github.com/hauler-dev/hauler
Summary : Airgap Swiss Army Knife
Describe the Bug:
When using --rewrite to strip the Docker Hub library/ prefix from an official image, e.g.
hauler store add image busybox --rewrite busybox
Hauler logs the rewrite correctly but the image is stored and later copied under the original library/ path. The rewrite appears as a no-op.
Steps to Reproduce:
root@production:~# hauler store add image busybox --rewrite busybox
2026-07-20 15:06:43 INF adding image [busybox] to the store
2026-07-20 15:06:53 INF rewriting [index.docker.io/library/busybox:latest] to [index.docker.io/busybox:latest]
2026-07-20 15:06:53 INF successfully added image [index.docker.io/library/busybox:latest]
root@production:~# hauler store info
┌────────────────────────────────────────┬───────┬─────────────────┬───────────┬──────────┐
│ REFERENCE │ TYPE │ PLATFORM │ # LAYERS │ SIZE │
├────────────────────────────────────────┼───────┼─────────────────┼───────────┼──────────┤
│ index.docker.io/library/busybox:latest │ image │ linux/386 │ 1 │ 2.3 MB │
└────────────────────────────────────────┴───────┴─────────────────┴───────────┴──────────┘
root@production:~# hauler store copy oci://myregistry.io
# image is pushed to myregistry.io/library/busybox:latest
# expected: myregistry.io/busybox:latest
Expected Behavior:
store info shows index.docker.io/busybox:latest (no library/)
store copy pushes to myregistry.io/busybox:latest (no library/)
Actual Behavior:
The library/ prefix is present on both operations.
Additional Context:
Environmental Info:
Hauler Version:
Describe the Bug:
When using
--rewriteto strip the Docker Hublibrary/prefix from an official image, e.g.Hauler logs the rewrite correctly but the image is stored and later copied under the original
library/path. The rewrite appears as a no-op.Steps to Reproduce:
Expected Behavior:
store infoshowsindex.docker.io/busybox:latest(nolibrary/)store copypushes tomyregistry.io/busybox:latest(nolibrary/)Actual Behavior:
The
library/prefix is present on both operations.Additional Context: