Draugr and GitHub Advanced Security
What each does, and how they work in the same repository.
GitHub Advanced Security is GitHub's own security tooling, packaged as GitHub Secret Protection, which finds credentials committed to a repository and blocks them at push, and GitHub Code Security, which runs code scanning with CodeQL, Copilot Autofix and dependency review.
Draugr is an open-source CLI that runs the scanners a repository needs from one descriptor file, ranks every finding by the component it belongs to, and returns a pass or fail. It writes SARIF 2.1.0, the format code scanning reads, so on GitHub its findings appear in the Security tab beside CodeQL's.
At a glance
Where Draugr stands out
| Feature | GitHub Advanced Security | Draugr |
|---|---|---|
| Findwhat gets scanned | ||
| Infrastructure as code | partlyAI Scan, advisory only | yesTrivy |
| Container images | no | yesTrivy; Grype on request |
| Running services (TLS, headers, dynamic testing) | no | yesNuclei and Draugr's own checks |
| Cloud and Kubernetes posture | no | yesProwler for cloud, built-in checks for Kubernetes |
| Rankhow findings are ordered | ||
| Ranks findings by each component's exposure and criticality | partlyfilters alerts by runtime context from Defender for Cloud or Dynatrace | yesdeclared in the descriptor |
| Flaws known or likely to be exploited (CISA KEV, EPSS) | partlyEPSS on Dependabot alerts | yesboth, on request |
| Reachability of a vulnerable dependency | no | partlyGo, via govulncheck |
| Gatewhat fails a pull request | ||
| One threshold across every scanner | noset per tool | yes |
| Accepted findings that expire on a date | noa reason and comment, no expiry | yesreason, expiry, author from git history |
| Reportwhat you hand over | ||
| Which vulnerabilities do not affect your product (VEX) | no | yesOpenVEX |
| A report file to hand to someone | partlyCSV export from security overview | yesone self-contained HTML file |
| Wherewhere it runs, and on what terms | ||
| GitLab and any other CI | no | yes |
| Open source | no | yesApache-2.0 |
What both do
| Feature | GitHub Advanced Security | Draugr |
|---|---|---|
| Findwhat gets scanned | ||
| Static analysis of your own code | yesCodeQL | yesSemgrep; gosec for Go on request |
| Secrets in the repository and its history | yessecret scanning | yesGitleaks, history on request |
| Vulnerable dependencies | yesDependabot alerts | yesTrivy; Grype on request |
| Gatewhat fails a pull request | ||
| Fails a pull request only on what it introduces | yes | yesdraugr diff --fail-on-new |
| Wherewhere it runs, and on what terms | ||
| GitHub and Azure DevOps | yes | yes |
yespartly in part, or in a narrower form no
What each covers
| GitHub Advanced Security | Draugr | |
|---|---|---|
| Static analysis | CodeQL code scanning, and AI Scan on pull requests for languages CodeQL does not cover | Semgrep, and gosec for Go. CodeQL's own SARIF can be imported |
| Secrets | Secret scanning across the repository's history, and push protection | Gitleaks, on the tree and optionally the full commit history |
| Dependencies | Dependency review on pull requests, beside the Dependabot alerts every GitHub repository has | Trivy by default, with Grype, retire.js and Mend on request, and govulncheck for Go reachability |
| Infrastructure as code | AI Scan on pull requests reads Terraform and Dockerfiles, as advisory findings | Trivy |
| Licenses | Dependency review, with license allow and deny lists, and license policies on GitHub Enterprise Cloud that can block a pull request | Trivy, or Mend on request |
| Container images, running services, cloud and Kubernetes posture | Not part of GitHub Advanced Security. Third-party tools can upload their results as SARIF | Trivy or Grype for images, Nuclei with Draugr's own TLS and header checks for services, Prowler and kube-bench for posture |
| Where it runs | GitHub, and Azure DevOps as GitHub Advanced Security for Azure DevOps | Any CI, with guides for GitHub Actions, GitLab CI and Azure Pipelines |
A scanner uploading SARIF is one somebody chooses, installs and keeps current in a workflow of
their own, and code scanning shows its results under that tool's name with that tool's severities.
Draugr's descriptor names those scanners in one place, and draugr tools install fetches pinned
builds of every one of them except Prowler and Mend, and verifies each before installing it.
How a finding is ranked and gated
Code scanning ranks an alert by the severity its tool assigned, using a CVSS-based security severity where the tool provides one. A ruleset can block a merge when a required tool reports an alert at or above a threshold chosen per tool.
Draugr ranks every finding P1 to P4 by combining the scanner's severity with the component's exposure (who can reach it) and criticality (what the business loses when it stops), both declared in the descriptor. The same CVE can be P1 on a public, business-critical service and P3 on a restricted, supporting one. Where the descriptor turns on exploitability feeds, a CVE in CISA's Known Exploited Vulnerabilities catalog or with a high EPSS score ranks higher, and where it names govulncheck, a Go finding with no call path from your code ranks one band lower.
The gate is one band across every scanner:
- uses: draugr-dev/draugr@v0
with:
saga: draugr.saga.yaml
tools: true
fail-on-new: P1
On a pull request the action runs a diff, posts it as a comment and fails the check only on a P1 the change introduces. On a push it runs a full scan, which fails on any open P1. The GitHub Action guide covers both.
Using both
Draugr's findings in code scanning. The descriptor's github publisher uploads Draugr's SARIF
to code scanning on each push, so every scanner Draugr runs appears in the Security tab as one tool.
A finding accepted in the descriptor is dismissed there as won't fix, with the reason and the
exclusion's file and line as the comment, and the git history of that line names who accepted it.
config:
publishers:
- kind: github
On a pull request the action posts its own comment rather than uploading, which keeps the pull request from collecting two overlapping summaries. Publish to GitHub code scanning covers the token and the upload.
CodeQL's findings in Draugr's gate. Draugr does not run CodeQL. Where you already do, a component can import the SARIF file CodeQL writes, and its findings are ranked by the component's exposure and criticality and counted toward the same gate as everything else:
components:
- name: api
exposure: public
criticality: critical
imports:
- control: sast
file: reports/codeql.sarif
The file comes from CodeQL's advanced setup, a workflow you control, where the
github/codeql-action/analyze step writes SARIF to its output directory. Draugr's upload carries
the imported findings as its own, so set that step's upload to never when Draugr publishes to
code scanning, or each CodeQL alert appears twice, once under each tool.
Import another scanner's SARIF covers binding the file to
the commit it scanned.
What stays with GitHub. Push protection stops a credential before GitHub accepts the push, and Dependabot opens the pull requests that update a vulnerable dependency. Both run inside GitHub, outside any pipeline. Draugr gates on the credentials and vulnerable dependencies already in the repository, on every pull request and every push.
Availability
Code scanning, secret scanning and dependency review are available on every public repository, and Dependabot alerts on every repository. On a private repository, secret scanning needs GitHub Secret Protection, and code scanning, CodeQL, AI Scan and dependency review need GitHub Code Security, on GitHub Team or GitHub Enterprise.
Draugr is Apache-2.0 and runs in your own pipeline. Its upload to code scanning follows the same rule as any other tool's, so on a private repository the Security tab needs GitHub Code Security, while the scan, the pull-request comment and the gate do not.
The quickstart goes from install to a first scan.
Checked on 2026-10-25 against GitHub's About GitHub Advanced Security, GitHub security features, About code scanning alerts, Set code scanning merge protection, About dependency review, About open source license compliance, About Dependabot security updates, GitHub Advanced Security for Azure DevOps, the 2026-10-16 announcement of open source license compliance, the CodeQL analyze action's inputs and source, and the 2026-10-15 announcement of AI Scan for pull requests.