Repository navigation
gh actions-importer audit gitlab inserts REDACTED between characters in generated artifacts
DescriptionRunning Environment
Steps to Reproduce
Observed (sanitized example)A {
"id": 157,
...instead begins (byte-for-byte, confirmed via hex dump — not a display or i.e. the literal text The same pattern appears in Expected behavior
Additional notes
|
Replies: 4 comments 1 reply
|
that byte pattern is almost certainly empty-string secret redaction, not random corruption and not normal GitHub Actions masking (which uses if anything in the redaction list is that matches your hex dump and why do this first (Windows + Docker Desktop)
Get-ChildItem Env: | Where-Object { $_.Value -eq '' } | Format-Table Name
why only a subset of projects often those projects pull extra empty CI/variable values into the conversion context (or your wrapper injects empties only on some namespaces). if you can say whether the bad projects share empty GitLab CI variables / empty optional importer flags, that narrows it fast. I also found no |
|
Confirmed root cause from the The image contains content.gsub(leaked_secret["Raw"], "REDACTED")There is no guard for an empty "{\"id\":157}".gsub("", "REDACTED")
# REDACTED{"REDACTEDidREDACTED"...}The cloned .NET CLI already skips empty host environment variables before passing them to Docker, and the corruption still reproduced after removing the only empty host variable and rerunning with a fresh output directory. This points to the container image's secret-scanner path (or its dependency), not the CLI launcher. We are proceeding with two tracks:
The temporary image will not be published as an official replacement, and no source code, credentials, private URLs, or private pipeline content are included in this report. |
|
Further update: the proposed guard was applied to a temporary derived image based on The audit produced the expected results, but the same interleaved This means either the launcher did not select the derived image, or another redaction path is responsible. We are not treating the derived image as a production workaround until that is isolated. The confirmed evidence and exact failing image version remain unchanged. |
|
the guard can be right and still never execute. the public
check the id the audit will actually run: docker image inspect ghcr.io/actions-importer/cli:latest --format "{{.Id}} {{.Created}}"that id has to be your derived build, not the official docker tag <derived-image> ghcr.io/actions-importer/cli:latest
gh actions-importer versiondo not run if if the retag makes the audit clean, please mark the earlier comment on empty |
the guard can be right and still never execute. the public
gh-actions-importerlauncher has no image override.DockerService.ExecuteCommandAsyncalways starts one ref:{CONTAINER_REGISTRY}/actions-importer/cli:{tag}.App.cssets the image toactions-importer/cli, the tag tolatest(orpreonly when you pass--prerelease), andCONTAINER_REGISTRYtoghcr.iounless that env var is set. a derived image under any other name or tag is not started.gh actions-importer updaterunsdocker pullon that same ref and replaces a local retag.check the id the audit will actually run:
that id has to be your derived …