Compliance checks in your
GitHub Actions.
Add WAF++ PASS to any workflow. Scan Terraform, Bicep, CDK, or Pulumi on every pull request and push, then send the full result payload to your WAFPass server for dashboards, gap analysis, and audit evidence.
One step. Full visibility.
The action handles CLI installation, scanning, result upload, and policy enforcement so your team can focus on shipping.
Installs the latest wafpass-core from PyPI automatically, or override with a custom pip source or pre-installed binary.
Scan Terraform, Bicep, CDK, or Pulumi files in a single step. Supports multiple paths and Terraform plan JSON for change overview.
Uploads the full wafpass-result.json payload to POST /api/v1/runs so dashboards and evidence packages stay current.
Configurable fail_on policies from never to critical. Fail the step after the result is safely stored on the server.
Use a Bearer token for interactive users or an ingest API key for headless CI/CD runs. Both forwarded securely to the server.
Marks runs as is_cicd: true with triggered_by: github-actions, and passes branch, commit SHA, project, and stage automatically.
Add it to any workflow.
Check out your repo, run the action, and surface compliance results where your team already works.
name: WAF++ PASS Scan
on:
push:
branches: [main, develop]
pull_request:
jobs:
wafpass:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run WAF++ PASS
uses: WAF2p/wafpass-action@v0.1.1
with:
server_url: ${{ vars.WAFPASS_SERVER_URL }}
api_key: ${{ secrets.WAFPASS_API_KEY }}
scan_path: ./infra
iac_framework: terraform
project: ${{ github.repository }}
stage: ${{ github.ref_name == 'main' && 'prod' || 'dev' }}
fail_on: high
upload_source: true
- name: Run WAF++ PASS
uses: WAF2p/wafpass-action@v0.1.1
with:
server_url: ${{ vars.WAFPASS_SERVER_URL }}
api_key: ${{ secrets.WAFPASS_API_KEY }}
scan_path: ./aws ./azure ./gcp
iac_framework: terraform
project: ${{ github.repository }}
stage: ${{ github.ref_name == 'main' && 'prod' || 'dev' }}
fail_on: high
upload_source: true
Inputs & outputs
Everything the action accepts and returns, at a glance.
| Input | Required | Default | Description |
|---|---|---|---|
server_url | yes | — | Base URL of the WAF++ server. |
api_token | no | — | Bearer token. Provide either this or api_key. |
api_key | no | — | Ingest API key (X-Api-Key). |
scan_path | yes | . | Path(s) to scan. Separate multiple paths with spaces. |
iac_framework | no | terraform | IaC plugin: terraform, bicep, cdk, pulumi. |
stage | no | — | Deployment stage, e.g. dev, staging, prod. |
project | no | repo name | Project / repo identifier. |
fail_on | no | fail | fail, skip, any, low, medium, high, critical, never. |
upload_source | no | false | Upload source files for dashboard diff previews. |
fetch_controls | no | false | Clone controls from the framework repo before scanning. |
| Output | Description |
|---|---|
run_id | UUID of the created run on the WAF++ server. |
score | Overall compliance score returned by the server. |
findings_count | Number of findings in the scan result. |
Add WAF++ PASS to your pipeline.
Install the action from the GitHub Marketplace, copy the workflow, and start surfacing infrastructure compliance on every PR.