Implementation sources: SDK types, defaults, validation, loading, and merging. This reference is manually maintained alongside those sources.
| Field | Type | Default | Description |
|---|---|---|---|
iac |
CloudBurnModeConfig |
{} |
Default rule and format settings for cloudburn scan. |
discovery |
CloudBurnModeConfig |
{} |
Default rule and format settings for cloudburn discover. |
Each mode uses the same fields:
| Field | Type | Default | Description |
|---|---|---|---|
enabled-rules |
string[] |
unset | If present, only the listed rule IDs remain active; otherwise AWS Core is used. |
disabled-rules |
string[] |
unset | Rule IDs to remove from the active set after enabled-rules is applied. |
services |
string[] |
unset | Service allowlist applied before enabled-rules and disabled-rules. |
format |
'json' | 'table' |
unset | Default CLI output format for that mode when --format is not passed. |
fail-on |
'high' | 'medium' | 'low' |
unset | Exit with code 1 when an active finding meets or exceeds this severity. |
Custom rule injection is not part of the current configuration schema. The supported rule-selection controls are the
mode-local enabled-rules, disabled-rules, and services fields above.
mergeConfig(partial?) in config/merge.ts:
- Start with
defaultConfig. - Merge
iacanddiscoveryindependently. - Replace
enabledRulesanddisabledRulesarrays when an override is present. - Replace
servicesarrays when an override is present. - Replace
failOnwhen an override is present. - Preserve untouched fields in the other mode or on the same mode.
The CloudBurnClient facade also merges runtime overrides through mergeConfig().
loadConfig(path?) in config/loader.ts behaves as follows:
- explicit
path: load that exact file - no
pathoutside CI: search upward fromprocess.cwd()for.cloudburn.ymlor.cloudburn.yaml - no
pathin CI (CIis set to a truthy value other thanfalse,0, or an empty string): skip implicit discovery entirely and return defaults - stop the upward search at the git root if one exists, otherwise at the filesystem root
- if no config file is found, return defaults
This CI trust boundary means a repository fail-on setting is not active unless the caller passes that file explicitly,
for example cloudburn scan ./iac --config .cloudburn.yml. Pin --fail-on directly in the workflow when the threshold
must not be changeable by repository config.
Validation fails fast for:
- invalid YAML
- unknown top-level or section keys
- invalid field types
- invalid
format - invalid
fail-on - unknown services
- unknown rule IDs
- rule IDs that do not support the targeted mode
- the same rule ID appearing in both
enabled-rulesanddisabled-rules - both
.cloudburn.ymland.cloudburn.yamlin the same directory
Printed by cloudburn config --print-template (from packages/cloudburn/src/commands/config.ts):
# Static IaC scan configuration.
# enabled-rules replaces the AWS Core preset with only the listed rule IDs.
# It can also activate opt-in rules that are not in AWS Core.
# disabled-rules removes specific rule IDs from the selected set.
# services restricts scans to rules for the listed services.
# format sets the default output format when --format is not passed.
# fail-on gates CI on findings at or above high, medium, or low severity.
iac:
enabled-rules:
- CLDBRN-AWS-EBS-1
disabled-rules:
- CLDBRN-AWS-EC2-2
services:
- ebs
- ec2
format: table
# fail-on: high
# Live AWS discovery configuration.
# Use the same rule controls here to tune discover runs separately from IaC scans.
discovery:
enabled-rules:
- CLDBRN-AWS-EBS-1
disabled-rules:
- CLDBRN-AWS-S3-1
services:
- ebs
- s3
format: json
# fail-on: highfail-on is inclusive: high gates only high-severity findings, medium gates high and medium, and low gates every
active finding. Inline-suppressed IaC findings never trigger the gate. On the CLI, an explicit --fail-on takes
precedence over --exit-code; --exit-code retains its compatibility behavior of gating on any active finding.
See docs/architecture/cli.md for the full discover command behavior, region resolution order, and discover init semantics.