Your pipelines are code. So we read them.
Your workflow files read like code: injection, floating actions, tokens and trust, each with its fix.
- CriticalWorkflow injectionrelease.yml:24
run: echo "${{ github.event.pull_request.title }}"env: TITLE: ${{ github.event.pull_request.title }}run: echo "$TITLE"Fix readyThe title moves to an environment variable, out of the shell.
Pipeline flaws, found in the file.
Workflow injection
- ${{ github.event.pull_request.title }}
Unpinned actions
- actions/checkout@v3
- actions/setup-node@main
Over-privileged tokens
- permissions: write-all
OIDC trust
- "sub": "repo:acme/*"
The injection, fixed in the workflow.
As written
run: echo "${{ github.event.pull_request.title }}"The pull request title reaches run: in the shell.
With the fix
env: TITLE: ${{ github.event.pull_request.title }}run: echo "$TITLE"The title moves to an environment variable, out of the shell.
Fixed by your agent, in the session.
Your agent reads these findings as it writes, and fixes them in the same session.
- CI/CDScans the repository on every push.Found
- VibeDefendServes the finding to your coding agent.Served
- Your agentFixes it in the session.Fixed
- CommitGoes in without the flaw.Clean
Claude Code
Cursor
WindsurfGitHub Copilot
OpenAI Codex
Start with one repository.
Connect GitHub, GitLab, Bitbucket or Azure DevOps, pick a repository, and the first scan starts.
In detail
Six pipeline flaws, found in the file.
- CWE-77, CWE-78
Workflow injection
Unpinned actions
Over-privileged tokens
OIDC trust
Secret leaks
Cache and artefact poisoning
Everything it checks
Catch the misconfig before the runner runs.
Most pipeline incidents are already visible in the YAML. We read it the way an attacker does.
Pipelines as a first-class asset
GitHub Actions, GitLab CI, Jenkinsfile
Findings flow to the PR
Six pipeline flaws in the file.
We parse your workflows into an AST and a dataflow graph, then run our own rule packs.
Workflow injection (CWE-77 / 78)
Unpinned and untrusted actions
Over-privileged tokens
OIDC trust misconfigurations
Secret leakage patterns
Cache and artefact poisoning
From YAML to fix
The YAML is unsafe.
Judged before a run.
Pinned and scoped.
Connect the repo, the rest is automatic.
Connect GitHub or GitLab. Our scanners pull the pipeline files and run on every push (or on demand). Nothing to install in your CI, no privileged runner step. Findings flow into the unified dashboard and into your PR review.
Six CI dialects feed one parser: GitHub Actions, GitLab CI, Bitbucket, Azure DevOps, Jenkins, CircleCI.
Commit a3f9c2e touches release.yml. Two runs leave the build: #4821 and #4822.
At the gate, release.yml is read as an attacker would: trigger, permissions, every uses: and run:.
#4821 is blocked: pull_request_target with contents: write and an unpinned action never reach the deploy job.
#4822 ships to prod-eu: pinned SHA, read-only token, the PR title kept out of the shell.