sisakulint CI-friendly static linter with autofix, SAST, and semantic analysis for GitHub Actions
Black Hat Asia 2025 Arsenal

Find and auto-fix security holes
in your GitHub Workflows.

The deterministic SAST CLI that AI coding agents call — 38+ heuristic auto-fixes, 52 rules, and taint propagation across steps, jobs, and reusable workflows. Findings are traceable rules, not LLM guesses.

SARIF output reviewdog ready 100% GHSL detection
52
Security rules
38+
Auto-fix rules
100%
GHSL advisory detection
10/10
OWASP CI/CD Top 10

Built for real-world CI/CD security.

Where single-step pattern matchers stop, sisakulint keeps going — tracing untrusted input across steps, jobs, and reusable workflows.

Taint propagation

Tracks untrusted input across steps, jobs, and reusable workflows. No other GitHub Actions scanner does this.

Auto-fix (38+ rules)

Don't just report — fix. Deterministic remediation that turns CI scans into a self-healing loop.

Supply chain

Impostor commits, ref confusion, archived actions, unpinned images. CVSS 9.8 coverage out of the box.

OWASP CI/CD Top 10

Full coverage of all 10 risk categories. Map every finding back to the OWASP framework.

SARIF native

Integrates directly with reviewdog and GitHub Code Scanning. No format adapters needed.

CI-friendly speed

Completes in seconds on large monorepo workflows. Designed for pre-commit and PR checks.

How sisakulint compares.

The GitHub Actions security tooling landscape is fragmented. Each tool addresses a different slice — sisakulint combines deep semantic analysis, deterministic auto-fix, and supply chain coverage in one place.

Capabilitysisakulintactionlintzizmorstepsecuritysemgrepgh adv. sec.(CodeQL)ai agents*
Security-focused rules52Limited24runtimeYes23AI-based
Taint propagationYesProYesPartial
Supply chain detectionsecret-exfil flowLimitedruntime onlyLimitedLimitedLimited
Multi-step analysisYesLimitedYesYes
Auto-fix (target code)38+ heuristic rulesN/ALimitedYes ⚠️Yes ⚠️

*AI Security Agents: Claude Code Security (Anthropic, Feb 2026), Codex Security (OpenAI, Mar 2026). ⚠️ AI-based auto-fix (Copilot Autofix, AI agents) is non-deterministic — when a false positive occurs, there is no specific rule to trace or fix.

4× faster CI builds than CodeQL.

Single-pass parser plus a cached taint graph — no background indexing service, no LLM round-trip. Run it on every push.

Security rule catalog.

Categorized by attack surface. Click any rule to read its detection logic and remediation guidance.

Full OWASP CI/CD Top 10 coverage.

Every risk category maps to one or more sisakulint rules.

CICD-SEC-01

Insufficient Flow Control

improper-access-control · bot-conditions · unsound-contains · ai-action-unrestricted-trigger

CICD-SEC-02

Inadequate IAM

permissions

CICD-SEC-03

Dependency Chain Abuse

known-vulnerable-actions · archived-uses · impostor-commit · ref-confusion · reusable-workflow-taint

CICD-SEC-04

Poisoned Pipeline Execution

dangerous-triggers-* · code-injection-* · envvar-injection-* · envpath-injection-* · output-clobbering · argument-injection · untrusted-checkout-* · request-forgery · ai-action-prompt-injection

CICD-SEC-05

Insufficient PBAC

self-hosted-runners · ai-action-excessive-tools

CICD-SEC-06

Insufficient Credential Hygiene

credentials · artipacked · secrets-in-artifacts · secret-exfiltration · secret-exposure · unmasked-secret-exposure · secrets-inherit

CICD-SEC-07

Insecure System Configuration

timeout-minutes · deprecated-commands · cache-bloat

CICD-SEC-08

Ungoverned 3rd-Party Services

action-list · commit-sha · unpinned-images · dependabot-github-actions

CICD-SEC-09

Improper Artifact Integrity

artifact-poisoning-* · cache-poisoning-*

CICD-SEC-10

Insufficient Logging

obfuscation

Get started in 30 seconds.

Drop it into your CI, run it locally, or auto-fix in place.

macOS

$ brew tap sisaku-security/homebrew-sisakulint $ brew install sisakulint

Linux

# download from the release page $ mv ./sisakulint /usr/local/bin/sisakulint

Common usage

# Scan .github/workflows/ in current directory $ sisakulint # Remote scan — any GitHub repo without cloning $ sisakulint -remote owner/repo # Auto-fix (preview) $ sisakulint -fix dry-run # Auto-fix (apply) $ sisakulint -fix on # SARIF for reviewdog / GitHub Code Scanning $ sisakulint -format "{{sarif .}}"

Frequently asked.

The differences from neighbouring tools, in one place.

How is sisakulint different from actionlint?

actionlint is an excellent syntax and best-practice linter. sisakulint builds on that foundation with 52 security-focused rules, taint propagation across steps and jobs, and 38+ auto-fixes. If actionlint is a spell checker, sisakulint is a security auditor.

How is it different from zizmor?

zizmor performs single-step pattern matching. sisakulint tracks data flow across multiple steps, jobs, and reusable workflows via taint propagation — catching vulnerabilities that single-step analysis fundamentally cannot detect (e.g., TOCTOU in checkout-to-use chains, cross-job secret exfiltration).

Will it slow down my CI?

No. sisakulint is designed for CI/CD and completes in seconds on large monorepo workflows. SARIF output integrates directly with reviewdog and GitHub Code Scanning.

What about false positives?

sisakulint achieves 100% detection on GitHub Security Lab advisories with a low false positive rate. Our Level 2 self-correction system continuously improves rule precision — when a false positive is confirmed, the scanner's own detection logic is automatically fixed and regression-tested.

Can't AI agents (Claude Code Security, Codex Security) replace a static linter?

AI agents excel at finding novel, context-dependent vulnerabilities. However, they operate non-deterministically — when a false positive occurs, there is no specific rule to trace, debug, or fix. sisakulint provides deterministic, reproducible results with traceable rules, while our self-healing architecture bridges the gap by using AI to improve the rules themselves.

Presented at the world's premier security conferences.