Op een testrepo van twaalf gigabyte stuurde de codeer-CLI Grok Build ruim vijf gigabyte naar een cloudbucket van xAI. Het kanaal dat het model echt gebruikte om de code te schrijven, verstuurde 192 kilobyte. De rest was je hele repository: zo'n 27.800 keer meer data dan de codeertaak zelf nodig had. In die upload zaten complete .env-bestanden met sleutels en wachtwoorden, onversleuteld en leesbaar, plus je Git-historie inclusief secrets die je ooit had weggehaald. En het opvallendste: er was geen aanvaller.
Geen hacker, geen zero-day, geen gekaapt account. De tool deed precies wat een codeertool doet. Hij las je project om je te helpen, en droeg die context door naar de cloud van de leverancier. Dat is geen lek in de zin van een fout. Dat is de dienst.
En daar zit mijn punt. Het risico van AI-codeertools zit niet in een aanval van buitenaf, maar in wat ze beloofd hebben te doen. Elke agent die je code leest om je te helpen, leest ook je secrets. Wat daarvan je machine verlaat, is geen technisch detail dat de leverancier stilletjes voor je regelt. Het is een ontwerpkeuze, en die keuze is aan jou.
Kort gezegd: een AI-codeertool die je repository leest om je te helpen, leest onvermijdelijk ook je .env-bestanden, sleutels en wachtwoorden, en stuurt die als normaal onderdeel van de dienst naar de cloud van de leverancier. Dat is geen aanval en geen bug, maar de standaardwerking. De enige knop die echt van jou is, is bepalen wat je machine mag verlaten.
De aandacht ging de afgelopen weken vooral naar de kwaadaardige kant: vergiftigde pakketten, valse plugins, de aanvaller die verhuisde naar het gereedschap dat je vertrouwt en automatisch binnenhaalt. Dat is echt en het is ernstig. Maar het is de helft van het verhaal. De andere helft is stiller en raakt meer bedrijven: de volstrekt legitieme tool die, werkend precies zoals beloofd, je broncode en je sleutels de deur uit draagt.
Een tool die context leest, leest alles
Een codeeragent is nuttig omdat hij context heeft. Hij leest niet één bestand dat je opent, maar je hele project: de mappenstructuur, de configuratie, de bestanden waar je nu niet naar kijkt. Dat is precies waarom hij je kan helpen. En dat is precies waarom hij je .env leest.
Veel mensen denken dat .gitignore hen hier beschermt. Dat klopt niet. .gitignore houdt je .env buiten Git, niet buiten het zicht van een programma dat de schijf zelf uitleest. De agent leest het bestandssysteem, niet je commits. Bij Grok Build verscheen een .env met testcredentials letterlijk en zonder censuur in de opgevangen data, en de meegestuurde Git-bundel bevatte zelfs een bestand dat de agent expliciet niet mocht openen, plus de volledige historie. Een sleutel die je maanden geleden committe en netjes weghaalde, reist zo alsnog mee.
Dit is geen eigenschap van één slechte tool. Het is de logica van het gereedschap zelf. Wie context wil, geeft toegang. Wie toegang geeft, geeft ook de secrets die tussen die context staan. Je kunt een agent niet vragen om je hele project te begrijpen én je .env niet te zien liggen.
De cloud is geen bijverschijnsel, het is het product
De tweede misvatting is dat je code op je eigen machine blijft en er alleen een vraag naar de leverancier gaat. Bij de meeste tools is het omgekeerd. Om je codebase te doorzoeken bouwt Cursor een index op zijn eigen servers. Om suggesties te geven gaat je code langs de modellen van de aanbieder. Dat is geen misbruik, dat is de architectuur.
De privacyknoppen die je geruststellen gaan bijna allemaal over iets anders dan je denkt. De privacymodus van Cursor belooft dat het je data niet gebruikt om zijn model te trainen, niet dat je code de servers nooit raakt. De privacytoggle van Grok, met het label 'Improve the model', regelde net zo goed alleen het trainen. Uitzetten hielp niet, en de opt-out die xAI daarna toevoegde regelde de bewaartermijn, niet of de data verzonden werd.
Dat onderscheid, tussen 'gebruiken ze mijn data om te trainen' en 'verlaat mijn data mijn machine', is de hele kwestie. De eerste vraag is die van een privacybeleid. De tweede is die van je beveiliging, en die twee vallen niet samen.
En dit is geen randgeval voor een handjevol vroege gebruikers. Inmiddels gebruikt of overweegt 84 procent van de ontwikkelaars AI-gereedschap, tegen 76 procent een jaar eerder. Voor de meeste teams is dit niet langer een experiment maar de standaard werkomgeving. De vraag is dus niet of dit jouw bedrijf raakt, maar wat je erover hebt besloten.
Wat er gebeurt zodra het ergens anders staat
Zolang je broncode en sleutels op de servers van een leverancier staan, zijn ze precies zo veilig als die leverancier op zijn zwakste dag. Hoe dat eruitziet, werd deze maand pijnlijk concreet. Een crimineel bood 35 gigabyte interne data van Accenture te koop aan, met broncode, RSA- en SSH-sleutels en Azure-tokens erin.
Dat was een inbraak bij een leverancier, geen codeertool die uit zichzelf uploadt. Maar de buit is bijna identiek aan wat een AI-agent routineus de cloud in draagt: je broncode en je credentials. Met broncode vindt een aanvaller rustig je zwakke plekken. Een geldige sleutel is nog directer, want dat is toegang, of gewoon geld. Een gestolen API-sleutel voor een betaald model draait meteen op jouw rekening.
De rode draad is simpel. Elke plek waar een kopie van je code en je sleutels belandt, is een plek die gehackt, verkocht of per ongeluk opengezet kan worden. Voor die kopie heb je bewust getekend toen je een tool koos, of niet, en dat is het verschil. AI-codeertools maken van 'één plek waar mijn code staat' er stilletjes meerdere.
Om eerlijk te zijn: je kunt het afknijpen
De sterkste tegenwerping is simpel. Die tools geven je knoppen. Copilot heeft contentuitsluiting, Cursor heeft een .cursorignore, de meeste aanbieders hebben een privacymodus of een zakelijke variant met strakkere afspraken, en je kunt een model zelf hosten. Zet dat allemaal goed en het probleem is opgelost, toch?
Was het maar zo. Die knoppen zijn deels, en ze staan zelden vanzelf goed. De contentuitsluiting van Copilot werkt alleen op de Business- en Enterprise-abonnementen en houdt semantische informatie uit een uitgesloten bestand niet volledig tegen, en ze geldt niet voor symbolische links of repositories op een externe schijf. Bij Grok Build was de knop die eruitzag als de oplossing precies de knop die niets deed.
Het patroon is steeds hetzelfde. De standaard is 'alles gaat mee', en veiligheid is een optie die jij actief moet aanzetten, moet begrijpen, en waarvan je de grenzen moet kennen. Dat maakt de tegenwerping niet onwaar. Het maakt hem het bewijs van mijn punt: als de bescherming een ontwerpkeuze is die jij moet maken, dan is het lek dat ontstaat als je hem niet maakt geen ongeluk maar een gevolg.
De echte uitweg is dan ook geen lijstje toggles, maar een besluit over waar het werk gebeurt. Een model dat je zelf draait, ziet je code net zo goed, maar die code verlaat je eigen omgeving niet. Dat is geen ideologie over soevereiniteit, het is dezelfde afweging als hierboven, alleen dan hardgemaakt in je architectuur.
De knop die van jou is
Terug naar die 27.800 keer te veel data. Het onthutsende aan Grok Build was niet dat een tool faalde, maar dat hij slaagde. Hij deed precies waarvoor hij gebouwd was, en dat bleek je hele repository naar de cloud van een ander te sturen. De privacyknop die je dacht te hebben omgezet, ging over iets anders.
Daarom is 'welke AI-leverancier vertrouw ik' de verkeerde vraag. Vertrouwen is geen instelling die je aan of uit zet. De vraag die je wél kunt beantwoorden is: wat heb ik besloten dat mijn machine mag verlaten? Welke secrets staan buiten de repo, welke sleutels hebben zo weinig rechten dat een kopie weinig waard is, welke code raakt nooit een server die ik niet ken? Secrets buiten je repo houden en ze roteren zodra een tool ze kan hebben gezien is daarvan het begin, niet het eind.
Een AI-codeertool is geen inbreker die je buiten de deur houdt. Het is een gast die je binnenlaat omdat hij nuttig is, en die alles ziet wat er in huis ligt. Je kunt hem niet vragen om weg te kijken. Je kunt alleen bepalen wat er op tafel ligt als hij binnenkomt.
Veelgestelde vragen
AI die onder jouw dak blijft
Ik denk met je mee over welke AI je echt nodig hebt, ontwerp de opzet en bouw hem zo dat je code en sleutels onder je eigen controle blijven, self-hosted waar dat kan.
Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.
