Skip to content

Refuse plaintext Pulumi reads in the guarded action - #236

Merged
woksin merged 4 commits into
mainfrom
pulumi-guarded-admission
Nov 12, 2026
Merged

woksin merged 4 commits into
mainfrom
pulumi-guarded-admission

Conversation

@woksin

@woksin woksin commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

Changed

  • The Pulumi guarded action now refuses, before running Pulumi, commands whose output is plaintext configuration or environment values: config get, env/esc open, get and run, and --show-secrets anywhere in the arguments. All other commands and their options pass through unchanged. A refused command fails the step with a generic message that echoes no values.

@woksin woksin added the patch label Nov 12, 2026
@woksin woksin self-assigned this Nov 12, 2026
@woksin

woksin commented Nov 12, 2026

Copy link
Copy Markdown
Contributor Author

Notes for reviewers

  • Admission is a token scan rather than an option parser: Pulumi identifies commands only by literal tokens (no prefix matching; env and esc are aliases), so these reads cannot run without the refused tokens. Known trade-off: an argument value that is literally get, open or run after config/env/esc is refused too; no existing caller passes such values.
  • Existing caller shapes (refresh with import pairs, up, destroy --yes --skip-preview --non-interactive) keep working; covered by specs.
  • Local checks: pulumi-guarded specs, shellcheck, repository-wide actionlint, workflow-templates specs and git diff --check pass. workflow-lint specs need zizmor, which is not installed locally; CI covers it.
  • Reviewed in three rounds (last round on the token scan: no blocking findings). Label patch: no previously working non-secret invocation is refused.

@woksin
woksin merged commit 5e29bef into main Nov 12, 2026
8 checks passed
@woksin
woksin deleted the pulumi-guarded-admission branch November 12, 2026 16:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant