Security Health GitHub Action
The Security Recipes Health Check action turns this site’s guidance into a CI gate. It connects to the hosted Security Recipes MCP server for recipe context, evaluates bounded repository evidence with the model you choose, and reports every check — including the ones you have not enabled — in the job summary, so remaining coverage is always visible.
Quick start
name: Security health
on:
pull_request:
jobs:
security-health:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: stevologic/security-recipes.ai/actions/security-health@main
with:
provider: openai # anthropic | openai | xai | ollama
api-key: ${{ secrets.OPENAI_API_KEY }}
Each check is a boolean toggle grounded in a published recipe:
| Toggle | Default | Grounded in |
|---|---|---|
check-dependencies |
on | Vulnerable dependencies |
check-secrets |
on | Secrets and data exposure audit |
check-injection |
on | Injection sink audit |
check-supply-chain |
on | Supply chain build integrity audit |
check-authz |
off | Authorization and tenant boundary audit |
check-containers |
off | Base image hygiene |
check-owasp |
off | OWASP Top 10 audit |
check-cve-exposure |
off | CVE intelligence intake gate |
check-compliance |
off | Compliance standards |
Models
Select provider (Anthropic, OpenAI, Grok/xAI, or an Ollama-served model via
base-url) and optionally model. When no model is set, the action queries
the provider’s live model list and picks the lowest available model — for
Ollama, the smallest installed model by size — so the default run stays cheap.
How verdicts work
- Recipe context is fetched from
https://security-recipes.ai/mcp(streamable-HTTP MCP) with an automatic fallback to the publicapi/recipes.jsonfeed. - Evidence is bounded and deterministic: manifests, workflows, container files, and source excerpts, capped to a few dozen kilobytes per check.
- The model must answer in strict JSON (
pass/warn/failplus findings); malformed replies degrade towarn, never to silence. fail-ondecides whether the job fails onfail(default), onwarn, ornever(report-only).
This repository runs the action on itself (workflow) in report-only mode: the deterministic build gate stays the required check, and the LLM verdicts surface loudly in every pull request summary.
An LLM check is a bounded review gate, not a proof of security. Keep the evaluation discipline and your required human review and CI gates in place.