Terraform PR reviews
with a decision you can check
Paste terraform show -json. Get ALLOW, REVIEW or BLOCK from a deterministic gate, plus a comment for the PR. The model explains. It cannot change the decision.
Three real gate outcomes
IAM narrowed to Allow. A database destroy that must Block. A policy the plan does not show, so Review. Or paste your own terraform show -json.
Results appear here
Pick an example and click Analyze to see PlainPlan in action
Terraform JSON can carry plaintext secrets. The demo sends the plan to PlainPlan. The gate is computed from the plan and does not use the model; the summary does.
Get your API key
Enter your email and get a key instantly. No account, no password — just email → key.
Plan
Export the plan JSON you already generate in CI.
terraform show -json tfplan > plan.json
Gate
The Action posts one comment and returns ALLOW, REVIEW or BLOCK. Public repos need no API key.
uses: adamnmcc/plainplan-action@v1
Review
Read the findings on the resources that changed. Set fail_on_risk if you want the merge blocked.
fail_on_risk: HIGH
Deterministic gate
ALLOW, REVIEW or BLOCK from versioned rules. The LLM cannot set severity or talk the gate into ALLOW.
REVIEW — policy unknown until apply
BLOCK — stateful database destroy
Resource findings
Each finding names a resource and a rule. Coverage gaps stay visible instead of becoming silent ALLOW.
high sg rule — public ingress expanded
medium iam policy — value unknown
Reviewer checklist
Questions tied to the changes in this plan, not a generic security lecture.
☐ Check the widened CIDR is intentional
☐ Re-plan if a security value is unknown
PR comment + receipt
Markdown on the pull request, plus a receipt that hashes the exact plan that was assessed. Unsigned today; not a proof of apply.
plan_hash: sha256:4f2c…
signed: false
- Public repos: omit the API key. Add
id-token: writeso the Action can use GitHub OIDC. - Private repos: create a key below and store it as
PLAINPLAN_API_KEY. - Optional:
fail_on_riskplusstatuses: writepublishes aplainplancommit status you can require on the branch.
- Install (Linux, macOS, WSL) — needs
curl+jq - Run it in any Terraform dir — no key needed to try (demo mode)
- Set
PLAINPLAN_API_KEYfor the full AI review
Review the plan that is actually going to apply
Works with Terraform and OpenTofu. Drops into GitHub Actions. The gate is deterministic; the summary is explanation. No platform lock-in.