one deterministic gate for infra + dependencies

Catch the apply that destroys your cloud — and the dependency that poisons it.

bumper reads your Terraform plans andyour lockfiles, and blocks the two changes you can't take back: an apply that would expose or destroy your AWS, GCP, or Azure account, and an install that pulls in a known-vulnerable or malicious package — before either one runs. A single static Go binary. The verdict is 100% deterministic.

$curl -fsSL https://get.bumper.sh | sh
single static binary no API key, no account stands alone if AI is absent
gate one · the terraform apply

Catch the apply before it destroys production.

A real bumper --explain plan.json run on a plan that opens and destroys production. Every finding gets a plain-English line and a one-line fix.

bumper --explain plan.json
$ terraform show -json plan.tfplan > plan.json$ bumper --explain plan.json bumper v1.0.0 scanning plan.json 112 rules ai: claude CRITICAL aws_db_instance.prod will be DESTROYED rule AWS_RDS_DESTROY_NO_FINAL_SNAPSHOT plan delete → (no replacement) why This apply deletes your production database. skip_final_snapshot is true, so there is no backup — the data is gone the moment apply runs. fix Set skip_final_snapshot = false and a final_snapshot_identifier. CRITICAL aws_security_group.api opens 5432/tcp to 0.0.0.0/0 rule AWS_SG_PUBLIC_INGRESS plan create → ingress tcp/5432 from 0.0.0.0/0 why PostgreSQL would be reachable from the entire internet. Any host could attempt to connect directly to your database. fix Restrict cidr_blocks to your VPC CIDR or a bastion SG. HIGH google_storage_bucket.assets encryption config removed rule GCP_STORAGE_ENCRYPTION_REMOVED plan update → default_kms_key_name removed why Objects written after this apply fall back to Google-managed keys instead of your CMEK. fix Re-add encryption.default_kms_key_name to the bucket.  ──────────────────────────────────────────────── 3 findings 2 critical 1 high 0 medium verdict BLOCK — destructive & critical changes present $ echo $?1
exit 1 — safe to block a merge ondeterministic — same plan, same verdict, every time
gate two · the dependency install

Catch the package before it lands in your tree.

A real bumper deps run over a lockfile — known CVEs and known-malicious packages, checked against the hosted Advisor. Only package coordinates leave your machine, never your code.

bumper deps package-lock.json
$ bumper deps package-lock.json bumper v1.1.0 scanning package-lock.json 312 packages advisor: live MALICIOUS flatmap-stream@0.1.1 (npm) adv MAL-2025-20690 why Known-malicious package — runs hostile code at install time. Bad at every version; dangerous the moment it's pulled in. fix Remove it. This is a supply-chain attack, not a stale CVE. CRITICAL lodash@4.17.4 (npm) cve CVE-2019-10744 Prototype pollution fix Upgrade to 4.17.12. CRITICAL minimist@1.2.0 (npm) cve CVE-2021-44906 Prototype pollution fix Upgrade to 1.2.6.  ──────────────────────────────────────────────── 4 vulnerable 1 malicious only coordinates left your machine verdict BLOCK — a known-malicious package is present $ echo $?1
malware — a hard block, before it ever runsCVEs — flagged with the exact fixed version
the agent guardrail

Your AI agent can no longer silently
destroy your cloud — or install malware.

Run bumper initinside Claude Code, Augment, or Gemini CLI and it installs tool-layer hooks. The agent can't run an unverified terraform apply, and can't install a known-malicious package — both are blocked before they run, not flagged after. It also installs agent skillsSKILL.md playbooks that teach the agent to reach for the gate, the dependency scan, and the Advisor on its own.

agent session · pre-apply hook
claude-code · session 0xC4F1terraform apply -auto-approve  PreToolUse hook → bumper guard bumper 2 CRITICAL findings — apply BLOCKEDaws_db_instance.prod destroy without final snapshotaws_security_group.api 5432/tcp exposed to 0.0.0.0/0  The agent cannot run terraform apply on its own. Critical findings require an explicit human decision.  agent → you "I tried to apply, but bumper stopped me. 2 critical findings, including destroying the prod database. How do you want to proceed?"  ⏸ apply paused — awaiting your decision
acknowledgeignorefix & re-run

Above, the Terraform apply gate in action. The dependency gate works the same way at the tool layer: a known-malicious install is a hard block before it runs, while a vulnerable package is surfaced for the agent to upgrade. Critical and destructive findings always wait for an explicit human decision; lower severities stay overridable, so the gate stays useful instead of becoming noise. bumper gates; it doesn't hold you hostage.

