Repository navigation
Conversation
Two credential inputs, and the three policy files go. Same action, same position in the pipeline, same plan.json -- what changes is where the rules come from and who can change them. What we gain is the two engines the runner could not run: the cost ceiling, which needs the plan priced, and the rego policy, which needs an OPA engine. Plus run history on the dashboard and one policy set enforced across every repository rather than per-repo copies that drift. What we give up is being able to check this repository without an account. The credentials are step inputs, not a job-level env: block. At job scope every step in the job can read them, terraform and every third-party action included; as step inputs they reach only the step that needs them.
This was referenced Sep 9, 2026
🛡️ Tirith — 1 warned, 3 passedScanned commit Plan: 0 to add, 0 to change, 0 to destroy. 5 unchanged.
|
This was referenced Oct 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two lines in, three files out. Same action, same position in the pipeline, same
plan.json— whatchanges is where the rules come from.
- uses: StackGuardian/tirith-iac-governance-action@v2.1.1 with: + sg-api-key: ${{ secrets.SG_API_TOKEN }} + sg-org: ${{ vars.SG_ORG }} fail-on-error: trueThere is no mode switch. Supplying credentials is the switch —
policy-pathis ignored from hereon, and the rules are selected server-side by workflow group, so they can change without a commit in
this repository.
The credentials are step inputs rather than a job-level
env:block on purpose. At job scope everystep in the job can read them,
terraformand every third-party action included.What we get that the runner could not do
The check below reports four engines where
chapter 1 reported three:
Plus run history on the dashboard, and one policy set enforced across every repository instead of
per-repo copies that drift.
One thing we lose in the swap
The findings go back to bare comparisons —
`""` is emptyrather than chapter 1's[aws_s3_bucket.artifacts (no-op)] tags.Owner: .... That richer wording comes from the CLI this actioninstalls, and platform findings are produced by StackGuardian's own evaluation step, which pins its own
copy. They get it when that step is released.
The plan report survives the swap either way, because it is rendered on the runner from the plan we
supplied — still a no-op here, so still a summary line and no diff block.
And what we give up entirely
Nobody can check this repository without an account any more. That is a real cost, and it is why
chapter 1 comes first: local mode is the
version you can adopt on a Tuesday afternoon, and this is the version an organization standardises on.
Chapter 2 of 5. Based on #16 · Next: #18 — Add the analytics bucket