Coding-Assistenten wie Claude Code oder Cursor schlagen nicht nur Codezeilen vor: Sie durchsuchen das Projekt, öffnen Dateien, starten Befehle und lesen deren Ausgaben. Das macht sie nützlich. Es ist auch der Grund, warum eine .env-Datei, ein API-Schlüssel oder ein Datenbankpasswort in ihren Kontext gelangen und anschließend an den Dienst des Modellanbieters übermittelt werden kann. Dieser Leitfaden beschreibt die konkreten Risiken, die Einstellungen, die die Anbieter in ihrer offiziellen Dokumentation vorsehen, und was eine lokale Kontrollschicht ergänzen kann.
Wie ein Secret in den Kontext eines Assistenten gelangt
Dafür braucht es keinen spektakulären Fehler. Meist gelangt das Secret durch einen ganz gewöhnlichen Vorgang dorthin:
- Das Lesen einer Konfigurationsdatei. Um zu verstehen, warum eine Verbindung fehlschlägt, öffnet der Assistent die .env, appsettings.json oder eine Konfigurationsdatei mit der vollständigen Verbindungszeichenfolge.
- Ein Terminalbefehl. Ein „cat“, ein „grep“ über das ganze Projekt, die Anzeige der Umgebungsvariablen oder der Logs einer Anwendung können sensible Werte in der Ausgabe sichtbar machen, die der Assistent liest.
- Das Einfügen in die Unterhaltung. Der Entwickler fügt selbst eine Fehlermeldung oder einen Konfigurationsauszug ein, der den Schlüssel enthält.
- Angebundene Werkzeuge. Ein MCP-Server oder ein Sendebefehl kann Daten an einen Drittdienst hinausgeben.
Einmal im Kontext, gehört das Secret zu dem, was an das Modell gesendet wird. Der Assistent kann es außerdem in eine Datei, einen Commit oder eine Antwort übernehmen. Offengelegte Secrets bleiben ohnehin ein massives Problem: In seinem am 17. März 2026 veröffentlichten Bericht hat GitGuardian 28,65 Millionen neue fest codierte Secrets in öffentlichen Commits auf GitHub im Jahr 2025 gezählt, 34 % mehr als ein Jahr zuvor. Derselbe Bericht zählt 24.008 offengelegte Secrets in Konfigurationsdateien von MCP-Servern.6 Die OWASP empfiehlt ihrerseits, Secrets zentral zu verwalten (Speicherung, Zugriff, Rotation), statt sie im Klartext im Code oder in der Konfiguration zu lassen.5
DB_PASSWORD=Xk92!pLmQ7[GEHEIMNIS_1]
PAYMENT_API_KEY=a8F3kq0W…Zt[GEHEIMNIS_2]
SMTP_PASSWORD=mT4#vR8w[GEHEIMNIS_3]
Claude Code: Berechtigungen und Hooks
Die Dokumentation von Claude Code beschreibt ein Berechtigungssystem, das sich in Einstellungsdateien konfigurieren lässt. Um zu verhindern, dass das Werkzeug eine Datei oder einen Ordner liest, empfiehlt sie, eine Deny-Regel für das Lesen dieses Pfads hinzuzufügen, zum Beispiel Read(./.env) oder Read(./secrets/**).1 Die Referenzseite der Einstellungen liefert ein kopierfertiges Beispiel, um Dateien mit API-Schlüsseln, Secrets oder Umgebungsvariablen auszuschließen.3 Die Dokumentation stellt nebenbei klar, dass eine .claudeignore-Datei keine Wirkung hat: Ihre Einträge müssen als Deny-Regeln übernommen werden.1
Diese Regeln gelten für die integrierten Lesewerkzeuge, aber auch für die Terminalbefehle, die Claude Code erkennt, etwa cat, head oder tail. Die Dokumentation nennt selbst die Grenze: Sie gelten nicht für einen Befehl, der Dateien liest, ohne sie zu benennen, wie eine rekursive Suche aus dem Ordner heraus, und auch nicht für ein Skript, das selbst Dateien öffnet. Für einen Schutz auf Systemebene verweist sie auf die Sandbox von Claude Code.1
Für Organisationen sieht Anthropic verwaltete Einstellungen („managed settings“) vor, die Administratoren verteilen und die Benutzer- und Projekteinstellungen bis auf wenige Ausnahmen nicht umgehen können.1 Schließlich bietet Claude Code Hooks: Befehle, die zu bestimmten Zeitpunkten automatisch ausgeführt werden. Der Hook, der vor dem Aufruf eines Werkzeugs läuft (PreToolUse), kann diesen blockieren.2 Auf diesem offiziellen Mechanismus bauen ergänzende Kontrollen auf, darunter die von Tacite-IA.
Cursor: die Datei .cursorignore
In Cursor lassen sich in einer Datei .cursorignore im Stammverzeichnis des Projekts die Ordner und Dateien festlegen, auf die der Editor für seine KI-Funktionen nicht zugreifen soll. Laut Dokumentation stehen .env*-Dateien bereits auf der Liste der standardmäßig ignorierten Dateien.4
Dieselbe Seite nennt klar zwei Grenzen: Die Terminal- und MCP-Server-Werkzeuge, die der Agent nutzt, können den Zugriff auf durch .cursorignore erfasste Dateien nicht blockieren, und obwohl Cursor ignorierte Dateien blockiert, ist ein vollständiger Schutz wegen der Unvorhersehbarkeit von Sprachmodellen nicht garantiert.4 Diese Hinweise gehören in die Risikoanalyse jedes Teams, das das Werkzeug nutzt.
Was die integrierten Einstellungen nicht abdecken
Die integrierten Einstellungen sind eine unverzichtbare erste Schicht. Sie beruhen jedoch auf Pfadlisten: Ein Secret in einer unauffällig benannten Datei (config.local.json, notes.txt), in einem Log oder in der Ausgabe eines Befehls entgeht einer Regel, die für „.env“ geschrieben wurde. Sie müssen außerdem Projekt für Projekt konfiguriert oder von der Organisation zentral verwaltet werden, sonst fängt jeder Entwickler bei null an.
| Kriterium | Deny-Regeln | Ausschlussdatei | Lokale Kontrolle |
|---|---|---|---|
| Verhindert das direkte Lesen einer .env-Datei | Ja | Ja | Ja |
| Deckt Terminalbefehle ab | Teilweise | Nein | Teilweise |
| Erkennt ein Secret in einer unauffällig benannten Datei | Nein | Nein | Ja |
| Bietet eine anonymisierte Kopie an | Nein | Nein | Ja |
Die französische Behörde für Cybersicherheit ANSSI empfiehlt eine vorsichtige Haltung beim Einsatz generativer KI.7 Auf Coding-Assistenten übertragen heißt das: Secrets möglichst nicht auf dem Gerät, Deny-Regeln dort, wo sie bleiben, und eine Kontrolle, die den Inhalt selbst betrachtet. Auf Seiten des Repositorys fängt die Secret-Analyse der Plattformen, etwa das Secret Scanning von GitHub, das den gesamten Git-Verlauf durchsucht, einen Teil der Fehler im Nachhinein ab.8
Die Tacite-IA-Schicht: Lesen blockieren und eine Kopie anbieten
Tacite-IA wird auf dem Gerät installiert und stützt sich auf die offiziellen Hooks der Coding-Assistenten. In Claude Code wird jede Aktion geprüft, bevor sie stattfindet:
- Lesen einer sensiblen Datei (.env, SSH-Schlüssel, Cloud-Zugangsdaten, private Schlüssel, Konfigurationsdateien mit Secrets): Das Lesen wird angehalten und eine Bestätigung angefordert, oder es wird verweigert, wenn die Organisation das so festgelegt hat.
- Analyse des Inhalts, nicht nur des Namens: Eine Datei, die über das Lesewerkzeug oder einen Befehl wie cat oder grep gelesen wird, wird auf dem Gerät analysiert. Enthält sie Secrets oder personenbezogene Daten, schreibt Tacite-IA eine anonymisierte Kopie und gibt deren Speicherort an: Der Assistent kann mit der Struktur arbeiten, ohne die Werte zu sehen.
- Sendebefehle: Das Senden einer Datei nach außen (curl, scp…) oder ein Versuch, den Schutz zu deaktivieren, löst eine Bestätigung aus.
- Eingetippte Nachrichten: Ein in die Unterhaltung eingefügter Schlüssel wird vor dem Senden erkannt, und die anonymisierte Fassung wird angeboten.
Die Kontrollen erstrecken sich auf die anderen unterstützten Coding-Assistenten (Cursor, Windsurf, OpenAI Codex, Gemini CLI, Copilot CLI), soweit deren eigene Hooks dies erlauben. Wie jede Befehlsanalyse sieht auch die von Tacite-IA nicht, was ein Skript von sich aus öffnet: Die Sandbox und eine gute Verwaltung der Secrets bleiben nötig. Die Analyse erfolgt ohne KI, und nichts wird an unsere Server gesendet: Die Konsole erhält nur Datentypen und Entscheidungen, nie den Inhalt.
Bewährte Praktiken im Projekt
- Secrets aus dem Repository nehmen.env-Datei von git ignoriert, Vorlage .env.example ohne Werte.
- Einen Secrets-Manager bevorzugenTresor oder beim Start injizierte Variablen statt einer Klartextdatei.
- Die Reichweite der Schlüssel begrenzenEntwicklungsschlüssel, minimale Rechte, Testumgebung.
- Die Rotation einplanenEin offengelegter Schlüssel wird widerrufen und ersetzt, ohne zu warten.
- Den Assistenten konfigurierenDeny-Regeln oder Ausschlussdateien für sensible Pfade.
- Eine Kontrolle auf dem Gerät ergänzenFür die Fälle, die die Einstellungen nicht abdecken.
Diese Regeln verdienen einen Platz in der Richtlinie der Organisation, neben denen für Chat-Assistenten: Unsere Vorlage für eine KI-Richtlinie nennt Zugangsdaten unter den Daten, die nie eingegeben werden dürfen. Für andere Datenarten siehe unseren Leitfaden, wie Sie Daten vor ChatGPT anonymisieren.
Häufige Fragen
Kann Claude Code meine .env-Datei lesen?
Ja, wenn es die Berechtigung dazu hat: Das Werkzeug liest die Dateien des Projekts, um seine Aufgaben zu erledigen. Die Dokumentation von Claude Code erklärt, wie man das mit Deny-Regeln für das Lesen verhindert, zum Beispiel Read(./.env) und Read(./secrets/**), und stellt klar, dass eine .claudeignore-Datei keine Wirkung hat.
Genügt die Datei .cursorignore, um meine Secrets zu schützen?
Sie ist ein nützlicher Schutz, und .env*-Dateien werden standardmäßig ignoriert. Die Dokumentation von Cursor stellt aber klar, dass die Terminal- und MCP-Werkzeuge des Agenten den Zugriff auf ignorierte Dateien nicht blockieren können und dass ein vollständiger Schutz nicht garantiert ist. Besser ist es, keine Secrets im Klartext im Projekt zu halten und eine ergänzende Kontrolle hinzuzufügen.
Was tun, wenn ein API-Schlüssel an einen Coding-Assistenten gesendet wurde?
Ihn als offengelegt betrachten: widerrufen, einen neuen erstellen und die Nutzungsprotokolle des betroffenen Dienstes prüfen. Gab der Schlüssel Zugriff auf personenbezogene Daten, ist zu prüfen, ob eine Verletzung des Schutzes personenbezogener Daten im Sinne der DSGVO vorliegt.
Können Secrets über einen Terminalbefehl abfließen?
Ja. Eine Datei anzeigen, im ganzen Projekt suchen oder die Umgebungsvariablen auflisten erzeugt eine Ausgabe, die der Assistent liest. Regeln, die sich auf Dateinamen beziehen, decken nicht alle diese Fälle ab, wie die Dokumentationen von Claude Code und Cursor einräumen; die Sandbox und eine Kontrolle, die den Befehl und seinen Inhalt analysiert, verringern dieses Risiko.
Quellen
- Configure permissions. Dokumentation von Claude Code, Anthropic. Abgerufen am 8. Oktober 2026.
- Hooks reference. Dokumentation von Claude Code, Anthropic. Abgerufen am 8. Oktober 2026.
- Settings reference: exclude sensitive files. Dokumentation von Claude Code, Anthropic. Abgerufen am 8. Oktober 2026.
- Ignore file. Dokumentation von Cursor (Anysphere). Abgerufen am 8. Oktober 2026.
- Secrets Management Cheat Sheet. OWASP Cheat Sheet Series. Abgerufen am 8. Oktober 2026.
- The State of Secrets Sprawl 2026. GitGuardian, 17. März 2026. Abgerufen am 8. Oktober 2026.
- Recommandations de sécurité pour un système d’IA générative. ANSSI (französische Behörde für Cybersicherheit), 29. April 2024. Auf Französisch. Abgerufen am 5. Oktober 2026.
- About secret scanning. GitHub Docs. Abgerufen am 8. Oktober 2026.
ChatGPT ist eine Marke von OpenAI, Copilot von Microsoft, Claude von Anthropic, Gemini von Google, Cursor von Anysphere. Andere genannte Produktnamen gehören ihren jeweiligen Inhabern. Tacite-IA ist mit keinem dieser Anbieter verbunden. Dieser Artikel dient der Information und stellt keine Rechtsberatung dar.