Zum Inhalt springen
nosecrets
MITDokumentation
Secret-Scanner · Pre-commit · Open Source

API-Keys gehören nicht ins Repository

nosecrets prüft staged Dateien vor dem Commit auf Secrets, Tokens und auffällige High-Entropy-Strings. Lokal, ohne Account, ohne Cloud-Dienst.

Vor dem Commit

nosecrets scan --staged prüft den exakten staged Inhalt – nicht das Arbeitsverzeichnis.

Offline

Keine API-Aufrufe. Regeln und Entropie-Prüfung laufen lokal und in der eigenen CI.

Klarer Exit-Code

Kritische, hohe und mittlere Funde beenden mit 1 und stoppen den Commit. Sonst 0.

Stand: September 2026 · v0.3.8
50
Regeln in 7 Dateien
4.2
Entropie-Schwelle, Bit/Zeichen
0
Netzwerkaufrufe
0 / 1
Exit-Codes
01 — Überblick

Ein Werkzeug für genau einen Moment: kurz vor dem Commit.

nosecrets ist kein allgemeiner Security-Scanner. Es durchsucht keine Git-History und schickt nichts an einen Dienst. Es prüft die Dateien, die gleich committet werden – dort, wo versehentliche Leaks meistens entstehen.

Dokumentation →
  1. 01Staged statt History — geprüft wird der Inhalt des nächsten Commits
  2. 02Regeln plus Entropie — 50 Signaturen, dazu Shannon-Entropie für unbekannte Tokens
  3. 03Einmal alles — scan --tracked prüft beim Einstieg den kompletten Git-Index
  4. 04Lokal und in CI — derselbe Befehl, ohne Account und ohne SaaS
02 — Ausgabe

Datei, Zeile, Regel, Fingerprint.

TerminalText
$ git add config.ts
$ nosecrets scan --staged
config.ts:3:15 [CRITICAL] Stripe Secret Key (stripe-secret-key) nsi_98d332abab93
  preview: sk_l...TxQ9
$ echo $?
1
TerminalJSON
$ nosecrets scan --staged --format json
[
  {
    "path": "config.ts",
    "line": 3,
    "column": 15,
    "rule_id": "stripe-secret-key",
    "rule_name": "Stripe Secret Key",
    "severity": "critical",
    "fingerprint": "nsi_98d332abab93",
    "preview": "sk_l...TxQ9"
  }
]
03 — Erkennung

50 Regeln in sieben Dateien, dazu eine Entropie-Stufe.

Cloud

AWS, Google Cloud, Azure, DigitalOcean und Cloudflare – acht Regeln in cloud.toml.

Deployment

Netlify, Fly.io, Heroku, Vercel, Railway, Render und Supabase – neun Regeln in deploy.toml.

Code und Chat

GitHub, GitLab, npm, PyPI, Slack und Discord, inklusive Webhook-URLs – elf Regeln in code.toml.

Datenbanken und Mail

Connection-URIs für Postgres, MySQL, MongoDB, Redis und SQL Server, JDBC-Passwörter; SendGrid, Twilio, Mailchimp, Mailgun.

Zahlung und Generisch

Stripe, PayPal und Square; dazu PEM-Private-Keys, Passwort-Zuweisungen und Basic-Auth-Header.

Hohe Entropie

Unbekannte Tokens ab 20 Zeichen, standardmäßig nur nahe Namen wie secret, token oder password. Schweregrad: medium.

04 — Aufbau

Vier Crates, ein Durchlauf.

  1. nosecrets-rules

    Regeln laden

    Liest die eingebauten TOML-Regeln und optional eigene Dateien per --rules.

    TOML--rules
  2. nosecrets-core

    Scannen

    Vorfilter über Schlüsselwörter (Aho-Corasick), dann Regex, Validierung und Entropie.

    regexentropy
  3. nosecrets-filter

    Filtern

    Wendet Pfad-Ignores, Allowlists, Fingerprints und Inline-Kommentare an.

    allowlistnsi_…
  4. nosecrets-report

    Ausgeben

    Text oder JSON, dazu der Exit-Code für Hook und CI.

    textjson
05 — Einstieg

