Skip to main content
charter suppress <RULE-ID> writes a suppression entry to .charter-suppress.yml. Use it when a finding is a confirmed false positive or an accepted risk that still needs an audit trail. The rule ID is positional. Suppressed findings disappear from the active score and are listed separately in scan output.

Usage

charter suppress dry run output

charter suppress --dry-run — preview the suppression entry before writing

Flags

string
required
Human-readable explanation of why this finding is acceptable. Required — a suppression without a reason triggers AE-SUPPRESS-001.
string
Time-to-live for the suppression. Accepts a day duration (30d, 90d), an ISO date (2026-12-31), or permanent. Durations are stored as an absolute YYYY-MM-DD date. Defaults to 90d.
string
Approver handle. Required for a permanent waiver to be honored — without it, AE-SUPPRESS-002 fires as a High finding.
string
Explicit repository root. Defaults to the current working directory.
boolean
Print the suppression entry that would be written without modifying .charter-suppress.yml.
auto | always | never
Color output mode for text rendering. Defaults to auto.
boolean
Disable color. Equivalent to --color=never and wins over --color when both are set.

What Gets Written

charter suppress updates .charter-suppress.yml in the target repository. Each entry records:
For a permanent suppression with an approver:
An optional path field scopes an entry to a specific file or glob.
Permanent suppressions (--expires permanent) require an --approver field to be honored. Without it, AE-SUPPRESS-002 fires as a High finding on every subsequent scan.

Governance Rules

Three governance rules run on every charter doctor scan to keep the suppression file honest:
  • AE-SUPPRESS-001 (Medium) — fires if any suppression entry is missing a reason field. Every suppression must carry a human-readable justification.
  • AE-SUPPRESS-002 (High) — fires if any permanent suppression has no approver field. Permanent waivers require an explicit owner on record.
  • AE-SUPPRESS-003 (Informational) — fires when the suppression rate across the repository is high. This is a signal-only finding and does not deduct from the score. It surfaces when a large proportion of findings are suppressed rather than fixed.
These rules cannot themselves be suppressed without triggering further governance findings.

Exit codes

Suppression governance

How the suppression file is policed and why waivers expire.

Suppress a finding

The end-to-end workflow for accepting a risk on the record.

AE-SUPPRESS-001

The rule that requires every suppression to carry a reason.