Communitygithub.com

maxgfr/secretgate

Lokale Secrets-Firewall für Coding-Agenten – schwärzt Zugangsdaten in Prompts, Dateilesevorgängen und Tool-Ausgaben, bevor sie das LLM erreichen (Claude Code, Codex, OpenCode). Kein Proxy, kein npm, deterministische Hooks.

Was ist secretgate?

secretgate ist eine lokale Sicherheitslösung, die verhindert, dass vertrauliche Anmeldeinformationen wie API-Schlüssel oder Passwörter versehentlich an KI-Assistenten (LLMs) wie Claude Code, Codex oder OpenCode gesendet werden. Es fungiert als deterministischer Hook, der eingehende und ausgehende Daten auf vertrauliche Inhalte überprüft. Im Gegensatz zu cloudbasierten Alternativen erfordert secretgate keinen Proxy, keine npm-Installation und keine externen Schlüssel. Seine Funktionsweise basiert auf über 200 aus dem bekannten Tool „gitleaks“ abgeleiteten Regeln, erweitert um Entropieprüfungen und Luhn-Validierung für Kreditkartennummern. Es bietet eine Funktion namens „Redact-and-Restore“: In vielen Fällen werden gefundene Secrets durch stabile Platzhalter ersetzt, sodass der Agent dennoch mit Dateien arbeiten kann, ohne die echten Werte preiszugeben. Wenn der Agent diese Platzhalter zurückschreibt, werden automatisch die originalen Werte eingesetzt. secretgate unterstützt verschiedene Agenten und kann über das Kommando `node scripts/secretgate.mjs` installiert und konfiguriert werden. Es schützt vor Datenlecks, indem es Prompts blockiert, Dateien mit sensiblen Mustern (z. B. `.env*`, `~/.ssh`) vom Lesen ausschließt und Tool-Ausgaben säubert. Zusätzlich verwaltet es eine White-List für Ausnahmen, hat eine Statusfunktion, eine Scan-Funktion (`scan`), eine Pipe-Funktion (`pipe`) und eine Deinstallationsroutine. Die Lösung ist darauf ausgelegt, ohne Eingriff des Benutzers im Hintergrund zu arbeiten, nachdem sie einmal eingerichtet wurde, und schützt so kontinuierlich vor der Offenlegung von Anmeldeinformationen in KI-Agenten-Workflows.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor✓OpenCode
npx skills add maxgfr/secretgate

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

secretgate — lokale Secrets-Firewall für Coding-Agenten

Ein Credential darf niemals zu einer LLM-API gelangen. secretgate setzt das lokal durch, mit einer deterministischen Engine (node scripts/secretgate.mjs, kein npm install, keine Schlüssel): 221 Regeln, konvertiert von gitleaks + Entropie-Gates + Luhn-geprüfte Karten. Wo die Hook-API des Agenten das Umschreiben erlaubt, werden Secrets auf stabile Platzhalter redacted und lokal wiederhergestellt, wenn der Agent sie zurückschreibt (redact-and-restore); wo nur Blocken erlaubt ist (Prompts in Claude Code/Codex), wird der Prompt mit einer redacted Kopie blockiert, um ihn erneut zu senden.

Aktivierung → Installation (dies zuerst tun, wenn der Skill ausgelöst wird)

Wenn dieser Skill aktiviert wird (der Nutzer bittet um Secrets-Schutz / secretgate-Installation / Einrichtung der Firewall), führen Sie den Doctor aus und verkabeln Sie alles, was noch nicht verkabelt ist. secretgate ist ein Skill, kein npm-Paket — Sie führen sein eigenes Bundle aus:

node scripts/secretgate.mjs status                  # was bereits verkabelt ist
node scripts/secretgate.mjs install --claude-code   # hooks + permissions.deny in ~/.claude/settings.json
node scripts/secretgate.mjs install --codex         # ~/.codex/hooks.json + [features] hooks = true
node scripts/secretgate.mjs install --opencode      # eigenständiges Plugin in ~/.config/opencode/plugin/
node scripts/secretgate.mjs install --all           # alle drei

