Elke claim op deze pagina heeft een bewijs.
Yad vraagt je om iets echts: je AI-providersleutel, het exacte inloggegeven dat geld uitgeeft bij elk gebruik. Wij vinden niet dat je dat op goed vertrouwen moet afgeven, dus is deze pagina niet gebouwd op bijvoeglijke naamwoorden. Elke zin hieronder wijst naar een echt mechanisme, in code die je zelf kunt lezen, en een test die we daadwerkelijk hebben gedraaid, ook op een machine die Yad nog nooit had gezien. Waar we trots zijn op het werk, zeggen we dat gewoon. Waar een claim niet aan ons is om te maken, zeggen we dat ook, met opzet, verderop op deze pagina.
Lokaal eerst, met opzet.
Yad draait in je eigen, echte Chrome-browser, op je eigen computer. Geen cloud-browser die ergens op een server van een ander staat.
Yad heeft twee gratis onderdelen, en je hebt ze allebei nodig. Deel A is deze Chrome-extensie, de hand: die leest de pagina voor je neus en handelt erop, klikken, typen, navigeren. Deel B is de Companion, een klein gratis programma dat je eenmalig downloadt en start op je eigen computer, het brein: dit is het enige onderdeel van Yad dat ooit echt AI-denkwerk doet of je ruwe API-sleutel aanraakt. Deel A alleen kan niet denken. Deel B alleen kan je browser niet zien. Installeer ze allebei één keer en je bent klaar. De Companion is voorlopig alleen voor Windows.
Jij levert de AI: Groq, Google Gemini, OpenRouter, een zelf ingetypt endpoint, of een volledig lokaal model. Yad bewaart nooit een AI-sleutel namens jou in een gehost account van ons, en verkoopt nooit toegang tot een sleutel door.
Gevoelige pagina-inhoud, wachtwoorden, kaartnummers, de velden die nooit je scherm mogen verlaten, worden gemaskeerd voordat er iets bij een AI terechtkomt, cloud of lokaal. Betaal- en afrekenpagina's zijn altijd geblokkeerd voor autonome actie, ook als Yad in volautomatische modus draait. Geen uitzonderingen.
Dat was al zo. Wat volgt is wat we daarbovenop hebben gebouwd: het afgrendelen van het ene gevoelige gegeven dat Yad wel moet aanraken, je API-sleutel zelf.
Versleuteld op het moment dat je hem plakt, op een machine die niets onthield.
Dit is het exacte mechanisme. De eerste keer dat je een API-sleutel in Yad plakt, stuurt de extensie hem eenmalig naar je lokale Companion. De Companion vergrendelt die sleutel meteen met de ingebouwde versleuteling van Windows zelf, DPAPI, gebonden aan jouw Windows-gebruikersaccount, zodat alleen dat account op die machine hem ooit weer kan ontgrendelen. De Companion stuurt een versleutelde blob terug, de extensie gooit de platte tekst weg die hij vasthield, en vanaf dat moment bewaart en gebruikt de extensie alleen nog die versleutelde blob. De ruwe sleutel wordt nooit meer getoond, en nooit ergens leesbaar op schijf weggeschreven. Pas wanneer de Companion de sleutel echt nodig heeft om je AI-provider aan te roepen, ontsleutelt hij hem in het geheugen, voor dat ene moment en niets langer.
We hebben niet aangenomen dat dit werkt. We hebben het bewezen, zoals een gloednieuwe gebruiker het daadwerkelijk ervaart: met de echte verpakte installer, het exacte bestand dat je zou downloaden, gedraaid vanuit een volledig schone map zonder eerdere status en zonder achtergebleven .env-bestand uit de ontwikkeling. Een vers gestarte Companion, in een andere map, zonder enige herinnering aan wat eraan voorafging, kreeg niets dan de versleutelde blob. Hij ontgrendelde de sleutel correct en activeerde de AI-provider.
Daarna probeerden we het met opzet te breken. We voerden een vers gestarte Companion een corrupte, waardeloze blob in plaats van een echte. Hij crashte niet. Hij activeerde niets. Hij faalde veilig en stopte, precies zoals een veiligheidsgrens hoort te falen.
Een grens die jij instelt. Een stopknop die echt alles stopt.
Elke AI-aanroep die Yad doet, in elke functie, wordt geteld tegen een dagelijkse grens die jij zelf instelt. Standaard 1000 aanroepen per dag, door jou aan te passen. Die check zit op het ene knelpunt waar elke AI-aanroep in het hele systeem doorheen moet op weg naar buiten, dus er is geen zijdeur en geen codepad dat eromheen gaat.
Er is ook een stopknop met één klik. Druk erop, en elke volgende AI-aanroep wordt onmiddellijk geblokkeerd, volledig stop.
Zowel de dagelijkse grens als de status van de noodstop overleven een herstart van de Companion, want een grens die zichzelf reset bij een herstart is geen grens. En we hebben ze allebei herbouwd om dicht te falen in plaats van open: als de opgeslagen status ooit ontbreekt of onleesbaar is, om welke reden dan ook, blokkeert Yad standaard aanroepen, in plaats van ze stilletjes toe te staan en het beste te hopen. Dat telt het meest precies wanneer jij niet kijkt. Een autonome taak kan nooit doorgaan met je sleutel leegtrekken terwijl jij weg bent van je bureau.
Je sleutel mag naar precies één plek.
Je API-sleutel wordt alleen over het netwerk verstuurd naar de ene AI-provider die je zelf koos bij het instellen van Yad: Groq, Google Gemini, OpenRouter, of een zelf ingetypt endpoint. Hij gaat nooit naar een server die wij, het Yad-team, beheren. Er is geen relay, geen proxy, geen logging-endpoint dat je sleutel onderweg ziet.
Yad heeft wel één functie die naar huis belt: het herstelbrein, een klein systeem dat leert van mislukte browserruns om beter te worden in herstel daarvan, over alle gebruikers heen. Zelfs die functie, het enige onderdeel van Yad dat bewust is ontworpen om data naar ons terug te sturen, is met opzet krap gehouden in wat hij mag versturen. Hij stuurt een kale website-hostnaam en een korte redencode, niets anders. Nooit je sleutel. Nooit de inhoud van de pagina waar je op zat. Nooit de volledige URL, die zelf gevoelige identifiers zou kunnen bevatten.
We hebben onze eigen code voor de rechter gesleept voordat jij hem ooit draaide.
Voordat er iets van dit alles live ging, doorliep de nieuwe beveiligingscode een kritische code-review met 18 AI-agenten, een proces dat de ontwikkelaar zelf ontworpen, gebouwd en gedraaid heeft. Gewoon gezegd, want het telt: dit is geen extern auditbureau, geen betaalde pentest, en geen certificering van welke aard dan ook. Het is een strenge, geautomatiseerde review in meerdere ronden, die de ontwikkelaar op zijn eigen code loslaat, zoals je een testsuite zou draaien, alleen zijn de reviewers onafhankelijke AI-doorlopen met de opdracht om de code kapot te proberen te maken, niet om te bevestigen dat hij werkt.
Drie aparte invalshoeken doorzochten de code op verschillende dingen: één voor gewone correctheidsbugs, één specifiek voor beveiligingsgaten, en één voor faalscenario's en randgevallen die alleen zichtbaar worden als er iets misgaat. Daarna ging een aparte verificatieronde terug en checkte elke gemelde bevinding opnieuw tegen de echte code, voordat iets als echt werd geaccepteerd. Een review die alleen vermoedens opsomt, is weinig waard. Deze moest elke bevinding bewijzen tegen de echte broncode voordat hij meetelde.
Het resultaat: 12 echte, bevestigde problemen. Twee zijn het waard om er met naam aan te wijzen. De status van de noodstop overleefde in de praktijk geen herstart van de Companion, wat de uitgavenpoort telkens stilletjes weer had geopend bij elke herstart van de app. En een PowerShell-subproces dat tijdens versleuteling werd gebruikt, werd gestart met een kale programmanaam in plaats van een afgesloten absoluut pad, precies het soort gat waardoor een geplant nepprogramma een sleutel kon onderscheppen als het ooit op het zoekpad terechtkwam. Beide, en alle tien de andere, zijn gefixt.
Elke fix werd opnieuw geverifieerd, niet alleen met losse unit-tests, maar met live smoke-tests en een volledige end-to-end-test die het echte Companion-proces stuurde door het daadwerkelijke native-messaging-protocol dat Chrome zelf gebruikt om ermee te praten, hetzelfde kanaal dat een live sessie in productie gebruikt. Geen simulatie ervan.
We lezen niet alleen de code. We proberen hem kapot te maken.
Een code-review leest de broncode. Nodig, maar niet hetzelfde als het draaiende ding daadwerkelijk aanvallen zoals iemand met slechte bedoelingen dat zou doen. Dus na de review hierboven zetten we die pet zelf op en gingen we direct achter de eigen live onderdelen van Yad aan, met dezelfde instincten die een echte security-onderzoeker naar een doelwit meebrengt.
We probeerden een betaalpagina op elf verschillende manieren langs de afreken-bewaking te smokkelen: hoofdletters, dubbele URL-encoding, verstopt in een hash-route, path-traversal-trucs, een null byte. Alle elf werden onderschept. We probeerden vijf gevaarlijke linktypes die een pagina aan de agent kon geven, waaronder één ontworpen om willekeurige code in je browser te draaien. Alle vijf werden geweigerd.
We vielen het lokale controlekanaal van de Companion aan met een DNS-rebinding-truc, precies de methode waarmee een kwaadwillende webpagina zich zou voordoen alsof hij vanaf je eigen machine belt. Geblokkeerd, ook op de twee meest gevoelige routes: één die bestanden van je computer kan lezen, en één die JavaScript in je browser kan draaien.
We voerden het protocol tussen de extensie en de Companion vol met waardeloze bytes, een neplengte van meerdere gigabytes voor een bericht, en een bericht met opzet gebouwd om zijn eigen groottelimiet te doorbreken. Het proces knipperde niet met de ogen. We beukten precies op de rand van de dagelijkse uitgavengrens om een off-by-one te vinden, en vuurden honderd gelijktijdige noodstop-schakelingen tegelijk af, op zoek naar een race condition die de opgeslagen status kon beschadigen. Op beide schoon.
Niets hiervan was in scène gezet voor deze pagina. Elke poging hierboven werd uitgevoerd tegen de echte, gecompileerde, draaiende code, niet een beschrijving van wat er zou moeten gebeuren.
Nee. Nul crashes, nul regressies.
Beveiligingswerk dat stilletjes het product breekt dat het moet beschermen, is geen winst. Nadat elke fix uit die review was doorgevoerd en opnieuw geverifieerd, draaiden we de eigen taakbenchmark van Yad volledig opnieuw, dezelfde suite die een echte Chrome-browser end-to-end door echte websites stuurt om te meten of Yad zijn werk nog steeds doet. Nul crashes. Nul regressies in de kernpijplijn waarmee de agent taken afrondt. De verharding maakte Yad veiliger zonder hem slechter te maken in het ene ding waarvoor hij bestaat.
Zorgvuldigheid zit ook in de details.
Nog een paar wijzigingen landden in dezelfde review-ronde. Individueel kleiner, maar elk sluit een echt gat.
Atomaire opslag
Schrijfacties naar schijf zijn atomair, zodat een onderbroken opslag nooit een corrupt statusbestand achterlaat.
Gevalideerde grens
De waarde van de dagelijkse grens wordt gevalideerd, zodat een corrupte of nulwaarde je nooit per ongeluk volledig buitensluit.
Overal timeouts
Elke subproces-aanroep bij versleuteling heeft nu een timeout, zodat hij de app nooit kan laten vastlopen.
Crash-geïsoleerde berichten
Eén misvormd bericht in de Companion kan nooit het hele proces platleggen.
Lokale kalenderdag
De dagelijkse telling reset op jouw lokale dag, niet op een verborgen UTC-grens die je nooit zou opmerken.
Lokaal model is gratis
Aanroepen naar het lokale Ollama-model tellen nooit mee tegen de dagelijkse grens van je betaalde sleutel.
Je grenzen kennen hoort bij het vakmanschap.
Geen nagedachte toevoeging voor juridische dekking. Dit is precies wat deze pagina niet zegt.
Zijn jullie SOC 2 of ISO 27001 gecertificeerd? +
Is dit beoordeeld door een extern beveiligingsbureau? +
Was dit een betaalde pentest? +
Is Yad "onhackbaar" of "100% veilig"? +
Gratis en open source, onafhankelijk gebouwd.
Lees de code, draai de tests zelf, en beoordeel elke claim op deze pagina op basis van het echte werk, niet op ons vertrouwen erin.
Werkt ook met Brave, dezelfde link. Vragen? [email protected]