Stop printing credentials to stdout

The omnibus bootstrap echoed the minted admin PAT as its last line and status dumped the state file raw, so a root PAT reached the transcript of whatever was driving the tooling. Both surfaced during a real run against a customer reproduction.

The echoed PAT had no consumer. install_omnibus displays that stdout through | tail -10 and never captures it, the seeders read /var/lib/simulation/root-pat.json directly on the VM, and simulation.sh mints its own separate token in mint_root_pat. So the line is removed rather than filtered, which is the difference between making the leak impossible and making it conditional on every future caller remembering.

status masks root_pat and gitlab_root_password and names the state file instead. Existence is what a status command owes the reader; the value is a deliberate second step. It uses with_entries rather than an |= update, because updating through a missing path creates it and would invent root_pat: null on a base that never mints one.

The bootstrap's root-password line prints the value only when it is the documented default, where it carries no information, and otherwise names the variable rather than repeating the operator's own secret into a log.

Siblings audited for the same shape: bootstrap-gitlab.sh (caproni) and bootstrap-gitlab-dev.sh do not print tokens and both run detached with stdout redirected to a log on the VM. cmd_status was the only place the state file was dumped whole.

just ci passes.

Edited by Andrew Dunn

Merge request reports

Loading