When to suppress
Confirmed false positive
The finding doesn’t reflect a real problem in your repo — Charter’s detection doesn’t apply to your specific setup.
Accepted risk with justification
The risk is real but intentionally accepted, documented, and has an owner and a time horizon.
Genuine issue not yet addressed
Don’t suppress findings you just haven’t gotten around to fixing. Fix them, or leave them in the active findings list until you do.
Score inflation
Don’t suppress to hit a threshold. A suppressed finding still represents real repo state — suppressions don’t make problems go away.
Review what was written
charter suppress appends an entry to .charter-suppress.yml:Expiry values
| Value | Meaning |
|---|---|
30d | 30 days from today |
90d | 90 days from today (recommended default) |
1y | One year from today |
2026-12-31 | Explicit calendar date |
permanent | No expiry — requires --approver |
.charter-suppress.yml:
Inline suppression
For single-line, line-anchored findings in source files, you can suppress inline instead of writing to.charter-suppress.yml:
Inline suppression syntax
Inline suppression syntax
Place the directive on the same line as the triggering content, using the file’s native comment syntax:Supported comment forms:
#, //, <!-- -->Inline suppression limits
Inline suppression limits
Inline suppression does not work for:
- file-level findings (no single line to anchor to)
- strict JSON configs like
.mcp.json(no comment syntax) - multi-line findings
.charter-suppress.yml as the primary suppression path.Governance rules Charter enforces
Charter audits every suppression on each scan:| Rule | What it checks |
|---|---|
AE-SUPPRESS-001 | Suppression is missing a reason |
AE-SUPPRESS-002 | Permanent suppression has no approver |
AE-SUPPRESS-003 | Suppression rate across the repo is high |
AE-SUPPRESS-003) is informational — it tells you the repo may be muting more than it’s fixing.
Good suppression hygiene
- Prefer a real fix when the repo state is genuinely wrong
- Use finite
--expireswindows rather thanpermanent - Write reasons that explain the decision, not just
"false positive" - Add
--approverfor any long-lived accepted risk - Review
.charter-suppress.ymlperiodically — don’t let it grow silently