GitHub Copilot legt jeder Anfrage zur Code-Vervollständigung die letzten Änderungen aus bis zu 20 Dateien bei, .env-Zeilen inklusive. Der Entwickler Rafael hat den Datenverkehr über einen Proxy mitgeschnitten und einen präparierten API-Schlüssel in einer HTTP-Anfrage wiedergefunden. Auf Einzelplatz-Tarifen greift keine einzige Ausnahmeregel für Zugangsdaten.
drweb.de als bevorzugte Quelle auf Google hinzufügenQualitätsgeprüfte Inhalte direkt in Google News & DiscoverJetzt hinzufügenEin erfundener API-Schlüssel in einer .env-Datei tauchte bei GitHub Copilot in einer Anfrage auf, die aus einer ganz anderen Datei stammte. Rafael hatte dafür nur mitmproxy vor Visual Studio Code gehängt und mitgelesen.[1] Sein Protokoll erklärt, warum abgeschaltete Vervollständigungen in der .env-Datei nichts nützen.
Das Wichtigste in Kürze
- Die Kontext-Komponente überträgt bis zu 20 Dateien, 8 Änderungs-Zusammenfassungen und je drei Zeilen Kontext.
- Abgeschaltete Vervollständigungen in der .env-Datei helfen nicht, weil die Anfrage aus einer anderen Datei abgeht.
- Die Sperrliste für Inhalte setzt Copilot Business oder Enterprise voraus. Auf Einzelplätzen behandelt keine Voreinstellung .env-Dateien besonders.
- Der Chat-Verlauf liegt lokal in einer SQLite-Datenbank; Eingaben und Modellantworten stehen dort im Klartext.
Wie geraten .env-Zeilen in eine fremde Anfrage?

Vor jeder Vervollständigung sammelt Copilot ein, was der Entwickler zuletzt angefasst hat. Diese Kontext-Komponente reicht bis zu 20 Dateien, 8 Änderungs-Zusammenfassungen und drei Zeilen um jede Änderung an die API weiter. Rafael setzte einen erfundenen Schlüssel in eine .env-Datei, tippte danach in einer pyproject.toml weiter und fand die Schlüsselzeile im Rumpf der nächsten Anfrage.
Für Zugangsdaten gilt dabei kein Sonderstatus. „Nirgendwo greift eine Voreinstellung für .env-Dateien. Auf einem Einzelplatz-Tarif behandelt nichts .env als Sonderfall“, schreibt Rafael in seinem Beitrag vom 4. August 2026. Die Sperrliste für Inhalte setzt Copilot Business oder Enterprise voraus. GitHubs eigene Dokumentation nennt vier Stellen, an denen selbst diese Liste ins Leere läuft.[2] Über symbolische Verknüpfungen ließen sich Claude Code und Copilot schon einmal austricksen.
Was liegt danach im Klartext auf der Platte?
Der komplette Chat-Verlauf liegt unverschlüsselt in der Datei session-store.db. Nach Rafaels Auswertung fehlt vor dem Schreiben jeder Bereinigungsschritt; erfundene GitHub-Token, AWS-Schlüssel und Datenbank-Passwörter standen dort wortgleich wie eingetippt. Auch das Modell selbst darf die Datenbank lesen, über ein Werkzeug namens session_store_sql.
Lokale Gedächtnisse legen inzwischen alle KI-Werkzeuge an, und in kaum einer Sicherheitsrichtlinie tauchen diese Dateien als schützenswert auf. Beim Notiztool tl;dv lagen 181.874 Meeting-Mitschriften offen, und eine präparierte Webseite entlockte Claude die gespeicherten Nutzerdaten. Seit NIS2 gehört diese Sorgfaltspflicht in die Chefetage.
Zwei Lücken im Detail
Modus Edit in Copilot Chat.
Modus Agent in Copilot Chat.
Symbolische Verknüpfungen im Projekt.
Verzeichnisse auf entfernten Dateisystemen.
Eingaben im Klartext, ohne Bereinigung.
Modellantworten im Klartext.
Tabellen sessions, turns, session_files, session_refs.
Lesezugriff für das Modell über session_store_sql.
GitHub Copilot bekommt in vielen Teams Zugriff auf das ganze Repository, ohne dass jemand prüft, welche Zeilen davon an die API gehen. Die Sperrliste für Inhalte kommt erst mit dem Business-Tarif, damit hängt der Schutz von Zugangsdaten am Einkauf und nicht an der IT-Sicherheit.
— Markus Seyfferth, Chefredakteur Dr. Web
Was sollten Entwicklerteams in Deutschland jetzt ändern?
Ein Zugangsschlüssel gilt nach § 2 Nummer 1 Buchstabe b des Geschäftsgeheimnisgesetzes nur so lange als Geschäftsgeheimnis, wie der rechtmäßige Inhaber ihn „den Umständen nach angemessenen Geheimhaltungsmaßnahmen“ unterwirft.[3] Ein Klartext-Schlüssel, der im Arbeitsverzeichnis liegt und in Anfragen an eine fremde API auftaucht, erfüllt diese Anforderung schwerlich. Ohne Geheimnisstatus entfallen Unterlassungs- und Schadensersatzansprüche gegen jeden, der den Schlüssel später verwertet.
Auf Einzelplätzen kommt die Trainingsvorgabe hinzu. Seit dem 24. April 2026 nutzt GitHub bei Copilot Free, Pro, Pro+ und Max die Interaktionen samt „Eingaben, Ausgaben, Code-Ausschnitten und zugehörigem Kontext“ für das Modelltraining, solange niemand den Schalter im Konto umlegt.[4] Business- und Enterprise-Kunden bleiben ausgenommen.
Vier Handgriffe lohnen sich vor dem nächsten Sprint:
- Alle Zugangsdaten austauschen, die je in einem Arbeitsverzeichnis mit aktivem Copilot lagen.
- Geheimnisse aus dem Projektordner in einen Passwortspeicher verlagern, der SSH-Keys, API-Tokens und .env-Werte verwaltet.
- Die Datei session-store.db aus Sicherungen und Cloud-Synchronisierung herausnehmen.
- Auf Einzelplatz-Tarifen den Trainingsschalter in den Copilot-Einstellungen deaktivieren.
Öffnet der Schlüssel ein System mit Personendaten, verlangt Artikel 32 der DSGVO ohnehin den Stand der Technik. Ein Repository-Zugriff für ein KI-Werkzeug gehört damit in dieselbe Prüfung wie jede andere Freigabe für Agenten.
Quellen
[1] Rafael, Lighthouse: „How GitHub Copilot Works: Context, Memory and Network Traffic“
[2] GitHub-Dokumentation: Content exclusion for GitHub Copilot
[3] Bundesamt für Justiz: § 2 Geschäftsgeheimnisgesetz
[4] GitHub-Dokumentation: Managing GitHub Copilot policies as an individual subscriber
Mehr Newshunger?
- SymJack: Wie ein Symlink Claude Code und Copilot austrickst
- KI-Würmer in Word-Dokumenten verbreiten sich über Copilot von selbst
- Atlassian Rovo: Eine versteckte Anweisung genügt für den Datenabfluss aus Jira und Confluence
- Gestohlene Reasoning-Traces: Zwei API-Aufrufe rekonstruieren das Denken von Claude, GPT und Gemini
- Docker Sandboxes: isolierte Einweg-Umgebungen für KI-Agenten
- Okta kauft Permiso: Auf einen Menschen kommen 109 Maschinenkonten