checkov · git:20261011.e8166a5 · 2026-10-11 · sha256 599e0ff2cbcc16c7

checkov git:20261011.e8166a5A

Immutable. This exact content never changes and is served at /api/v1/blob/599e0ff2cbcc16c7.

---
name: checkov
description: Bootstrap Checkov on a developer laptop, run static or plan-level Terraform security scanning for AWS/Azure/GCP/EKS, resolve private GitHub modules via gh CLI, generate pre-commit hooks, produce multi-format output (cli/json/sarif/junit), and fix violations with AI-generated patches. Use when asked to "scan my Terraform", "run checkov", "check my IaC for security issues", "set up checkov pre-commit", or "fix checkov findings".
argument-hint: "[static|plan|secrets|audit|multi|baseline|fix|scaffold] [path]"
title: "Checkov Command"
sidebar_label: "checkov"
custom_edit_url: null
---

Bootstrap Checkov and scan Terraform code for security misconfigurations — locally, before CI catches them.

Read `references/checkov.md` before responding. It contains all mode logic, bootstrap steps, provider detection, and fix patterns.

## Mode dispatch

Parse the first word of `$ARGUMENTS` as the mode. When `$ARGUMENTS` is empty, run the interactive wizard.

| Mode | What it does |
|---|---|
| `static` | Scan `.tf` source files with `--download-external-modules true` |
| `plan` | `terraform init` → plan → JSON → Checkov `--deep-analysis` (use `--upgrade` flag to also upgrade providers) |
| `secrets` | Scan entire repo for hardcoded secrets (`--framework secrets --enable-secret-scan-all-files`) |
| `audit` | One-time secrets history scan across all commits (`--scan-secrets-history`) |
| `multi` | Scan Terraform + GitHub Actions + Dockerfiles + Helm in a single run |
| `baseline` | Create `.checkov.baseline` to snapshot existing violations |
| `fix` | Re-run scan and apply AI-generated patches to `.tf` files |
| `scaffold` | Generate `.checkov.yaml` config (SOC 2 / CIS / PCI / HIPAA variants) and/or `custom-checks/` |
| _(empty)_ | Interactive wizard — ask Q1 (mode) then Q2 (path/context) |

## Interactive Wizard

**Q1 — Mode?**
```
What do you need?
  1. static    — scan .tf source files  [default]
  2. plan      — terraform plan → Checkov deep analysis
  3. secrets   — scan entire repo for hardcoded secrets and tokens
  4. audit     — one-time scan of git commit history for leaked secrets
  5. multi     — scan Terraform + GitHub Actions + Dockerfiles + Helm together
  6. baseline  — snapshot existing violations (first-run brownfield)
  7. fix       — scan and apply AI-generated fixes to .tf files
  8. scaffold  — generate .checkov.yaml (SOC 2 / CIS / PCI / HIPAA) or custom-checks/

Enter 1–8 or mode name:
```

**Q2 — Path?** (ask after Q1)
```
Terraform root directory, or press Enter to scan current directory [default: .]:
```

Then proceed into the relevant mode section in `references/checkov.md`.

## Agent behavior

### Intent classification

Before asking any question, classify the user's intent from their free-text request:

| Intent signals | Mode |
|---|---|
| "scan", "check", "lint", "review my Terraform", "check my IaC" | `static` |
| "plan", "deep analysis", "live values", "against real state" | `plan` |
| "secrets", "hardcoded", "leaked credentials", "tokens in code", "secret scan" | `secrets` |
| "git history", "scan history", "ever committed", "old commits", "audit history" | `audit` |
| "scan everything", "multi-framework", "github actions", "dockerfiles", "helm" | `multi` |
| "existing repo", "too many findings", "noisy", "brownfield", "baseline" | `baseline` |
| "fix", "remediate", "resolve", "CKV_*" | `fix` |
| "set up", "configure", "pre-commit", "custom checks", ".checkov.yaml", "scaffold" | `scaffold` |

### Ask only for missing high-risk inputs

Do not pepper the user with questions. Only prompt for inputs where getting it wrong causes real harm:

| When to ask | Question |
|---|---|
| Multiple Terraform roots detected | "Which root? (1. terraform/aws/ 2. terraform/azure/ 3. All)" |
| Plan mode, multiple `*.tfvars` found | "Which var file? (1. staging.tfvars 2. production.tfvars 3. None)" |
| Plan mode, non-default workspace detected | "Currently on workspace '<name>' — continue? (y/N)" |
| Fix → Apply mode | "Apply these changes? (y/N)" — show unified diff first |
| scaffold writes a new file | "Write .checkov.yaml to <path>? (y/N)" |

Never ask about: output format (default to `cli`), whether to run bootstrap (always do it), whether to gitignore output files (always do it), or pre-commit detection (always check silently).

## Cross-references

- `/platform-skills:terraform` — full validation pipeline (fmt → validate → tflint → checkov → plan)
- `/platform-skills:compliance` — SOC 2 control mapping and Checkov check IDs by TSC criterion
- `/platform-skills:supply-chain` — image signing, SBOM, and CVE scanning beyond IaC