
Ci Sentinel
io.github.Baneado98Published by GitHub account Baneado98v0.1.0Updated Oct 24, 2026
Multi-CI security scanner with a live threat-intel feed of compromised CI components
Overview
A hosted CI security scanner that lets an assistant audit GitHub Actions, GitLab CI and five other pipeline configs for injection and supply-chain flaws.
- What you can do
- Audit CI pipeline configuration files: pass a map of workflow filenames to YAML, or a single workflow source, and get a CRITICAL/VULNERABLE/RISKY/HARDENED verdict with per-kind issue counts on the free tier. Files are auto-routed to analyzers for GitHub Actions, GitLab CI/CD, Jenkins, CircleCI, Azure Pipelines, Bitbucket Pipelines and Travis CI. The paid deep audit returns each finding with file:line, the full injection taint path, the transitive action supply-chain graph, a concrete fix with corrected snippet and unified diff, an A–F compliance scorecard and a SARIF report. Checks include expression and variable injection, pwn-request checkouts, token permissions, unpinned actions/orbs/pip,
- When to use it
- Useful when reviewing or hardening CI/CD pipeline definitions and you want an assistant to spot injection, secret-exposure and supply-chain risks that a plain YAML linter misses, including known-compromised actions and tag rewrites.
- Requirements
- A remote MCP endpoint; no authentication is declared. The README also documents an npm client started with npx, which is a thin client that sends the analysis to the hosted server. A prepaid key in the CI_SENTINEL_KEY environment variable is needed for the paid deep audit, or per-call USDC payment.
Installation
In SourceWeft
- Open Ci Sentinel in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.Baneado98%2Fci-sentinel/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config.
{
"mcpServers": {
"ci-sentinel": {
"type": "http",
"url": "https://ci-sentinel.vercel.app/mcp"
}
}
}README
ci-sentinel 🛡️
Security auditor for SEVEN CI ecosystems — GitHub Actions, GitLab CI/CD, Jenkins, CircleCI, Azure Pipelines, Bitbucket Pipelines and Travis CI — finds the supply-chain and injection flaws a YAML linter can't see, before an attacker's pull/merge request runs code with your repository secrets.
Available as an MCP server (for Claude / Cursor / any agent) and a pay-per-call HTTP API (x402 USDC or a prepaid card key).
Give it your .github/workflows/*.yml, .gitlab-ci.yml, Jenkinsfile,
.circleci/config.yml, azure-pipelines.yml, bitbucket-pipelines.yml and/or
.travis.yml (each file is auto-routed to the right analyzer) and get a
CRITICAL / VULNERABLE / RISKY / HARDENED verdict with the exact flaws.
What it catches that a linter can't
…and the same depth for GitLab CI/CD (.gitlab-ci.yml)
…and five more CI systems, same taint model
…plus two deep cross-domain detectors a one-shot agent can't replicate
Each analyzer knows the SAFE variables (SHAs, numeric ids, trusted slugs —
BITBUCKET_COMMIT, TRAVIS_PULL_REQUEST, pipeline.git.revision, …) and the
SAFE OIDC trusts (sub pinned to repo:org/repo:ref:refs/heads/main /
:environment:prod with aud set) so it doesn't flag every $VAR or every
trust. Zero false positives on hardened configs.
It is a real static analyzer: a line-aware workflow YAML parser → a model of
triggers/jobs/steps/permissions/actions/outputs/needs → an inter-step/inter-job
taint resolver + permission + supply-chain detectors → a scored verdict with
per-finding file:line, the full taint path, concrete remediation, and a
SARIF 2.1.0 report (with codeFlows) you can upload to GitHub code scanning.
…and it doesn't just flag — it FIXES, and it GRADES
MCP server (free)
Tool: audit_ci_security. Pass files (a map of workflow filename → YAML) or
source (one workflow). The free tier returns the verdict and how many issues
of each kind were found.
Deep audit (deep: true) — two ways to pay
The deep audit returns every finding with file:line, the full inter-step/
inter-job injection taint path, the transitive action supply-chain graph, a
concrete fix (corrected snippet + unified diff) per finding, an A–F compliance
scorecard with a per-control breakdown, and a SARIF 2.1.0 document with inline
fixes (uploadable to GitHub code scanning via github/codeql-action/upload-sarif).
- 💳 Card (Stripe) — buy a prepaid key at
https://ci-sentinel.vercel.app/pro/checkout, then set"env": { "CI_SENTINEL_KEY": "<key>" }in your MCP config. - 🪙 x402 (USDC) — AI agents pay per call automatically (USDC on Base), no signup.
HTTP API
Why hosted? (the moat)
The npm package is a thin client: it runs no analysis locally. The parser,
taint engine, action-graph resolver and detector knowledge base run server-side
only, behind the paywall — so the premium material (findings, evidence, taint
paths, remediation) never lands on the caller's machine. A npm pack ships only
dist/mcp.js, dist/mcpServer.js and dist/types.js; the engine is never in the
tarball (verified automatically by npm run test:moat).
How the live feed stays live (the update pipeline)
The threat-intelligence feed is ingested, not hard-coded. A periodic job runs server-side:
- Fetch advisories from two public sources (no paid keys):
- GitHub Security Advisory DB —
GET /advisories?ecosystem=actions(public;GITHUB_TOKENonly raises the rate limit, it is not required). - OSV.dev — the
GitHub Actionsecosystem, queried for the components we already track plus everything GHSA just surfaced (so OSV enriches them).
- GitHub Security Advisory DB —
- Normalize each advisory into a
ThreatRecord— owner/name split, incident class inferred from the advisory text (tag-rewrite / maintainer-compromise / malicious / CVE…), severity bucketed, the affected version range parsed into a selector, the fixed version captured (so an upgraded pin does not fire). - Merge the rows onto the curated seed (
ingestFeed: union refs, keep the worst severity, widen the affected range, de-dup by identity). - Store the snapshot in Cloudflare KV. Every
/pro/auditreads it back viakvFeedProvider, falling back to the compiled seed if KV is cold — so the detector is never blocked and never worse than the static baseline.
Schedule it with Vercel Cron ({ "path": "/internal/refresh-feed", "schedule": "0 */6 * * *" }, guarded by FEED_REFRESH_TOKEN) or a scheduled
GitHub Action that runs node scripts/refreshFeed.mjs. GET /feed/status reports
the live snapshot's version, generatedAt and record count — the public freshness
proof. None of this ships in the npm client.
Development
Heuristic static analysis of the workflow YAML you provide — it cannot see repo-level default token permissions, branch protections or org policy, and does not execute the pipeline. Treat findings as leads to verify.
Source & docs: https://github.com/Baneado98/ci-sentinel · MIT
Source: README.md at commit 0e3f188
Tools
0Version history
1- v0.1.0LatestSep 16, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listedRequired15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts