Skip to main content
A policy profile is a named threshold preset stored in charter.yaml. Configuring a profile means every invocation of charter doctor — on any machine, in any CI run — uses the same threshold without anyone needing to pass a flag.

Available profiles

Setting a profile

Place charter.yaml in the root of your repo. Charter discovers it automatically. With this config, every charter doctor invocation gates at 90 — no --threshold flag needed.

Setting an exact threshold

If neither profile maps to the threshold you want, set an explicit numeric value:
You can use policy.threshold alongside policy.profile if you want to name the intent clearly:
When both profile and threshold are set, threshold always wins. The profile label becomes documentation only — it has no effect on the gate value.

Threshold precedence

When multiple threshold sources are present, Charter applies them from highest to lowest priority:
  1. --threshold flag on the command line
  2. policy.threshold in charter.yaml
  3. The default for the configured policy.profile (60 for relaxed, 80 for standard, 90 for strict)
  4. Built-in default: 80 (when charter.yaml is absent or has no policy section)

Command-line override

Passing --threshold at invocation time overrides everything in charter.yaml. The config file is not modified:
This is useful for CI jobs that need a different gate than the repo default, or for one-off checks during development.

Next steps

charter.yaml Reference

The full configuration file, fields, and validation rules.

Run Charter in GitHub Actions

Apply a profile-backed gate to every pull request.

GitHub Action

How the threshold input interacts with profiles.

Scoring and Caps

What the threshold is gating against.