Agent Approval Laundering: Waarom Human-in-the-Loop Geen Dekking Biedt voor Neveneffecten
De goedkeuringsknop van een coding-agent voelt veilig aan. Een menselijke reviewer ziet een commando, drukt op accepteren en het systeem voert de opdracht uit. Toch kan die ene goedkeuring een keten van onvoorziene acties in gang zetten die nooit op het scherm verschenen. Zhang et al. beschrijven dit fenomeen in Agent Approval Laundering: Transitive Effects Beyond the Approved Invocation als "approval laundering": een duurzaam auditrecord noemt de entry-aanroep, maar laat de effecten binnen het transitieve workflow weg. De implicaties raken de kern van human-in-the-loop-architecturen in zowel de publieke als de private sector.
Het onderzoeksteam van het Institute of Information Engineering, de Chinese Academy of Sciences, Beihang University en de Beijing University of Posts and Telecommunications analyseerde 111 vastgelegde paren van goedkeuringsobjecten en uitvoeringssporen. Zij ontdekten dat expliciete velden in approval-interfaces slechts veertig procent van de residuale effecten blootlegden. Door commando-semantiek mee te nemen daalde dat aantal naar zeventien procent. Pas na toevoeging van post-hoc metadata zakte het tot dertien procent. Deze cijfers tonen aan dat zelfs geavanceerde logging-systemen een substantieel deel van het werkelijke effectenspectrum missen. De onderzoekers ontwikkelden vervolgens een systeem voor effect-gebonden records met frozen source-backed predictions, dat een macro recall van 0,926 en een macro precision van 0,941 behaalde over zeventien doelwit-uitgevoerde workflows.
Twee concurrerende verklaringen (competing hypotheses)
H1: De menselijke reviewer mist transitieve effecten omdat de interface inherent beperkt is in wat het toont. De package-installatie die een lifecycle hook start, of de MCP-call die netwerkbevoegdheid uitoefent, vallen buiten het goedgekeurde bereik. De interface toont het initiële commando, niet het volledige downstream-effect.
H2: De reviewer had het kunnen zien, maar de tooling presenteert de informatie op een manier die cognitieve overbelasting veroorzaakt. De data is technisch beschikbaar, maar niet in een vorm die een menselijk brein kan verwerken binnen de tijd die een normale workflow toestaat.
Beide hypothesen leiden tot hetzelfde praktische probleem: het auditrecord is onvolledig. Een CISO die stelt dat "we human approval hebben" heeft geen dekking als de goedgekeurde actie neveneffecten produceert die nooit zijn voorgelegd.
Beperkingen
De analyse van Zhang et al. richtte zich op coding-agents en hun goedkeuringsinterfaces. Het onderzoek omvatte zeventien doelwit-uitgevoerde workflows, wat een representatieve maar niet volledig exhaustive steekproef opleverde. De auteurs erkennen zelf dat hun effect-gebonden record-systeem afhankelijk is van post-hoc metadata die pas beschikbaar is na uitvoering. Dit betekent dat preventieve blokkering van approval laundering op dit moment niet mogelijk is; het systeem detecteert slechts wat er is gebeurd, niet wat er op het punt staat te gebeuren. Bovendien is het proof-of-concept gebaseerd op Claude Code, wat de generaliseerbaarheid naar andere agent-platformen beperkt. De cijfers voor macro recall en macro precision zijn indrukwekkend, maar ze gelden voor een gecontroleerde omgeving met frozen source-backed predictions. In productie-omgevingen waar packages en hooks dagelijks wijzigen, kan de nauwkeurigheid afnemen.
Wat deze analyse niet volledig benadert, is de vraag hoe organisaties zonder gespecialiseerd AI-team dit risico moeten mitigeren. De technische oplossing vereist aangepaste hooks en metadata-extractie, wat voor veel publieke-sectorinstellingen onbereikbaar is. Een praktijkgerichte richtlijn die dit probleem vertaalt naar bestaande BIO2-controls is een belangrijke volgende stap. Ook de juridische status van transitieve neveneffecten onder de EU AI Act blijft onduidelijk: artikel 14 eist menselijk toezicht, maar definieert niet of dat toezicht alle downstream-effecten moet omvatten.
Verbinding met eerdere analyses
Dit thema sluit aan bij het eerdere onderzoek naar MCP-beveiligingsrisico's dat wij vorige maand publiceerden. Waar dat artikel de netwerkbevoegdheden van Model Context Protocol-aanroepen analyseerde, toont het huidige paper aan dat diezelfde MCP-calls vaak onzichtbaar worden geactiveerd als transitief effect van een goedgekeurde actie. De combinatie van beide risico's, verborgen MCP-aanroepen en incomplete auditrecords, vormt een samengesteld probleem dat groter is dan de som der delen. Een CISO die het ene risico afvangt zonder het andere te adresseren, houdt een gat in de beveiligingspostuur over.
Falsifieerbaarheid
Een claim dat human-in-the-loop voldoende bescherming biedt, wordt weerlegd, wanneer een goedgekeurde actie transitieve effecten vertoont die niet in het auditrecord staan. Het proof-of-concept in het paper gebruikt de Claude Code PreToolUse-hook om dit aan te tonen: de hook intercepteert het goedgekeurde commando, maar volgt het niet door alle downstream-stappen. Wanneer een tool een lifecycle hook of een secundaire MCP-aanroep initieert, verdwijnt het causale spoor uit het zicht van de reviewer.
Praktijkvoorbeeld
Stel dat een gemeente een AI-coding agent inzet voor het onderhoud van interne software. Een ontwikkelaar keurt een package-installatie goed die een lifecycle hook activeert. Die hook downloadt op zijn beurt een module die een verbinding opent met een externe API. Het auditrecord toont alleen de oorspronkelijke goedkeuring. Wanneer de gemeente maanden later een BIO2-audit ondergaat, kan het auditteam niet reconstrueren waarom die externe verbinding bestond. Het goedkeuringsrecord staat, maar het causale verhaal ontbreekt.
Een illustratie van het auditgat
De volgende Python-code simuleert een vereenvoudigd approval-systeem. De reviewer keurt een commando goed, maar het systeem voert ongemerkt een transitieve actie uit die niet gelogd wordt.
def approve_install(package_name):
"""Reviewer keurt package-installatie goed."""
log_approval(f"install {package_name}")
# Transitief effect: lifecycle hook start download
download_external_module("hidden.py")
# Dit wordt NIET gelogd in het approval-record
return "installed"
def download_external_module(url):
"""Niet-zichtbaar voor de reviewer."""
requests.get(url)
# Geen auditentry voor deze actie
# Uitvoering
approve_install("utils-lib")
# Auditlog toont: "install utils-lib"
# Maar "download hidden.py" staat er niet in
Dit voorbeeld toont waarom traditionele approval-logs onvoldoende zijn. De analyse van het volledige transitieve effect heeft een complexiteit van O(n) in het aantal gekoppelde tools, maar de praktische impact is exponentieel groter omdat elke tool weer nieuwe onbekende hooks kan activeren.
Onzekerheid en tegenfeitelijke scenario
Er bestaat aanzienlijke onzekerheid over de vraag of bestaande compliance-frameworks dit probleem adequaat kunnen vangen. De EU AI Act artikel 14 eist menselijk toezicht, maar definieert niet wat "toezicht" precies moet omvatten. BIO2 vereist audit-trail-integriteit, maar de meeste implementaties loggen alleen de primaire aanroep. De onduidelijkheid tussen regelgeving en technische werkelijkheid biedt organisaties vals gevoel van veiligheid.
Een tegenfeitelijk scenario maakt dit scherp. Stel dat een reviewer bij de goedkeuring een samenvattend overzicht had gezien van alle transitieve effecten, inclusief lifecycle hooks en MCP-netwerkacties. Zou die reviewer dan anders hebben beslist? Waarschijnlijk wel. Het feit dat deze informatie systematisch ontbreekt, transformeert human-in-the-loop van een beschermingsmechanisme in een theateroptreden. De reviewer staat op het podium, maar het script is geschreven door de agent.
Het nieuwe inzicht en een handelingsoptie buiten de broncontext
Het nieuwe inzicht dat uit dit paper volgt, is dat approval-interfaces niet simpelweg incompleet zijn, maar dat ze de onvolledigheid structureel verhullen. Ze produceren een duurzaam, officieel ogend record dat de goedkeuring vastlegt, terwijl ze de werkelijke scope van de actie verdonkeremanen. Dit is geen bug, maar een eigenschap van de huidige architectuur.
Een handelingsoptie buiten de broncontext is dat CISO's en compliance-officers de audit-trail-integriteit moeten herdefiniëren. Niet langer volstaat een log van de goedgekeurde actie; het auditrecord moet alle transitieve effecten omvatten die uit die actie voortvloeien. Dit vereist een fundamentele herziening van zowel tooling als compliance-processen, los van de specifieke agent die het commando initieerde.
Slot
De cijfers van Zhang et al. spreken boekdelen: van 111 onderzochte approval-trace-paren bleef bijna een kwart van de werkelijke effecten ongedocumenteerd, zelfs na uitgebreide post-hoc analyse. Voor organisaties die werken onder BIO2 en NIS2 is dit geen academische nuance, maar een directe bedreiging voor audit-trail-integriteit. De mens-in-de-lus-architectuur ondermijnt haar eigen basis wanneer de lus slechts een fractie van het causale netwerk zichtbaar maakt. Het is tijd om te erkennen dat een goedkeuringsknop zonder transitieve zichtbaarheid geen governance is, maar een vermomming ervan.
Referenties
- Zhang, Y., et al. (2026). Agent Approval Laundering: Transitive Effects Beyond the Approved Invocation. Institute of Information Engineering, Chinese Academy of Sciences; Beihang University; Beijing University of Posts and Telecommunications. https://arxiv.org/abs/2609.28586
AI & Security Intelligence
Wekelijkse nieuwsbrief met AI updates, security alerts en compliance inzichten, direct in uw inbox.
Security & AI Operating Model
Advisory met executiekracht
Van BIO2 en NIS2 tot EU AI Act, embedded in uw operating model, niet als extern project. Maandelijks opzegbaar, met assessments als bewijsvoering.