NewWhat's new, and a place to report problems

A deleted key is still in your git history.

dagsec reads every commit for leaked credentials and scores every dependency your code pulls in, then reports on the pull request before it merges.

Runs inside your CI. Your code never leaves your runner.

  • npm, PyPI, crates.io, Go, Maven, NuGet
  • Vulnerability data from OSV.dev
  • Your code never leaves your runner
  • GitHub, GitLab, Claude Code, Cursor

How it works

  1. You push, or your agent installs

    A pull request, a merge request or an AI agent's npm install starts the check.

  2. dagsec checks it where it runs

    On your CI runner it reads the full git history for secrets; for every package it checks known vulnerabilities and a 0–100 health score.

  3. You get one clear answer

    A single comment on the pull request with a pass or fail check, or the install stopped with the safe version named.

See it in under four minutes

A pull request with a leaked key, a dashboard scan with an SBOM, and an AI agent stopped before it installs a vulnerable package.

One comment on every pull request

When a pull request adds a credential or depends on a package that is falling apart, dagsec says so in the pull request itself and marks the check as failed. The comment updates on every push instead of piling up.

  • Only what the pull request adds. Old findings on the main branch don't block new work.
  • Values stay masked. The report shows AKIA********, never the secret.
  • False positives stay dismissed. Accepted findings live in .dagsecignore, read from the main branch so a pull request can't silence itself.
github-actions commented on #214

dagsec scan

Failed: 1 secret, 0 of 14 dependencies below 40

SecretFileValue
AWS access key IDconfig/deploy.env:3AKIA********

Rotate this credential: removing it from the code does not remove it from git history.

dagsec / scanFailing

Every dependency gets a health score

A 0 to 100 score from six signals, taken from the package registry, GitHub and OSV.dev. When a signal can't be measured it is left out of the score, not guessed. These two were measured in September 2026.

requests95

Maintained, widely used, three people wrote half the code.

Maintenance
last activity 2 days ago
Bus factor
3 contributors wrote half of all commits
Community
54k GitHub stars
Adoption
278M weekly downloads
License
Apache-2.0
Known vulnerabilities
none in current version
left-pad58

Still downloaded 1.8M times a week from an archived, single-author repository.

Maintenance
repository archived
Bus factor
one contributor
Community
1.3k GitHub stars
Adoption
1.8M weekly downloads
License
WTFPL
Known vulnerabilities
none in current version

Your AI agent asks dagsec before it installs

Coding agents pick package versions from training data that can be a year old, and sometimes invent package names that don't exist. dagsec checks every package against today's vulnerability data before the install runs.

  • Risky installs are blocked. If a version has critical or high vulnerabilities, or the package doesn't exist, the install stops and the agent is told which version to use.
  • Knows what the agent doesn't. Advisories published after the model was trained are included, so the agent gets the version that is safe today.
  • Works where you code. Blocking for Claude Code, Cursor, Gemini CLI, Windsurf, GitHub Copilot, Cline and Codex, and an MCP server for Kiro, Antigravity and other agents.

Install in Claude Code:

/plugin marketplace add hasanerman/dagsec-claude
/plugin install dagsec@dagsec

Included in every plan, Free too. Only package names and install commands are sent, never your code.

Claude Code

Add lodash 4.17.4 to this project

$ npm install lodash@4.17.4

dagsec blocked this install:
- lodash@4.17.4 has 4 critical/high vulnerabilities (CVE-2019-10744, CVE-2021-23337, …). Install lodash@4.18.0 or later instead.

That version has known critical vulnerabilities, so I installed lodash@4.18.1 instead. The API is the same.

The dagsec app for Windows and macOS

Everything on app.dagsec.net, plus the parts that only work on your own computer. Sign in with GitHub and the app finds your AI coding tools and protects them in one click.

  • Connect Claude Code, Cursor, Gemini CLI, Windsurf, GitHub Copilot, Cline, Codex, Kiro and Antigravity in one click. You see every change before it is made, settings are backed up first, and your API key stays in the Windows credential store or macOS Keychain, not in a config file.
  • Scan a repository on this computer, free on every plan. The whole scan runs locally: your code never leaves the machine.
  • Stop secrets before they are committed. Turn on commit protection for a repository and a commit that adds a key to code is stopped on the spot, even offline.
  • Know the moment something is blocked. A desktop notification tells you when dagsec stops an install. The app waits in the tray or menu bar and updates itself, with every update signed.
  1. Windows: run dagsec-setup.exe. If SmartScreen appears, choose More info and Run anyway: the app isn't code-signed yet.
  2. macOS: open dagsec.dmg and drag dagsec to Applications. The first time, right-click it and choose Open, or allow it under System Settings → Privacy & Security.
  3. Sign in with GitHub, then open Connections and connect your AI tools.
  4. Optional, off by default: Settings → Terminal adds a dagsec command and checks the installs you type in the terminal.