--project beschränkt die Claude-Code-Installation auf ./.claude/settings.json. install sichert eine Kopie des Bundles unter ~/.secretgate/bin/ und verdrahtet den Agenten, DIESE aufzurufen, sodass es auch nach dem Löschen des Skill-Caches funktioniert. Weisen Sie den Nutzer stets an, die Agenten-Sitzung danach NEU ZU STARTEN — Hooks werden beim Start geladen. Sobald verkabelt, erfolgt die Redaktion automatisch und deterministisch (der Hook erledigt das, nicht Sie).

Befehle

BefehlWas er tut
statusDoctor: Verkabelung pro Agent, Engine, Vault-Health, Einschränkungen
`scan <DateiVerz.
pipestdin -> stdout mit auf Platzhalter redacted Secrets
allow <Wert> / allow --rule <ID> / allow --path <Glob>Whitelist (Werte als SHA-256 gespeichert, nie im Klartext)
vault list / vault clearPlatzhalter-Zuordnungen anzeigen (zeigt niemals Secrets)
uninstall --<Agent>Entfernt genau das, was install hinzugefügt hat

Wie der Schutz funktioniert (dem Nutzer auf Nachfrage erklären)

  • Prompts: Claude Code/Codex → blockiert mit einer redacted Kopie ([allow-secret] hinzufügen, um einmal zu umgehen). OpenCode → stillschweigend an Ort und Stelle redacted.
  • Dateizugriffe: .env*, Schlüssel, ~/.aws, ~/.ssh … werden direkt verweigert (.env.example/.sample/.template bleiben lesbar). Der Wert gelangt nie ins Modell.
  • Tool/Bash-Ausgaben: redacted auf SECRETGATE_<Hash>-Platzhalter (Claude Code + OpenCode; Codex kann Ausgaben noch nicht umschreiben).
  • Wiederherstellung: Wenn der Agent einen Platzhalter in eine Datei schreibt (Write/Edit), landet der ECHTE Wert auf der Platte. Bash-Wiederherstellung ist standardmäßig AUS (Prompt-Injection-Exfiltrationsschutz) — aktivieren mit restoreBash: true in ~/.secretgate/config.json.
  • Saubere Tool-Aufrufe: Der Claude-Code-Pre-Tool-Use-Hook antwortet mit minimalem JSON ({}, entscheidungsfrei = normaler Berechtigungsablauf) anstelle von leerem stdout. Eine leere Hook-Ausgabe löst einen Claude-Code-Bug (anthropics/claude-code#77782) aus, der bei jedem passenden Tool-Aufruf eine interaktive Berechtigungsabfrage erzwingt, selbst im Automatikmodus — und der dokumentierte Entscheidungswert "defer" wird von Claude Code <= 2.1.212 abgelehnt, daher ist {} die Enthaltung, die überall funktioniert.

NICHT abgedeckt (seien Sie ehrlich zum Nutzer)

  • Claude Code @file Erwähnungen von Inline-Inhalten ohne Auslösen von Tool-Hooks (permissions.deny-Regeln sind dort der einzige Schutz).
  • Codex nicht-interaktive Läufe (codex exec) — Upstream-Bug, Hooks werden nicht ausgelöst.
  • Bilder/Screenshots/Zwischenablage, MCP-Tool-Verkehr und alles, was bereits vor der Installation im Gespräch war.
  • Wenn ein Hook-Prozess gekillt wird/zeitlich ausläuft, fährt der Agent fort (agentenseitiges Fail-Open); secretgate selbst schlägt bei eigenen Fehlern für Pre-Events GESCHLOSSEN fehl.
  • Ein blockierter Prompt wird von Claude Code lokal zurückgespiegelt (Original prompt: im Terminal und im claude -p JSON result) — die API sieht ihn nie, aber behandeln Sie gepipte, kopflose Ausgaben als sensibel.

False Positives

Bevorzugen Sie die engste Korrektur: inline # pragma: allowlist secret (oder gitleaks:allow) in der Zeile → allow <Wert> (gehasht) → allow --path <Glob> → allow --rule <ID> (letztes Mittel). Ein Projekt kann zusätzliche Whitelist-Einträge in .secretgate.json festschreiben ({"allowlist": {"paths": […]}}).

Verwandte Skills