Skip to main content
← Back to list
01Issue
BugOpenSwamp CLIPublic
AssigneesNone

Relationships

#2257 -q does not suppress the update, auth-nudge and autoupdate banners

Opened by skunk-ape · 9/17/2026

Problem

-q / --quiet is documented as "Suppress non-essential output", and swamp version -q prints nothing — so the flag works generally. Four side-channel banners ignore it, because they are emitted with a raw console.error rather than through ctx.logger. -q lowers the LogTape level to error, which silences the logger but has no reach over a direct console.error.

  • src/presentation/renderers/update_notification.ts:49-50 — "A new version of swamp is available" / "Your swamp version is N days old"
  • src/presentation/renderers/auth_nudge.ts:27-28, 54-67 — the auth warning and first-run nudge
  • src/cli/mod.ts:~1863 — "swamp was auto-updated from X → Y"
  • src/cli/mod.ts:~1884 — "Background autoupdate is failing: … is not writable"

All four are on stderr, so unlike swamp-club#2254 they do not corrupt a piped stdout — this is a flag-contract bug, not a pipe-corruption bug.

Repro

swamp <any command> -q   # banners still appear on stderr

Suggested fix

The same shape as the fix for #2254: these renderers are built without ever seeing the verbosity that createContext already computes. Thread ctx.verbosity through and skip when it is "quiet", following the pattern in src/presentation/renderers/datastore_namespace_list.ts. The two banners inlined in mod.ts need the pre-parsed isQuietFromArgs(args) helper in src/cli/context.ts, since they fire outside a command context.

Context

Found while triaging swamp-club#2254 (swamp invite link -v puts log output on stdout). The payout note in the invite-link renderer has the identical defect and is fixed there; these four are the same class of bug on other surfaces and were kept out of that diff to hold its blast radius down.

02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED

Open

9/17/2026, 9:21:03 PM

No activity in this phase yet.

03Sludge Pulse

Sign in to post a ripple.