Relationships
#2759 Docs: sensitive values read through expressions are delivered like vault.get (swamp-club#2171)
Opened by stack72 · 9/30/2026
swamp-club#2171 changes how sensitive fields read through CEL (data.latest, steps..outputs, model..resource) reach commands and disk. The manual needs updating in two places.
content/manual/reference/vaults.md, section Environment Variable Mounting: it describes env-var delivery for vault.get() only. Sensitive data fields read through expressions are now delivered the same way in command/shell steps. Placement is per occurrence: unquoted as a quoted reference, double quotes or an unquoted-delimiter heredoc as a bare reference, single quotes as a quote break-out, ANSI-C quotes as a break-out that reopens in ANSI-C form. A quoted-delimiter heredoc or a PowerShell single-quoted string keeps the value in the command line and warns. An unquoted value no longer word-splits.
content/manual/explanation/the-data-layer.md, redaction paragraph: it says downstream models read sensitive fields through data.latest() while redaction keeps secrets out of terminals and logs. Add that such values never reach a spawned command line or a file swamp writes in plaintext: caches, run records and auto-created definitions store the vault reference; reports and evaluate output show ***; tags, labels, forEach step names and data-name suffixes use a sensitive-. placeholder; and --last-evaluated refuses caches written before this change that read data or step outputs.
Closed
No activity in this phase yet.
stack72 commented 10/1/2026, 6:02:17 AM
Documented in swamp-club PR #1274 (https://github.com/swamp-club/swamp-club/pull/1274, merged 8cb2788). reference/vaults.md: Environment Variable Mounting now covers sensitive fields read through expressions, with a placement table for each quoting context, the quoted-heredoc warning, PowerShell, and a Limits section. A new 'Values Read Through Expressions' section lists where each value lands and covers the --last-evaluated refusal. explanation/the-data-layer.md explains why. Placement was verified against real /bin/sh argv.
Sign in to post a ripple.