CloudBurn reads configuration from a .cloudburn.yml (or .cloudburn.yaml) file. When you run any CloudBurn command, it walks up the directory tree toward the git root looking for a config file.
Generate a starter config
cloudburn config --init
This creates a .cloudburn.yml at your git root. See cloudburn config for details.
Full config schema
The config file has separate sections for iac (static scans) and discovery (live AWS scans). Both sections support the same keys.
iac:
enabled-rules:
- CLDBRN-AWS-EBS-1
disabled-rules:
- CLDBRN-AWS-EC2-2
services:
- ebs
- ec2
format: table
fail-on: high
discovery:
enabled-rules:
- CLDBRN-AWS-EBS-1
disabled-rules:
- CLDBRN-AWS-S3-1
services:
- ebs
- s3
format: json
fail-on: high
Config keys
| Key | Type | Default | Description |
|---|---|---|---|
enabled-rules | string[] | AWS Core preset | Replaces the AWS Core preset with only the listed rule IDs. Also the way to activate the opt-in rules that AWS Core excludes. |
disabled-rules | string[] | none | Skip these rule IDs from the selected set. |
services | string[] | all services | Only run rules for these services (e.g. ebs, ec2, s3). |
format | "table" or "json" | "table" | Default output format for this scan type. |
fail-on | "high", "medium", "low" | none | Exit with code 1 when an active finding meets or exceeds this severity. Equivalent to the --fail-on CLI flag. |
By default, CloudBurn runs the AWS Core preset. The preset excludes rules that need AWS-side setup; setting enabled-rules replaces the preset rather than merging with it. See Enabling and Disabling Rules for the opt-in rules and why each one is excluded.
The opt-in rules are all discovery-only, so they belong in the discovery section. Config validation rejects them under iac.
discovery:
enabled-rules:
- CLDBRN-AWS-COSTOPTIMIZATIONHUB-3
- CLDBRN-AWS-LAMBDA-4
Precedence
CLI flags always take priority over config file values, which take priority over built-in defaults:
CLI flags > config file > defaults
For example, passing --format json on the command line overrides a format: table in your config file.
Validation
CloudBurn validates your config at startup and exits with an error if:
- The same rule ID appears in both
enabled-rulesanddisabled-rules - A rule ID in
enabled-rulesordisabled-rulesdoes not exist - A rule ID does not support the scan mode it appears in (e.g. a discovery-only rule in the
iacsection) - A service name in
servicesis not valid for that scan mode formatis set to a value other thantableorjsonfail-onis set to a value other thanhigh,medium, orlow- A key other than
iacordiscoveryappears at the top level, or a key other than the five above appears inside one of them - Both
.cloudburn.ymland.cloudburn.yamlexist in the same directory
Flags with no config key
The config file covers rule selection, output format, and the severity gate. These options are CLI flags only, so set them on each command:
| Flag | Applies to |
|---|---|
--exit-code | scan, discover |
--region | discover |
--timeout | discover |
--cache, --cache-dir, --cache-context | discover |
CI environments
When the CI environment variable is set and truthy, CloudBurn skips implicit config file discovery and uses default values. This prevents unexpected config files in CI runners from affecting scan results. To use a config file in CI, pass it explicitly with --config.
Environment variables
Discovery reads a few process-level variables that have no flag or config key. They tune how independent CloudBurn processes running as the same OS user share AWS request quotas, and where that shared state lives.
| Variable | Effect |
|---|---|
CI | When truthy, skips implicit config file discovery (see CI environments). |
XDG_CACHE_HOME | Base directory for the evidence cache (cloudburn/evidence) and the shared request-admission state (cloudburn/aws-admission-v1). Defaults to ~/.cache. |
CLOUDBURN_AWS_ADMISSION_DIR | Writable directory for the shared request-admission state, for containers or read-only home directories. When set, no fallback directory is used and state errors fail the run rather than bypassing coordination. |
CLOUDBURN_AWS_QUOTA_OVERRIDES | JSON object of per-operation quota policies, for example {"logs:DescribeLogStreams":{"ratePerSecond":5,"burst":1}}. Discovery fails before collecting anything when the value is not a JSON object whose values are objects. |
Quotas are shared per signing AWS account, so discovery calls sts:GetCallerIdentity once per run. When that lookup fails, the run continues with isolated in-memory limits.
What's next
| Quickstart: Scan IaC Files | Use your config in a real scan |
| cloudburn scan | All flags for the scan command |
| cloudburn rules list | Find valid rule IDs to use in your config |