Installieren, einmal alles prüfen, dann jeden Commit.

  1. 1Installieren

    Binary holen

    Per npm, Cargo (cargo install nosecrets-cli) oder curl-Skript für Apple-Silicon-macOS und Linux.

    npm install -g @casoon/nosecrets
  2. 2Bestand

    Einmal alles prüfen

    Scannt alle Git-getrackten Dateien aus dem Index – ohne ungetrackte Dateien.

    nosecrets scan --tracked
  3. 3Hook

    Jeden Commit prüfen

    Ab dann nur die Dateien des nächsten Commits, mit ihrem exakten staged Inhalt.

    nosecrets scan --staged
06 — Konfiguration

Eine TOML-Datei, eine Ignore-Liste, ein Hook.

.nosecrets.tomlIgnores & Entropie
[ignore]
paths = ["vendor/", "node_modules/", "*.lock"]

[allow]
patterns = ["EXAMPLE", "changeme", "YOUR_.*_HERE"]
values = ["AKIAIOSFODNN7EXAMPLE"]

[entropy]
enabled = true
min_length = 20
threshold = 4.2
require_context = true
.nosecretsignoreFingerprints
# .nosecretsignore
# nsi_<hash> oder nsi_<hash>:<pfad-glob>
nsi_98d332abab93
nsi_b2c3d4e5f6a7:src/config.py

# inline im Code
api_key = "sk_test_xxx"  # @nosecrets-ignore
.pre-commit-config.yamlHook
repos:
  - repo: local
    hooks:
      - id: nosecrets
        name: nosecrets
        entry: nosecrets scan --staged
        language: system
        pass_filenames: false
07 — Grenzen

Was nosecrets nicht leistet.

Ein Pre-commit-Scanner senkt das Risiko eines Leaks. Er schließt es nicht aus.

Keine History-Suche

Secrets in älteren Commits findet nosecrets nicht. scan --tracked prüft nur den aktuellen Index.

Regeln decken nicht alles ab

50 Regeln für bekannte Formate. Andere Tokens meldet nur die Entropie-Prüfung – standardmäßig nur mit passendem Variablennamen.

Fehlalarme sind möglich

Vor allem bei der Entropie-Prüfung. Einzelne Funde lassen sich per Fingerprint oder Inline-Kommentar unterdrücken.

Hooks lassen sich umgehen

git commit --no-verify überspringt den Hook. Wer das absichern will, lässt denselben Scan zusätzlich in der CI laufen.

Kein Ersatz für Rotation

Ist ein Secret schon gepusht, hilft kein Hook mehr: Schlüssel beim Anbieter widerrufen und neu ausstellen.

HintergrundWarum ein Scanner nur für den Commit-Moment: der Artikel auf CASOON Insights.Secret Scanner für Git Pre-commit →
08 — FAQ

Häufige Fragen.

Verlässt ein Secret meine Maschine?

Nein. nosecrets ruft keinen externen Dienst auf. Der Scan läuft lokal oder in der eigenen CI, und die Ausgabe zeigt nur eine gekürzte Vorschau des Treffers.

Was passiert, wenn der Pre-commit-Hook etwas findet?

nosecrets beendet sich mit Exit-Code 1, der Commit wird abgebrochen. Die Ausgabe nennt Datei, Zeile, Spalte, Regel und Fingerprint. Blockierend sind Funde mit Schweregrad critical, high oder medium; ohne solche Funde ist der Exit-Code 0.

Wie gehe ich mit Fehlalarmen um?

Über Pfad-Ignores und Allowlists in .nosecrets.toml, über den Fingerprint in .nosecretsignore oder mit dem Inline-Kommentar @nosecrets-ignore. Mit --interactive fragt nosecrets bei jedem Fund, ob er ignoriert werden soll.

Wie führe ich nosecrets in ein bestehendes Repository ein?

Einmal nosecrets scan --tracked ausführen. Das prüft alle Git-getrackten Dateien aus dem Index, ohne ungetrackte Dateien. Danach übernimmt nosecrets scan --staged im Pre-commit-Hook.

Kann ich eigene Regeln ergänzen?

Ja. Mit --rules lädt nosecrets zusätzliche Regeln aus einer TOML-Datei; die Option lässt sich wiederholen. Das Format ist in RULES_SPEC.md im Repository beschrieben.

Funktioniert nosecrets auch in der CI?

Ja. Derselbe Befehl läuft als CI-Schritt, zum Beispiel nosecrets scan --tracked. Mit --format json entsteht maschinenlesbare Ausgabe, der Exit-Code lässt den Build bei blockierenden Funden fehlschlagen.

Ein Befehl vor jedem Commit.

Offline und ohne Account – nosecrets prüft staged Dateien, bevor sie im Repository landen.