graphql-audit

star 79.2k

Triage GitHub Code Scanning alerts (CodeQL with security-extended suite) for this repository — list open alerts, dismiss as false positive / won't fix / used in tests, query via GitHub REST + GraphQL. Use when the user asks to "review GitHub security alerts", "check CodeQL findings", "triage code scanning", or anything mentioning Code Scanning, CodeQL, security-extended, or github.com/$repo/security/code-scanning.

netdata By netdata schedule Updated 4/28/2026

name: graphql-audit description: Triage GitHub Code Scanning alerts (CodeQL with security-extended suite) for this repository — list open alerts, dismiss as false positive / won't fix / used in tests, query via GitHub REST + GraphQL. Use when the user asks to "review GitHub security alerts", "check CodeQL findings", "triage code scanning", or anything mentioning Code Scanning, CodeQL, security-extended, or github.com/$repo/security/code-scanning.

GitHub Code Scanning triage skill

This skill drives the GitHub Code Scanning API (REST + GraphQL via gh) for the repository's CodeQL alerts. The repo's CI runs the security-extended CodeQL suite, which surfaces a wider set of findings than the default suite.

The skill operates on whatever repo this checkout points at — it derives the owner/repo from the upstream (or origin) git remote. Auth uses the gh CLI's stored credentials; no token is needed in .env.

MANDATORY — keep this skill alive

If you (the agent) discover a new pattern, gotcha, working flow, correction, or any piece of knowledge while running this skill — update this SKILL.md AND commit it BEFORE proceeding. Knowledge that isn't committed is lost.

Examples of things to capture:

  • A CodeQL rule with a known FP pattern + the canonical comment to use
  • A query (GraphQL or REST) that returns useful aggregate views not available in the UI
  • An alert format change or new field that started appearing
  • A way to bulk-dismiss without hitting REST rate limits

Setup

Prerequisite — gh CLI authenticated

gh auth status

Must show authentication for github.com. If not, run gh auth login.

The gh user needs write scope on the repository to dismiss alerts; read scope is enough for listing.

.env entries

None required for this skill. gh handles auth.

(Optional GITHUB_TOKEN could go in .env if you ever need to bypass gh and call REST/GraphQL directly via curl, e.g. from a script that runs without an authenticated gh session.)

Triage decision matrix

GitHub Code Scanning alerts have three lifecycle states: open, dismissed, fixed (auto-detected when the underlying code changes). Manual triage uses dismissed with one of three reasons:

Decision API value When to use
False Positive false positive CodeQL is wrong (path is unreachable, type is wider, guard exists)
Won't Fix won't fix Real but acceptable risk; not addressing in this codebase
Used in Tests used in tests Alert is in test fixtures / vendored test code, not production

A dismissed alert can be reopened later (manually in the UI or via PATCH /alerts/<n> with state=open); the dismissal history is preserved.

Workflow

Step 1 — see what's open

bash .agents/skills/graphql-audit/scripts/codeql-list.sh

Default output is a count-by-rule summary for open alerts:

  42  cpp/integer-overflow|warning
  17  cpp/uninitialized-local|error
  ...

Filters:

bash .agents/skills/graphql-audit/scripts/codeql-list.sh --state=open --severity=high
bash .agents/skills/graphql-audit/scripts/codeql-list.sh --tool=CodeQL --severity=critical
bash .agents/skills/graphql-audit/scripts/codeql-list.sh --raw          # full JSON

Step 2 — inspect a single alert

gh api /repos/<owner>/<repo>/code-scanning/alerts/<n>

Or visit https://github.com/<owner>/<repo>/security/code-scanning/<n> in the browser for the full data-flow view.

Step 3 — dismiss

bash .agents/skills/graphql-audit/scripts/codeql-dismiss.sh \
    <alert_number> "false positive" "<short ASCII comment>"

Comments are stored verbatim; keep them short, factual, and ASCII.

Step 4 — bulk dismissal

For a known-FP rule pattern (e.g., cpp/uninitialized-local always firing on a particular header), GitHub does NOT have a REST bulk endpoint. The working pattern is:

bash .agents/skills/graphql-audit/scripts/codeql-list.sh --raw \
  | jq -r '.[] | select(.rule.id=="cpp/uninitialized-local") | .number' \
  | while read n; do
        bash .agents/skills/graphql-audit/scripts/codeql-dismiss.sh \
            "$n" "false positive" "FP: rule firing on a stub model not real code"
    done

Throttle if you have many — the REST API tolerates ~10 req/s for a single user.

What this skill does NOT do

  • CodeQL query authoring: this skill triages results, not the queries that produce them. To suppress a class of FPs at the source, edit .github/codeql/ config or the queries themselves.
  • Workflow management: enabling/disabling CodeQL runs is in .github/workflows/codeql.yml — not here.
  • Other Advanced Security features (secret scanning alerts, dependabot) use sibling APIs (/secret-scanning/alerts, /dependabot/alerts). They could be added to this skill if needed.

REST vs GraphQL

CodeQL alerts are exposed via REST (/repos/{owner}/{repo}/code-scanning/...). GraphQL (gh api graphql) is useful for cross-repo queries or reaching combined data (e.g., alert + commit history in one call):

gh api graphql -f query='
  query($owner:String!,$name:String!) {
    repository(owner:$owner, name:$name) {
      vulnerabilityAlerts(first: 100, states:OPEN) {
        nodes { securityAdvisory { ghsaId, severity } }
      }
    }
  }' -F owner=netdata -F name=netdata

The above is for Dependabot advisories, not CodeQL — CodeQL alerts remain REST-only at the time of writing.

Failure modes — quick diagnosis

Symptom Likely cause
HTTP 403 Resource not accessible by integration gh token lacks security_events scope
HTTP 404 on the alerts endpoint Code Scanning not enabled for the repo, or wrong slug
gh: not found gh CLI not installed
Empty output, no error No alerts in that state — try --state=dismissed to confirm gh is reaching the API
Pagination cuts off at 100 Use --paginate (already in codeql-list.sh)
Install via CLI
npx skills add https://github.com/netdata/netdata --skill graphql-audit
Repository Details
star Stars 79,184
call_split Forks 6,453
navigation Branch main
article Path SKILL.md
More from Creator