Stop satisfying governance with a rubber stamp.
Open-source GitHub Action. AI-powered code governance with tamper-proof audit trails. Install in 5 minutes. Works with your models.
You know how code reviews actually work.
The PR lands. You scan the title. Maybe the diff. You click Approve.
You tell yourself you will come back and read it properly. You will not. Neither will anyone else. This is how most code reviews work at every company shipping software today.
Now multiply that by AI. Cursor, Copilot, and Claude are generating code faster than any team can review it. The PR queue grows. The rubber-stamping accelerates. The governance gap widens.
Nobody talks about it because everyone does it.
GuardSpine does not judge you for it. It catches what you miss.
Three steps. Five minutes. Every PR governed.
Install
# .github/workflows/guardspine.yml
name: GuardSpine
on: [pull_request]
permissions:
contents: read
pull-requests: write
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: DNYoussef/codeguard-action@v1
with:
openrouter_api_key: ${{ secrets.OPENROUTER_API_KEY }}Add one YAML file to your repo. That is the entire install.
Every PR gets risk-tiered and reviewed
When a PR opens, GuardSpine analyzes the changed files and assigns a risk tier (L0 through L4) based on file patterns and content sensitivity. Higher-risk changes get reviewed by more models. Each model reviews independently, then cross-checks the others anonymously. Consensus determines the verdict.
Judgment receipt on every PR
The output is a signed evidence bundle: which models reviewed, what they found, how they voted, and a tamper-evident hash chain. It appears as a PR comment. Your compliance team can verify it offline.
{
"pr": {
"number": 47,
"title": "Add user authentication middleware",
"author": "sarah-eng",
"repo": "acme-corp/payments-api"
},
"riskTier": "L3",
"reviewers": [
{
"model_name": "Claude Sonnet 4.5",
"provider": "Anthropic",
"model_id": "claude-sonnet-4-5"
},
{
"model_name": "GPT-4o",
"provider": "OpenAI",
"model_id": "gpt-4o"
},
{
"model_name": "Gemini 2.5 Flash",
"provider": "Google",
"model_id": "gemini-2.5-flash"
}
],
"findings": [
{
"severity": "high",
"title": "Missing rate limiting on authentication endpoint",
"description": "The /auth/login endpoint accepts unlimited requests per IP. An attacker could brute-force credentials without throttling. Add rate limiting middleware (e.g., express-rate-limit) with a maximum of 5 attempts per minute per IP.",
"file": "src/routes/auth.ts",
"line": 34
},
{
"severity": "medium",
"title": "Session token entropy below recommended threshold",
"description": "Session tokens are generated using Math.random(), which is not cryptographically secure. Use crypto.randomBytes(32) or equivalent CSPRNG for session token generation.",
"file": "src/middleware/session.ts",
"line": 12
}
],
"consensus": {
"decision": "conditions",
"agreement_score": 0.67,
"votes": {
"claude-sonnet-4-5": "request_changes",
"gpt-4o": "approve",
"gemini-2-5-flash": "request_changes"
}
},
"hashChain": {
"prompt_hash": "a1b2c3d4e5f6789012345678abcdef01a1b2c3d4e5f6789012345678abcdef01",
"response_hash": "f0e1d2c3b4a5968778695a4b3c2d1e0ff0e1d2c3b4a5968778695a4b3c2d1e0f",
"bundle_hash": "7c3e8f2a1b4d6e9f0123456789abcdef7c3e8f2a1b4d6e9f0123456789abcdef",
"algorithm": "SHA-256"
},
"timestamp": "2026-02-19T14: 32:07Z"
}View raw evidence bundle (real output from CodeGuard)
{
"guardspine_spec_version": "1.0.0",
"bundle_id": "gsb_1fbee29a2da1",
"created_at": "2026-02-05T22: 38: 28.191595+00: 00",
"context": {
"repository": "acme-corp/payments-api",
"pr_number": 47,
"commit_sha": "a3f8c91e2d4b",
"base_branch": "main",
"head_branch": "feature/auth-middleware"
},
"events": [
{
"event_type": "pr_submitted",
"timestamp": "2026-02-05T22: 38: 25.700969+00: 00",
"actor": "sarah-eng",
"data": {
"pr_number": 47,
"title": "Add user authentication middleware",
"base_branch": "main",
"head_branch": "feature/auth-middleware",
"head_sha": "a3f8c91e2d4b"
},
"hash": "d439b810e9fd71094f6dc30b9c34d804cd4fe63ff328009052342b698d053d9e"
},
{
"event_type": "analysis_completed",
"timestamp": "2026-02-05T22: 38: 28.191595+00: 00",
"actor": "guardspine-codeguard",
"data": {
"files_changed": 4,
"lines_added": 187,
"lines_removed": 12,
"sensitive_zones_count": 3,
"diff_hash": "sha256:31f3e8a42affbd1608fc3b1a7feca54facd4183a55b34697647472f658486fca"
},
"hash": "831cc69c6316be7b42807b1d1e37ffe70910f1793b24f3dbed7ddb5980befb96"
},
{
"event_type": "risk_classified",
"timestamp": "2026-02-05T22: 38: 28.191595+00: 00",
"actor": "guardspine-codeguard",
"data": {
"risk_tier": "L3",
"findings_count": 2,
"scores": {
"file_patterns": 3,
"sensitive_zones": 3,
"change_size": 1
}
},
"hash": "3bc3fb6333cfd2de133c0cd3c082bd0ca329f6917be562c6df2de78c0abdc8b9"
}
],
"hash_chain": {
"algorithm": "sha256",
"final_hash": "3bc3fb6333cfd2de133c0cd3c082bd0ca329f6917be562c6df2de78c0abdc8b9",
"event_count": 3
},
"summary": {
"risk_tier": "L3",
"risk_drivers": ["auth", "config", "middleware"],
"findings": [
{
"severity": "high",
"title": "Missing rate limiting on authentication endpoint",
"file": "src/routes/auth.ts",
"line": 34,
"provable": true
},
{
"severity": "medium",
"title": "Session token entropy below recommended threshold",
"file": "src/middleware/session.ts",
"line": 12,
"provable": true
}
],
"rationale": "High risk: auth, session, and middleware code affected. 3-model review required.",
"requires_approval": true
},
"signatures": []
}Verify any bundle offline: pip install guardspine-verify && guardspine-verify bundle.json -- source on GitHub
Not another AI code review tool.
Code review tools suggest changes. GuardSpine creates proof.
Every PR produces a judgment receipt -- a cryptographically signed record of who reviewed it, what was found, and what was decided. That record cannot be altered after the fact. Your compliance team, your auditors, and (if it ever comes to it) a court can verify it independently.
This is governance, not code review. The distinction matters when the question is "who approved the code that caused the breach?"
Free. Or $499/mo if you want the dashboard.
Free
- Full review engine (L0-L4 risk tiers, multi-model deliberation)
- Evidence bundles as signed JSON on every PR
- Community rubric packs (open-source YAML templates)
- Works with any model (BYOK)
- Unlimited repos, unlimited contributors
- Self-managed. No cloud. No account needed.
Starter
- Everything in Free, plus:
- Cloud dashboard (PR history, risk analytics, finding trends)
- Slack notification cards (approve/reject alerts)
- Evidence management (search, filter, export JSON + CSV)
- Standard rubric library (pre-built industry templates)
- Up to 10 connected repos, 25 contributors
- Email support (48-hour SLA)
- 30-day free trial. No credit card.
Team
- Everything in Starter, plus:
- Custom rubric builder
- Jira + Microsoft Teams integration
- Compliance report templates (SOC2, DORA, HIPAA)
- Unlimited repos and contributors
- Priority support (4-hour SLA)
Your CISO will thank you.
GuardSpine produces exactly what compliance teams need: structured evidence that code review happened, who did it, what was found, and what was decided. Every PR. Automatically.
Instead of scrambling to reconstruct audit trails before SOC2 or DORA deadlines, your compliance team gets a searchable evidence library that updates with every merge.
You install a GitHub Action. They get audit evidence. Nobody changes workflow.
Start governing code in 5 minutes.
Try the Starter dashboard free for 30 days.
Or install the free GitHub Action now.
View on GitHubNo credit card required. Cancel anytime. Your models, your pipeline, your data.