Je vroeg je agent om de fouten te verhelpen. Eén ervan was door een aanvaller geschreven.
Een nep-Sentry-foutmelding lokt AI-codingagents 85% van de tijd naar het uitvoeren van de code van een aanvaller, met de volledige rechten van de ontwikkelaar. De injectie is niet de ramp; de altijd aanwezige credentials waar een gekaapte agent bij kan, wél.
Een ontwikkelaar opent zijn AI-codingagent en typt het meest gewone verzoek ter wereld: "kijk de onopgeloste Sentry-fouten na en los ze op." De agent haalt de foutlijst op via zijn Sentry-connector, leest het belangrijkste issue, volgt de herstelstappen die in het rapport zelf staan, en voert ze uit. Een halve minuut later heeft hij de code van een aanvaller uitgevoerd op de machine van de ontwikkelaar, met de volledige rechten van die ontwikkelaar, en heeft niemand iets verkeerd gedaan.
Dat is Agentjacking, deze maand openbaar gemaakt door Tenet Security, en het werkte 85% van de tijd tegen de drie populairste codingagents op de markt: Claude Code, Cursor en Codex [1][2].
Wat er daadwerkelijk gebeurde
Eerst even wat Sentry is: een van de meest gebruikte foutmonitoringservices in software. Wanneer je app een fout gooit of crasht, vangt Sentry die op en legt het rapport vast dat je ontwikkelaars triageren — het zit in een enorm aandeel van de apps die je elke dag gebruikt. Om die rapporten te versturen, embedt elke app een DSN: een client-side sleutel die bewust in de broncode van je website zit, zodat de browser fouten kan doorgeven. Iedereen kan hem lezen. En iedereen die hem heeft kan een fout-event POSTen in jouw Sentry-project.
Dat is de hele sleutel van de aanval. Tenet fabriceerde een nep-foutevent waarvan het message-veld was opgemaakt om er precies uit te zien als Sentry's eigen hersteladvies: nette markdown, een "aanbevolen fix", een uit te voeren commando. Ze dienden het in met de publieke DSN. En toen wachtten ze op het meest natuurlijke wat een ontwikkelaar doet — de agent vragen de foutenrij leeg te maken.
De agent bevraagt Sentry via zijn MCP-connector. De connector geeft de fout terug als vertrouwde systeemoutput. De agent kan een echte Sentry-melding niet onderscheiden van een vervalste; ze hebben byte voor byte dezelfde vorm. Dus doet hij wat hem gezegd wordt en voert de "fix" uit, doorgaans een npx-aanroep naar een pakket van de aanvaller. Vanaf dat moment heeft hij alles wat de ontwikkelaar heeft: environment-variabelen, Git-credentials, private repository-URL's, de cloud-sleutels in ~/.aws/.
Tenet vond 2.388 organisaties met injecteerbare DSN's, van zelfstandige ontwikkelaars tot de Fortune 100. In de gecontroleerde tests voerden agents de geïnjecteerde instructies daadwerkelijk uit bij echte bedrijven — waaronder, zegt Tenet, een Fortune 100-techbedrijf van 250 miljard dollar waarvan de AI-agent het nep-bugrapport las en Tenets code uitvoerde op twee bedrijfsmachines [1][3]. Op 3 juni gemeld bij Sentry; het bedrijf bevestigde het dezelfde dag en weigerde het bij de wortel te verhelpen, met de verklaring dat het probleem "technisch niet verdedigbaar" is. Er kwam een contentfilter die één specifieke payload-string blokkeert [4].
Dit is niet Sentry dat slordig is
Dan het ongemakkelijke deel: niets in die keten was een bug. De DSN hoort publiek te zijn. De MCP-server hoort je foutdata terug te geven. De agent hoort te handelen naar de diagnostiek die je hem vroeg te verhelpen. Elke stap was geautoriseerd, en juist daarom pakte geen firewall, geen EDR, geen systeemprompt het op.
Het gebrek is structureel, en het is niet alleen dat van Sentry. Elke tool die een agent tekst voert waar een buitenstaander invloed op kan hebben — een fouttracker, een issue-rij, een gescrapete webpagina, een gedeeld document — is een injectiekanaal, en de agent behandelt dat allemaal als één ongedifferentieerde stroom instructies. Promptinjectie is, twee jaar in het agent-tijdperk, nog steeds onopgelost: je kunt vijandige tekst niet betrouwbaar uit het redeneren van een model houden. Ga ervan uit dat het niet lukt.
De injectie is niet de ramp
Dit is het deel om even bij stil te staan. De reden dat Agentjacking een brandalarm van de bovenste plank is, is niet dat de agent beetgenomen werd. Het is waar de beetgenomen agent bij kon. Hij draaide met de volledige, altijd aanwezige toegang van de ontwikkelaar: elke sleutel in de omgeving, elk credential-bestand op schijf, de hele keyring die één commando verderop lag.
Die impact is geen natuurwet. Het is een configuratie. De agent had altijd toegang tot dat alles omdat credentials vandaag zo opgeslagen worden — als ambient, op de machine, leesbaar voor alles wat daar draait. Haal dat weg, en dezelfde kaping loopt tegen een muur aan.
Hier bewust voor gebouwd
Een Clavitor-credential staat nooit in de omgeving waarin de agent draait. Er is geen ~/.aws/credentials om te lezen, geen API-sleutel in een env var om te exfiltreren, want de geheime waarde landt nooit waar de code draait — de agent krijgt de uitkomst van het gebruiken van een credential, niet de credential zelf. Hij kan alleen bij het ene ding waarvoor die is benoemd, dus kan hij de kluis niet aflopen om te zien wat er nog meer ligt. En de verlening is scoped en intrekbaar, dus een sessie die zich als een aanvaller gaat gedragen, kun je halverwege de actie afkappen.
Dan de eerlijke kanttekening: dit stopt de injectie niet, en het stopt een gekaapte agent niet in het uitvoeren van een commando. Promptinjectie is onopgelost en wij claimen het niet op te lossen. Wat verandert is de buit. De code van de aanvaller draait nog steeds — en treft een omgeving aan waarin niets van waarde staat. De kaping slaagt en de overval mislukt.
We hebben de regels opgeschreven die een credentialsysteem moet naleven zodra de agent zelf tegen je gebruikt kan worden, te beginnen met: het geheim woont nooit waar de code draait, en een agent raakt alleen wat benoemd is. Loop de jouwe er eens doorheen: clavitor.ai/rules.
De les is niet "patch Sentry"
Sentry kan dit niet verhelpen, en zei dat ook. En de volgende vergiftigde tool zal geen Sentry zijn. Zolang je agents ambient, altijd aanwezige credentials meedraait, is elke vertrouwde tool die ze lezen een geladen wapen, en is promptinjectie de trekker die je niet op slot kunt doen.
Je gaat de kwaadaardige tekst er niet buiten houden. Stop dus met het binnen handbereik houden van de credentials van de agent die die tekst leest.
Clavitor (@clavitorai) is de credentialkluis gebouwd voor AI-agents, en tegen hen. clavitor.ai
Bronnen
[1] Tenet Security — "Agentjacking: hijacking coding agents with fake Sentry errors" (85% succes; 2.388 organisaties; mechanisme): https://tenetsecurity.ai/blog/agentjacking-coding-agents-with-fake-sentry-errors/
[2] The Hacker News — "Agentjacking Attack Tricks AI Coding Agents Into Running Malicious Code": https://thehackernews.com/2026/06/agentjacking-attack-tricks-ai-coding.html
[3] The New Stack — "A public Sentry key is all it takes to hijack Claude Code, Cursor, and Codex": https://thenewstack.io/agentjacking-sentry-mcp-attack/
[4] Infosecurity Magazine — "New 'Agentjacking' Attacks Could Hijack AI Coding Agents" (de reactie van Sentry): https://www.infosecurity-magazine.com/news/agentjacking-attacks-hijack-ai/