dnyoussef/GuardSpine Code

AI-aware code governance with cryptographically verifiable evidence bundles

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jul 8, 2026
License
None

Pinned Snippet

workflow.ymlSHA-pinned
uses: dnyoussef/guardspine-code-action@d0f561f04231bc0a00ba004fcd25df9954ceeb36 # v2.1.0

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
risk_thresholdRisk tier threshold for blocking (L0-L4). Changes at or above this level require approval.noL3
rubricPolicy rubric to evaluate against (soc2, hipaa, pci-dss, or path to custom rubric)nodefault
github_tokenGitHub token for PR operationsyes${{ github.token }}
post_commentPost risk summary as PR commentnotrue
generate_bundleGenerate evidence bundle artifactnotrue
attestation_keyPEM private key (Ed25519/RSA/EC) to sign evidence bundles for anti-forgery. When set, bundles are cryptographically signed so auditors can verify offline against your trusted public key. Leave empty for unsigned, integrity-only (tamper-evident) bundles. Provide via a GitHub secret.no""
attestation_key_idOverrides the signed bundle signature public_key_id (default: sha256 fingerprint of the DER-encoded public key). Set this to the exact key_id string your verifier has pre-configured for this signing key (e.g. GuardSpine backend GUARDSPINE_TRUSTED_PUBLIC_KEYS), so the signature is looked up verbatim instead of by recomputed fingerprint. Only meaningful when attestation_key is set.no""
upload_sarifUpload findings to GitHub Security tab (SARIF)nofalse
fail_on_high_riskFail the check if risk exceeds thresholdnofalse
fail_on_dashboard_sync_errorFail the run if the evidence bundle cannot be synced and verified to the GuardSpine backend. Default true so a swallowed sync failure cannot ship as a green check.notrue
openai_api_keyOpenAI API key for AI-powered analysis (optional)no
anthropic_api_keyAnthropic API key for AI-powered analysis (optional)no
openrouter_api_keyOpenRouter API key for AI-powered analysis (optional) - supports 100+ modelsno
openrouter_modelModel to use with OpenRouter (e.g., anthropic/claude-sonnet-4, google/gemini-3)noanthropic/claude-sonnet-4.5
ollama_hostOllama server URL for local/on-prem AI (e.g., http://localhost:11434)no
ollama_modelModel to use with Ollama (e.g., llama3.3, codellama, mistral)nollama3.3
model_1First AI model for L1+ reviews. Format: provider/model or just model nameno
model_2Second AI model for L2+ reviews. Format: provider/model or just model nameno
model_3Third AI model for L3+ reviews. Format: provider/model or just model nameno
ai_reviewEnable AI-powered code review (requires at least one API key)notrue
pii_shield_enabledEnable PII-Shield preprocessing for AI review inputnofalse
pii_shield_modePII-Shield mode: auto, local, or remotenoauto
pii_shield_endpointOptional PII-Shield HTTP endpoint for remote redactionno
pii_shield_api_keyAPI key for PII-Shield endpoint (optional)no
pii_shield_timeoutPII-Shield HTTP timeout in secondsno5
pii_shield_fail_closedFail workflow if PII-Shield redaction errors occur (recommended: true for production)notrue
pii_shield_salt_fingerprintNon-secret salt fingerprint for deterministic redaction attestations (sha256:XXXXXXXX)nosha256:00000000
pii_safe_regex_listJSON array of regex patterns that bypass PII-Shield entropy detection (e.g., [{"pattern": "^[a-f0-9]{40,64}$", "name": "SafeGitSHA"}])no[{"pattern": "^[a-f0-9]{40,64}$", "name": "SafeGitSHA"}, {"pattern": "_hash$", "name": "HashFieldSuffix"}]
pii_shield_sanitize_commentsSanitize PR comments with PII-Shield before publishingnotrue
pii_shield_sanitize_bundleSanitize evidence bundles with PII-Shield before writing artifactsnotrue
pii_shield_sanitize_sarifSanitize SARIF output with PII-Shield before uploadnotrue
rubrics_dirDirectory containing rubric YAML files (relative paths allowed)no.guardspine/rubrics
risk_policyPath to YAML file defining custom risk patterns/thresholdsno
bundle_dirDirectory to write evidence bundles (relative to workspace)no.guardspine/bundles
decision_policyDecision engine policy (standard, strict, advisory, or path to custom YAML)nostandard
deliberateEnable deliberation (multi-round cross-checking between AI models)nofalse
auto_mergeAuto-merge clean PRs (decision=merge, tier L0-L3). Requires contents:write permission.nofalse
auto_merge_methodMerge method: merge, squash, or rebasenosquash
guardspine_api_urlGuardSpine backend URL (e.g., https://app.guardspine.ai/api/v1). Enables dashboard sync and Slack alerts.no
guardspine_api_keyGuardSpine service API key for backend authenticationno
namedescription
risk_tierAssessed risk tier (L0-L4)
risk_driversJSON array of top risk drivers
bundle_pathPath to generated evidence bundle
findings_countNumber of policy findings
requires_approvalWhether human approval is required (true/false)
models_usedNumber of AI models that reviewed the change
consensus_riskMulti-model consensus: approve, request_changes, or comment
agreement_scoreHow much models agreed (0.0-1.0)
decisionDecision engine verdict: merge, merge-with-conditions, or block
verdictStable verdict alias (APPROVE | CONDITIONS | BLOCK) mapped from decision for workflows that gate on outputs.verdict.
bundle_idEvidence bundle identifier (empty string if generate_bundle is false). Stable alias for workflows that reference outputs.bundle_id.
mergedWhether PR was auto-merged
merge_shaMerge commit SHA (if merged)