Windows 10 and 11 (64-bit), macOS 11 or later (Apple Silicon and Intel). Removing the app takes out everything it added to your tools and repositories.

The dagsec desktop app scanning a project

Set up in one file

  1. Sign in with GitHub and create an API key on the API keys page.
  2. Save the key as a repository secret named DAGSEC_API_KEY (Settings → Secrets and variables → Actions).
  3. Add .github/workflows/dagsec.yml to the repository and open a pull request. dagsec comments with its report and marks the check.

npm, PyPI, crates.io, Go, Maven, Gradle and NuGet, across every manifest in a monorepo. Public repositories are free; private repositories need a paid plan.

.github/workflows/dagsec.yml
name: dagsec
on: pull_request
permissions:
  contents: read
  pull-requests: write
  id-token: write
jobs:
  dagsec:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: hasanerman/dagsec-action@v1
        with:
          api-key: ${{ secrets.DAGSEC_API_KEY }}
          fail-under: 40

One tool instead of three

Secret scanning, dependency auditing and AI agent guardrails usually come from separate products, each with its own setup and bill.

Usuallydagsec
Leaked secrets across the full git historyA secret scanner Included
Known vulnerabilities in pinned versionsA dependency (SCA) tool Included
Health score for abandoned or single-maintainer packagesManual review Included
Stop an AI agent's risky install before it runsNot covered Included
SBOM (CycloneDX) and license policyA separate compliance tool Included
Runs on your CI runner; code never uploadedOften a cloud upload Included

What dagsec does not do

  • Upload your code. The GitHub Action and the GitLab CI job run entirely on your CI runner.
  • Scan container images, infrastructure or running systems.
  • Confirm that every kind of credential is still active. GitHub, Stripe and Slack tokens are checked live; treat every other finding as exposed.
  • Check Ruby or PHP dependencies yet. Go, Java and .NET get vulnerability checks; health scores cover npm, PyPI and crates.io.

Questions

Do you see my code?

No. The GitHub Action and the GitLab job run on your own CI runner. dagsec's server only hands out the scanner and receives the result's counts. Dashboard scans clone public repositories, or private ones you connect through the GitHub App, and delete the clone right after.

What do AI agent checks send?

Only the install command and the package names and versions, for example npm install lodash@4.17.4. File contents and other commands never leave your machine.

What if dagsec is down?

Your work continues. When dagsec can't be reached, CI and agent checks let things through instead of blocking you, and the failure is logged.

Which languages are supported?

npm, PyPI, crates.io, Go, Maven, Gradle and NuGet for vulnerabilities; npm, PyPI and crates.io also get the health score. Secret scanning works on any repository.

Can I use it on private repositories?

Yes, on the Student, Pro and Team plans. The Free plan covers public repositories, verified through GitHub's or GitLab's signed CI identity.

Where is data stored?

On a dedicated server at Hetzner in Germany (EU). Security details and the data processing agreement are on the Security page.

Pricing

Start free on public repositories. Upgrade when you need private repositories or more runs.

Free

$0 / month

For open-source projects and trying dagsec out.

  • Public repositories
  • 100 Action runs a month
  • 500 AI agent checks a month
  • 5 dashboard scans a month
Start free

Student

$11 / month

For students with a school email address.

  • Private and public repositories
  • 1,000 Action runs a month
  • 5,000 AI agent checks a month
  • 100 dashboard scans a month
Choose Student

Team

$45 / month

For companies running dagsec across many repositories.

  • Private and public repositories
  • 50,000 Action runs a month
  • 200,000 AI agent checks a month
  • 2,000 dashboard scans a month
  • Up to 10 people share the plan
  • One install policy and audit log for the team's AI agents
  • Autopilot: every repository analysed daily, with the updates to make
  • Priority email support
Choose Team

Prices in US dollars. Tax is added at checkout where it applies. Cancel any time; 14-day money-back guarantee.

See it on a real repository

Sign in with GitHub and scan any public repository. No card needed.

Start free