C

cicd-scan · CI Scan

by cicd-scan

POSTBase

$0.02

per call · USD Coin on Base

Static security scan of a CI/CD pipeline config: GitHub Actions, GitLab CI or CircleCI. Detects unpinned actions / images / orbs, template and environment injection, dangerous triggers, over-broad workflow-token permissions, secrets leaked to logs, cache poisoning and more. Returns a verdict (pass, caution, block), a 0-100 risk score and per-finding rule, severity, object, location and a concrete fix hint. Security indicators, not a guarantee.

Endpoint

POST https://api.agentstools.dev/ci/scan

5

Calls / 30d

3

Unique payers / 30d

Sep 8

Last called

exact

Payment scheme

Call this service

TypeScript · @x402/fetch
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";

const account = privateKeyToAccount(process.env.PRIVATE_KEY);
const fetchWithPay = wrapFetchWithPayment(fetch, account);

const res = await fetchWithPay("https://api.agentstools.dev/ci/scan", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    "content": "name: ci\non: pull_request_target\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v4\n      with:\n        ref: ${{ github.event.pull_request.head.ref }}\n    - run: echo \"${{ github.event.issue.title }}\"\n",
    "format": "github-actions"
  }),
});
const data = await res.json();
cURL
curl -X POST \
  "https://api.agentstools.dev/ci/scan" \
  -H "Content-Type: application/json" \
  -d '{"content":"name: ci\non: pull_request_target\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v4\n      with:\n        ref: ${{ github.event.pull_request.head.ref }}\n    - run: echo \"${{ github.event.issue.title }}\"\n","format":"github-actions"}' \
  -H "X-PAYMENT: <signed x402 payment>"

Example response

{
  "config_hash": "sha256:…",
  "counts_by_severity": {
    "critical": 2,
    "high": 1
  },
  "coverage": {
    "dimensions_flagged": [
      "injection",
      "triggers"
    ],
    "objects_by_kind": {
      "job": 1,
      "step": 2,
      "workflow": 1
    },
    "objects_scanned": 4,
    "rules_total": 27
  },
  "disclaimer": "Automated security indicators, not a guarantee.",
  "findings": [
    {
      "dimension": "injection",
      "evidence": "${{ github.event.issue.title }}",
      "fix_hint": "Bind it to an env var and quote the shell reference.",
      "path": "jobs.build.steps[1]",
      "provider": "github-actions",
      "reason": "An attacker-controllable expression is expanded inside a run: script — arbitrary code execution on the runner.",
      "resource": "build.step1",
      "rule_id": "gha.template_injection",
      "severity": "critical"
    }
  ],
  "format": "github-actions",
  "object": "ci_config",
  "object_count": 4,
  "risk_score": 100,
  "ruleset_version": "2026.07.24",
  "verdict": "block"
}

Payment details

Pay to0xf22e558a00d91ee12a1f50c52186fecb8ddff493
AssetUSD Coin · 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913
NetworksBase
Schemesexact

Is this your API?

Pin it to the top of Developer Tools and the homepage with a featured placement.

Get featured →

More from cicd-scan & similar services