Safeguard
Developer Tools•

How does GitHub turn SARIF severity into critical, high and low?

GitHub reads a security-severity score on each SARIF rule and maps it to critical, high, medium or low. Learn the cutoffs and what the level field does.

Safeguard Security Team
4 min read

GitHub code scanning shows critical, high, medium or low only for rules that carry a security-severity property, a score as a string above 0.0 and up to 10.0. Over 9.0 is critical, 7.0 to 8.9 high, 4.0 to 6.9 medium, 0.1 to 3.9 low. Without it, there is no security level to show.

Two different severity ideas in SARIF

SARIF has a level on results and rules, with the values note, warning and error. GitHub's documentation lists those as the valid values for the default configuration level of a rule. That field says how serious a rule is in general terms and shows up as the problem severity.

The security-severity property is separate and lives in the rule properties. GitHub describes it as recommended only for security rules. If you include it, results for the rule are treated as security results.

FieldWhereValuesEffect on GitHub
levelRule default or resultnote, warning, errorGeneral severity of the finding
security-severityRule propertiesString from above 0.0 to 10.0Security level shown as critical to low
precisionRule propertiesDocumented set of precision valuesCombined with severity to order results

The mapping

The documentation gives the translation of the numeric score exactly: over 9.0 is critical, from 7.0 to 8.9 is high, from 4.0 to 6.9 is medium, and from 0.1 to 3.9 is low. A value of 0.0, or any value outside those ranges, is regarded as having no security severity.

Note that the value is a string, for instance the text 9.8, not a number. A tool that writes a JSON number may not be read as expected, so follow the documented example.

A minimal rule entry

{
  "id": "R01",
  "properties": {
    "security-severity": "9.8"
  }
}

That fragment follows the shape of GitHub's own example, where the rule also has name and problem severity fields.

Practical advice for tool builders

  1. Decide where your score comes from. If your rules map to CVSS, convert the base score to the string form.
  2. Set security-severity only on security rules. Quality rules should omit it.
  3. Keep level and security-severity consistent, so a rule that says note does not carry 9.8.
  4. Do not invent a score for rules you cannot rate. Leaving the property out is more honest than a made up number.
  5. Document your mapping for users, since two tools can score the same weakness differently.

What users see

GitHub says the score, together with the precision property, determines whether results show by default and in what order. The highest severity and highest precision results come first. So a rule with a high score and poor precision can still bury better findings. Rate both fields with care.

Try it yourself

Click through it at your own pace, or open it full screen. Compare how findings are ranked, and ask whether the top item deserves to be there.

Where this fits

If you choose a static analysis tool, check how it fills these fields. See which SARIF fields matter when choosing a SAST tool. Safeguard offers code and dependency scanning, and the free scan is a quick way to look at real output.

Quick check

What does a security-severity of 9.5 become on GitHub?

Critical, because the documentation maps scores over 9.0 to critical.

What happens if the rule has no security-severity?

There is no security score to translate, so no critical to low level comes from it. Add the property to security rules.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.