Co odhalil GitHub Copilot za MITM proxy: kontext, historie a routing
Autor analyzoval síťový provoz GitHub Copilotu přes mitmproxy a sledoval routing modelů, lokální historii i kontext z nedávno upravených souborů.
Autor Lighthouse newsletteru vložil GitHub Copilot ve VS Code za mitmproxy a sledoval, jaké požadavky klient odesílá a jaký kontext do nich přidává.
Nejde o audit celého GitHub Copilotu ani důkaz, že se všechny instalace chovají stejně. Jde o konkrétní experiment na jednom klientovi a účtu.
Bootstrap a dostupné modely
Při startu Copilot podle autora provádí OAuth bootstrap, kontrolu entitlementů a discovery dostupných modelů.
V Auto mode autor pozoroval také request na endpoint /models/session/intent.
Výsledek klasifikace rozděloval požadavky například do kategorií:
code-gen,debugging,reasoning,tool-use.
Podle pozorovaného chování tato klasifikace pomáhá Copilotu určit, který z dostupných modelů má úlohu obsloužit.
Lokální historie v SQLite
Autor našel lokální databázi session-store.db.
V ní jsou uloženy například uživatelské prompty a odpovědi asistenta.
Při kontrole zapisovací cesty nenašel redakci nebo maskování polí user_message a assistant_response, takže tyto hodnoty byly v jeho testu uložené jako plaintext.
To je konkrétní lokální pozorování, ne tvrzení o tom, že Copilot „bez jakékoliv ochrany“ ukládá všechna citlivá data.
Experiment s .env
Zajímavější část testu se týkala kontextu z nedávno upravených souborů.
Autor vložil falešný secret do .env.
Samotné otevření souboru síťový request nespustilo. Když ale později upravil jiný soubor a použil Copilot, obsah .env se objevil v kontextu „recently edited files“ odeslaném do API.
Podle autorovy následné kontroly implementace může mechanismus zahrnovat až 20 souborů, 8 edit summaries a 3 řádky okolního kontextu.
Na individuálním plánu autor nenašel speciální výchozí pravidlo, které by .env automaticky vylučovalo. Repository policy exclusion podle jeho zjištění souvisí s Business a Enterprise variantami.
Copilot jako stateful systém
Hlavní pointa zdroje není jen v tom, že lokální SQLite obsahuje plaintext.
Autor dochází k širšímu závěru, že současné AI coding nástroje nejsou jednoduchým klientem, který odešle jeden prompt modelu.
Copilot kombinuje:
- pracovní prostor,
- nedávné editace,
- historii konverzací,
- dostupné nástroje,
- routing modelů.
Čím více kontextu systém používá, tím užitečnější může být, ale zároveň roste množství vývojářských dat, ke kterým má přístup.
Co z experimentu nelze vyvozovat
Jeden MITM experiment neukazuje kompletní interní architekturu GitHub Copilotu.
Některé mechanismy se mohou lišit podle plánu, verze klienta nebo konfigurace organizace.
Praktický závěr je proto užší: pokud AI coding nástroj automaticky pracuje s historií a nedávno upravenými soubory, je potřeba počítat s tím, že do modelového kontextu může vstoupit více dat, než uživatel vidí v aktuálním promptu.