Hooks are the push; the skills are the pull. Installed as the open, cross-agent SKILL.md standard, they give the agent the playbook for each surface — so it scans the plan before applying, triages a flagged dependency, and looks a CVE up in the Advisor without being told.

Install the skills — pick a channel
any agent
$npx skills add gnana997/bumper
with bumper
$bumper init --skills
Claude marketplace
/plugin marketplace add gnana997/bumper
Three playbooks: gating-terraform-plans · triaging-vulnerable-dependencies · querying-the-bumper-advisor. The same files feed every channel.
why it's different

Three things most tools miss.

01

It reads the transition, not the result.

Most IaC scanners check the config you'd end up with. bumper reads the plan's create / delete / replacemoves — so it catches “this apply will destroy your production database,” not just “this bucket is misconfigured.”

02

It blocks malice, not just bugs.

Dependency scanning flags known-vulnerable versions and known-malicious packages — typosquats and backdoors that run at install time. The supply-chain attack gets denied before it runs, not reported after the damage.

03

It enforces — and stands alone.

verify binds a passing scan to the plan by sha256 and guardblocks an unverified apply; a malicious install is denied in the agent loop. And the verdict never depends on a model — it's 100% deterministic, so you can safely block a merge on it.

the hosted advisor

A knowledge MCP for rules, CVEs and malware.

bumper's local scanner is offline and deterministic — that never changes. The Advisor is the optional hosted half: a single Model Context Protocol server (and matching REST API) your AI tools can query for IaC remediation guidance across AWS, GCP and Azure, CVE lookups, and known-malware checks.

Everything bumper knows, hosted free

Point your editor or agent at the Advisor and it reaches the whole corpus — 2,700+ IaC rules & advisories(Trivy, Checkov, KICS, Prowler + bumper's enforced set), 178k+ CVEs across 3.4M affected versions, and 226k+ known-malicious packages. Hosted on our box, free to use, no account.

A lookup key is all that leaves

The only thing that ever leaves your machine is a lookup key — a search phrase, or for the dependency guardrail, package coordinates (ecosystem · name · version). Your plan, state, lockfile and code never do. scan, verify, guard and deps all parse locally; only the lookup is remote.

Always current

The mirror refreshes server-side every day from OSV, Trivy, Checkov, KICS and Prowler — so CVE, malware and rule guidance keep improving without you shipping a new binary or pulling a multi-gigabyte database.

Hosted by default — or run your own

Nothing to install: point your client at the hosted Advisor over MCP and REST — search_rules for IaC, lookup_cve and check_malware for dependencies, plus semantic search across all three; bumper init wires it in one line. The whole service is open source (Apache-2.0), so you can self-host it and keep even package coordinates in-house.

Open core. The binary and the Advisor are both Apache-2.0. The binary runs without any of this; the hosted Advisor is a free convenience you can also run yourself.
~/.config/agent/mcp.json
# one line wires the hosted Advisor into any MCP client
{
  "mcpServers": {
    "bumper-advisor": {
      "type": "http",
      "url": "https://advisor.bumper.sh/mcp"
    }
  }
}

# or let bumper write it for you:
$ bumper init --advisor
the rule set
112
enforced rules
hand-written, versioned, and each one mapped to a concrete fix.
20critical
57high
32medium
3low
network exposureIAM & resource policiesTLS in transitencryption at restEC2 / ECR / EKS hardeningGKE & Cloud SQLAzure storage & SQLdestruction & recovery
AWS · GCP · Azure today. The engine is provider-agnostic — every rule is the same declarative CEL across all three clouds.
continuous integration

Drop it into the pull request.

Two composite Actions, one signed binary — gate your Terraform plans and your lockfiles on every PR, reported where developers already look.

Get it on the GitHub Marketplace →

SARIF to the Security tab

Both gates upload SARIF, so plan findings andvulnerable/malicious packages appear inline in GitHub's Security tab.

One sticky PR comment

A single comment, updated in place on every push. No thread spam, no walls of duplicate output.

Fails on high+ — malware always

Exits non-zero on a high or critical finding so the check blocks the merge — and a known-malicious package always fails the job, no matter the threshold.

.github/workflows/bumper.yml
# one gate for infra + dependencies, on every PR
name: bumper
on: [pull_request]

jobs:
  infra:          # terraform plan safety gate
    runs-on: ubuntu-latest
    steps:
      - uses: gnana997/bumper@v1
        with: { plan-json: plan.json, fail-severity: high }

  deps:           # dependency CVE + malware gate
    runs-on: ubuntu-latest
    steps:
      - uses: gnana997/bumper/deps@v1
        with: { fail-severity: high }  # malware always fails