What a Policy Does

Three Possible Actions
Start with Warn. Introducing a new rule as Warn shows you the true blast
radius without stopping anyone’s merge. Promote it to Block once the backlog
it surfaces is dealt with.
Writing a Policy
Select + New Policy. Start from a template, or build from scratch. The built-in set covers the rules most teams want first, such as banned licences and known-exploited vulnerabilities. You then have two ways to express the rule, and they stay in sync:- Sentence — build the condition by picking fields, operators, and values. No syntax to learn.
- Code — write the expression directly, with autocomplete and live validation, for conditions the builder can’t express.
Rules About Cryptography
With Cryptography enabled, the same builder gains a Crypto field group, and seven starter templates are available under Crypto:
The Crypto group also exposes the finding’s Purpose (
confidentiality, excluded, support, or unknown) and three evidence-only EAR signals, each met, not_met, unknown, or not_evaluated:
Whenever one of these fields is in a sentence, the builder repeats the
fixed disclaimer: “Export-control evidence supports your
self-classification. It is not legal advice and does not determine or
imply an ECCN.” Use
has() when a field may be absent, an absent field
means the producer supplied no value; unknown means the producer
supplied an applicable test but couldn’t resolve it; not_evaluated
means the test had no applicable occurrence evidence.- Reachability has three values, not two, a rule writes them
reachable,unreachable, andunknown, which the finding itself shows as Reachable, Not Reached, and Unknown, so a rule that should only fire on proven usage must sayreachable; asking for “not unreachable” also catches everything the analysis couldn’t decide. - Key size exists only where Earnie resolved an actual key length; where it couldn’t, the field is absent and a key-size rule passes over the finding rather than guessing.
- Post-quantum status has four values, and the distinction is the point:
Vulnerable(a quantum computer breaks it, the classical public-key families, at any key length),Safe(a post-quantum algorithm),Not applicable(nothing for a quantum computer to attack, hashes, symmetric ciphers, MACs, and key-derivation functions live here, so a broken hash like MD5 is a severity problem, never a migration item), andUnassessed(Earnie hasn’t curated that algorithm and won’t claim either way). The olderQuantum Safeyes/no field still works but is deprecated in favour of these four, since one yes/no couldn’t tell “we checked, it’s fine” from “we haven’t looked.” On an unassessed asset the yes/no field is absent rather than false, so a rule on it must be written as “Quantum Safe is set and is false”; a rule that only says “Quantum Safe is false” errors on the findings it can’t answer for, which is why the four-value field is the one to write new rules against. - Risk assessed is the companion fact: whether Earnie’s curated tables actually decided this finding’s severity. When it’s false, the severity is a placeholder rather than a judgement, and reachability doesn’t raise it, which is why an unassessed finding never escalates into a blocking severity it was never assessed for.
Without Cryptography enabled, the Crypto field group, crypto templates,
and regulatory template sets are withheld, no field group, no templates,
nothing to discover.
Regulatory Template Sets
On + New Policy, a regulatory template set enables its mapped starter templates for the project in one action. Each template card shows the clause it’s mapped to.Neither template set blocks reachable TLS 1.3. Earnie doesn’t verify
FIPS 140-3 module validation.
What a Policy Evaluates
Every policy names one kind of finding. A new policy asks for it as Evaluates, next to Category, and a policy started from a template arrives with the template’s own answer already chosen. The list offers only the scanners your organisation has enabled, and the choice is fixed once the policy is saved, it decides which fields the rule may read, so changing it later would invalidate the rule itself. The policy’s Where This Applies panel reads it back as “Evaluates Crypto findings.”Fields that aren’t present on every finding must be checked before
they’re read. A rule that asks whether a key is under 2048 bits has to
say so about occurrences whose key length Earnie actually resolved, the
Sentence builder writes that check for you, and the code editor refuses
to save a rule that reads such a field without one, naming the field and
the check to add.
Where a Policy Applies
A policy belongs to your organisation rather than to a single project, so the same rule can be attached to several projects at once. Open a policy and its Where This Applies panel names every project it’s currently attached to, and the repository connected to each one, so “which repositories does this cover?” has a direct answer.A project with no repository connected yet is marked as covering nothing.
Cloning a Policy
To start a new rule from an existing one instead of a blank template, open a policy and choose Clone Policy from its More Actions menu. The copy is entirely independent, it starts with the same rule and settings, but from then on the two are edited separately, so changing one never affects the other, including their parameter values. The clone is named after the source with “(copy)” appended, gets its own identifier, and is attached to the project you cloned it from so you can find and tune it immediately.A copy of a built-in template becomes a regular custom policy, so it’s yours
to edit freely.