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
| Profile | Threshold | When to use |
|---|
standard | 80 | Default for most repos. A solid baseline for active development projects progressively adopting agent tooling. |
strict | 90 | Security-sensitive repos, production services, or teams that have resolved the common findings and want to hold the line. |
Setting a profile
# charter.yaml
policy:
profile: strict
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:
policy:
profile: standard
threshold: 85
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:
--threshold flag on the command line
policy.threshold in charter.yaml
- The default for the configured
policy.profile (80 for standard, 90 for strict)
- 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:
# Temporarily lower the threshold during a migration
charter doctor --threshold 70
# One-off strict check without changing charter.yaml
charter doctor --threshold 90
This is useful for CI jobs that need a different gate than the repo default, or for one-off checks during development.
See also