---
title: "Agent-audittrail: wat je minimaal vastlegt per actie | Len P. van der Hof"
description: Wie er niet bij was, reconstrueert met een agent-audittrail wat een AI-agent deed, wie akkoord gaf en wat er gebeurde. De velden en een oefening van 20…
image: "https://lenvanderhof.com/media/generated/blog-hero-agent-audit-trail-v1.d9628fb70a32.wide.webp"
---

[AI-systemen](https://lenvanderhof.com/nl/blog/categorie/ai-systemen/) Onderzoeksartikel

# Agent-audittrail: reconstrueer de handeling, goedkeuring en uitkomst

Is de agent de enige getuige, dan heb je geen audittrail. Dan heb je een verklaring.

Len P. van der HofGepubliceerd 3 oktober 20268 min. leestijd

De handeling, de goedkeuring, de uitkomst. Aan elkaar geklemd, of het is niet gebeurd.

Direct antwoord

Een agent-audittrail is de verzameling vastleggingen waarmee iemand die er niet bij was één handeling van een AI-agent kan reconstrueren: wat de agent deed, met welke invoer en instructies, wie of wat het goedkeurde, en wat er werkelijk gebeurde in het systeem dat hij raakte. De software rond de agent schrijft die vastleggingen, niet de agent zelf. Ze delen één ID en staan op een plek die de agent niet kan wijzigen. Een chattranscript volstaat niet: dat laat zien wat het model zei, niet wat de tools deden.

## Belangrijkste inzichten

- Drie delen, één ID: de handeling, de goedkeuring, de uitkomst.
- Schrijf de vastlegging buiten het model. Vraag de agent niet wat hij gedaan heeft.
- Een chattranscript laat zien wat het model zei, niet wat de tools deden.
- Leg de geldende versies vast: model, instructies, tool. Anders weet je niet welke regels golden.
- Test het: een collega die er niet bij was, reconstrueert één willekeurige handeling alleen aan de hand van de vastleggingen.

**Een agent-audittrail is de verzameling vastleggingen waarmee iemand die er niet bij was één handeling van een AI-agent kan reconstrueren: wat de agent deed, wie of wat het goedkeurde, en wat er werkelijk gebeurde in het systeem dat hij raakte.** De software rond de agent schrijft die vastleggingen, niet de agent zelf. Ze delen één ID. En ze staan op een plek die de agent niet kan wijzigen.

De toets is eenvoudig. Over zes weken betwist een klant iets wat de agent gedaan heeft. Kan een collega dan antwoord geven met alleen de vastleggingen, zonder het de agent te vragen en zonder het jou te vragen? Zo niet, dan heb je een herinnering, geen trail.

Met een [AI-agent](https://lenvanderhof.com/nl/begrippen/ai-agent/) bedoel ik hier software die een doel krijgt en in meerdere stappen tools gebruikt, zoals e-mail, een database of een betaalsysteem. Een audittrail is een reeks vastleggingen in tijdsvolgorde die laat zien wat er gebeurde, wie het deed en met wiens toestemming.

## Waarom is een chattranscript geen audittrail?

Het transcript is het gesprek dat je in het chatvenster ziet. Het voelt als een vastlegging. Maar het legt het verkeerde vast.

**Het laat zien wat het model zei, niet wat de tools deden.** Een agent kan “ik heb de bestelling terugbetaald” schrijven, of de terugbetaling nu gelukt is of niet. De woorden en de handeling zijn twee losse gebeurtenissen.

**Achteraf navragen lost dat niet op.** Een whitepaper van OpenAI uit 2023 over toezicht op agents zegt het zonder omhaal: “It is unfortunately not possible to simply ‘ask’ the agent to retroactively justify its behavior, as this is likely to produce confabulated reasoning.” Vraag je de agent achteraf om uitleg, dan krijg je waarschijnlijk een geloofwaardig verhaal dat hij ter plekke verzint. Dezelfde whitepaper raadt aan om gebruikers een overzicht te geven van de handelingen die de agent heeft uitgevoerd.

**Het mist de goedkeuring.** Wie klikte op akkoord, wanneer, en wat stond er precies op dat scherm? Dat weet de chat zelden.

**Het mist de uitkomst.** Het eigen verslag van de betaalprovider over de terugbetaling, met een eigen ID en status, staat in het betaalsysteem, niet in de chat.

**Het raakt makkelijk kwijt.** Chats kunnen worden bewerkt, ingekort of gewist als de bewaartermijn van de leverancier afloopt. En ze hebben geen gedeeld ID waarmee je ze aan de andere systemen kunt koppelen.

## Wat moet je minimaal vastleggen?

Drie delen, verbonden door één correlatie-ID: één kenmerk dat op elke vastlegging van dezelfde handeling staat. Hieronder het minimum, met een hypothetische terugbetaling als voorbeeld.

DeelVeldWelke vraag het beantwoordtVoorbeeld (hypothetisch)HandelingCorrelatie-IDWelke vastleggingen bij elkaar horenact-0917-0142HandelingTijdstip (UTC)Wanneer de tool werd aangeroepen17 sep., 14:03:22HandelingAgent en versiesWelke agent, welk model, welk instructiebestand, welke toolversierefund-agent, instructies op commit 4f2aHandelingAanleiding en invoerWat de handeling startte en wat de agent lasTicket 4471; orderopzoeking gaf 88213 terugHandelingToolaanroep zoals verstuurdDe precieze tool en argumenten, of een veilige samenvatting als er geheimen in staanrefund(order 88213, € 64,90)GoedkeuringToegepaste regelWelke regel het toestond, of een mens verplicht steldeTerugbetalingen boven € 50 vragen goedkeuringGoedkeuringGoedkeurder en tijdstipDe benoemde persoon en het momentTeamleider support, 14:05:10GoedkeuringWat de goedkeurder zagDe precieze versie van de aanvraag op het schermOrder 88213, € 64,90, naam klantUitkomstResultaat in het doelsysteemHet eigen ID en de status van het andere systeemTerugbetaling re_71x bij de provider, geslaagdUitkomstControle van het effectWat er veranderde, gecontroleerd in het systeem zelfOrder 88213 staat op terugbetaaldUitkomstVervolgHerhaalpogingen, terugboekingen, klachten, gekoppeld via hetzelfde IDMail van de klant, 29 okt.

Elf velden. Je hebt er geen platform voor nodig. Voor een klein team is een tabel met deze kolommen, automatisch gevuld, al een werkende trail.

Het [HITL-artikel](https://lenvanderhof.com/nl/blog/hitl-toepassen-in-ai-workflows/) op deze site noemt de log als een van de vier objecten die een menselijke controle nodig heeft. Deze tabel laat zien wat die log moet bevatten om een geschil te doorstaan.

## Wie schrijft de vastlegging? STACK

**[STACK](https://lenvanderhof.com/nl/frameworks/stack/)** is een kaart van vijf lagen voor coderepositories waarin mensen en AI-agents samen het werk doen. Het komt uit *[De agentische codebase](https://lenvanderhof.com/boeken/the-agentic-codebase/)*, dat nu verkrijgbaar is. De laagnamen blijven Engels:

1. **Structure.** De indeling, de ingangen en de grenzen waarin een agent in zijn eerste minuut in de repository de weg vindt.
2. **Toolchain.** De shells, commando’s en afspraken over de commandoregel die een agent mag gebruiken, opgeschreven in plaats van onthouden.
3. **Agent configuration.** De vaste instructies (AGENTS.md, CLAUDE.md, regels, skills, rolbeschrijvingen), onder versiebeheer zoals code.
4. **Connection.** De toolservers, toolcontracten, hooks en vangrails waarmee de agent de buitenwereld raakt, met niet meer toegang dan de taak vraagt.
5. **Knowledge and quality.** Geheugen, contextgrenzen, tests van het werk van de agent (evals) en geautomatiseerde controles (CI), zodat een modelupgrade de lat niet stilletjes verlaagt.

Je hebt het boek niet nodig om dit te gebruiken. De audittrail zit in de laatste twee lagen.

**Connection: schrijf de vastlegging waar de aanroep langskomt.** Elke toolaanroep passeert een punt dat jij beheert: een toolserver, een gateway of een hook (een klein programma dat automatisch vlak voor of vlak na een toolaanroep draait). Het boek benadrukt dat hooks gelden, wat het model ook besluit. Daarom zijn ze de juiste plek om de handeling en de goedkeuring vast te leggen, met hetzelfde ID. Het boek rekent “geen geheimen in een log” ook tot de regels die een hook moet afdwingen, dus haal sleutels en wachtwoorden eruit voordat er iets wordt opgeslagen. Het antwoord van de betaalprovider moet door de tool worden vastgelegd, niet door het model worden samengevat. Lopen je tools via [MCP](https://lenvanderhof.com/nl/begrippen/mcp/) (Model Context Protocol, een standaardmanier waarop AI-apps tools bereiken), dan is de MCP-server daar een logische plek voor.

**Knowledge and quality: leg de versies vast en lees de trace.** Een vastlegging die zegt “de terugbetalingsagent deed het” is niets waard als de instructies van die agent in die week twee keer veranderden. Bewaar bij elke handeling de modelnaam, de commit van de instructiebestanden en de versie van het toolcontract.

Het boek raadt ook aan runs te tracen met OpenTelemetry, een open standaard die vastlegt wat software doet als een boom van getimede stappen, spans genoemd. De GenAI-conventies daarvan beschrijven een `execute_tool`-span met de naam van de tool en een aanroep-ID. Argumenten en resultaten zijn optioneel en gemarkeerd als mogelijk gevoelig, en de hele set heeft nog de status Development. Leg dus vast welke versie je gebruikt. Bij de raadpleging voor deze pagina kende het attributenregister geen veld voor een menselijke goedkeuring. Dat voeg je zelf toe.

## Een uitgewerkt voorbeeld: “Jullie hebben de verkeerde order terugbetaald”

Stel je een hypothetische webwinkel voor. De terugbetalingsagent leest supporttickets, zoekt de order op en roept de betaaltool aan. Terugbetalingen boven € 50 vragen goedkeuring van de teamleider support.

Zes weken later mailt een klant: ze heeft order 88231 teruggestuurd, maar de terugbetaling ging naar 88213, een order die ze heeft gehouden.

Met alleen een transcript vind je het bericht van de agent, “ik heb je bestelling terugbetaald”, en verder niets. De teamleider herinnert zich dat ze “zoiets” heeft goedgekeurd.

Met de trail zoekt een collega die er niet bij was op ordernummer en is na een minuut of tien klaar:

1. **Handeling.** Om 14:03 riep de agent de terugbetaaltool aan voor order 88213. De invoer laat zien dat in het ticket 88231 stond en dat de opzoektool 88213 teruggaf: een bijna-treffer, met twee cijfers omgewisseld, die toch als treffer gold.
2. **Goedkeuring.** De teamleider keurde om 14:05 goed. De vastlegging van haar scherm toont het ordernummer uit de aanroep, het bedrag en de naam van de klant. Het nummer dat de klant zelf typte, stond er niet op.
3. **Uitkomst.** De vastlegging van de betaalprovider bevestigt terugbetaling re_71x op 88213. Order 88231 is nooit terugbetaald.

Er volgen twee verbeteringen, en geen van beide is “wees voortaan voorzichtiger”. Het goedkeuringsscherm moet het ordernummer van de klant tonen naast het nummer in de aanroep. En de opzoektool moet bijna-treffers op ordernummers weigeren. Beide zijn wijzigingen in de Connection-laag, en de trail wees er rechtstreeks naar.

## Wat zegt de wet?

Dit is geen juridisch advies. Voor systemen die de Europese AI-verordening als hoog risico aanmerkt, bepaalt artikel 12, lid 1, dat zulke systemen het technisch mogelijk moeten maken om gebeurtenissen gedurende hun hele levensduur automatisch vast te leggen in logs. Artikel 26, lid 6, vraagt gebruiksverantwoordelijken (de organisaties die zo’n systeem inzetten) om de logs waarover zij beschikken minstens zes maanden te bewaren, tenzij andere wetgeving iets anders bepaalt.

Veel interne agents vallen onder de verordening niet in de categorie hoog risico. De geschillen, terugbetalingen en klachten komen toch.

## Probeer dit vandaag: de reconstructieoefening (20 minuten)

Kies willekeurig één handeling van één agent uit de afgelopen maand, dus niet een die je je herinnert. Geef een collega die er niet bij was, leestoegang tot de vastleggingen, maar geen gelegenheid om de betrokkenen te raadplegen. Laat die collega binnen 20 minuten zeven vragen beantwoorden:

1. Wat deed de agent precies: welke tool, welke argumenten?
2. Met welke invoer en welke versie van de instructies werkte hij?
3. Welke regel stond de handeling toe, of wie keurde haar goed?
4. Wat zag de goedkeurder?
5. Wat meldde het doelsysteem terug?
6. Wat veranderde er daardoor, en is dat nog steeds zo?
7. Volgde er nog iets: een herhaalpoging, een terugboeking, een klacht?

Elk “dat zou ik moeten navragen” is een ontbrekend veld. Elk antwoord dat uit de eigen woorden van de agent komt, is een bewering, geen vastlegging. Dicht het eerste gat voordat de volgende handeling draait.

Een audittrail vertelt je wat er gebeurde. Hij legt niets stil, en hij beslist niet of de agent die handeling eigenlijk wel had mogen uitvoeren. Dat zijn aparte toetsen, en elk vraagt een eigen bewijs. Voor beweringen in plaats van handelingen heet hetzelfde idee een [bewijsregister](https://lenvanderhof.com/nl/blog/wat-is-een-bewijsregister/).

Citeer deze pagina:Agent-audittrail: reconstrueer de handeling, goedkeuring en uitkomst.Len P. van der Hof. [https://lenvanderhof.com/nl/blog/agent-audittrail/](https://lenvanderhof.com/nl/blog/agent-audittrail/) · Gepubliceerd 3 oktober 2026.

## Begrippen

- [STACK](https://lenvanderhof.com/nl/begrippen/stack/)

## Bronnen

1. [Practices for Governing Agentic AI Systems (Shavit et al.)](https://cdn.openai.com/papers/practices-for-governing-agentic-ai-systems.pdf) · OpenAI
2. [Semantic conventions for generative client AI spans](https://github.com/open-telemetry/semantic-conventions-genai/blob/main/docs/gen-ai/gen-ai-spans.md) · OpenTelemetry
3. [Gen AI attribute registry](https://github.com/open-telemetry/semantic-conventions-genai/blob/main/docs/registry/attributes/gen-ai.md) · OpenTelemetry
4. [Verordening (EU) 2024/1689 (AI-verordening), geconsolideerde tekst](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02024R1689-20260727) · EUR-Lex, Publicatiebureau van de Europese Unie
5. [STACK (framework)](https://lenvanderhof.com/nl/frameworks/stack/)
6. [De agentische codebase](https://lenvanderhof.com/boeken/the-agentic-codebase/)
7. [HITL in AI-workflows: zet de benoemde persoon op de onomkeerbare stap](https://lenvanderhof.com/nl/blog/hitl-toepassen-in-ai-workflows/)

## Verder lezen

- [HITL in AI-workflows: zet de benoemde persoon op de onomkeerbare stap](https://lenvanderhof.com/nl/blog/hitl-toepassen-in-ai-workflows/)
- [Wat is STACK? Vijf lagen, geen diagram van een leverancier](https://lenvanderhof.com/nl/blog/wat-is-stack/)
- [STACK](https://lenvanderhof.com/nl/frameworks/stack/)
- [De agentische codebase](https://lenvanderhof.com/boeken/the-agentic-codebase/)

Over de auteur

## [Len P. van der Hof](https://lenvanderhof.com/nl/auteurs/len-p-van-der-hof/)

Ondernemer, AI-innovator en venture builder

Len P. van der Hof bouwt praktische AI-systemen, digitale ventures en evidence-informed hulpmiddelen voor founders.

```json
{
	"@context": "https://schema.org",
	"@graph": [
		{
			"@type": "Person",
			"@id": "https://lenvanderhof.com/#person",
			"name": "Len P. van der Hof",
			"alternateName": [
				"Len van der Hof",
				"L.P. van der Hof",
				"Leendert Pieter van der Hof"
			],
			"honorificSuffix": "MSc",
			"url": "https://lenvanderhof.com/",
			"image": [
				"https://lenvanderhof.com/photos/len-portrait-1.jpg",
				"https://lenvanderhof.com/photos/len-portrait-2.jpg",
				"https://lenvanderhof.com/photos/len-portrait-3.jpg",
				"https://lenvanderhof.com/photos/len-portrait-4.jpg",
				"https://lenvanderhof.com/photos/len-speaking.jpg",
				"https://lenvanderhof.com/photos/len-hero.jpg"
			],
			"jobTitle": "Ondernemer, AI-innovator en venture builder",
			"description": "Len P. van der Hof, MSc, is een Nederlandse ondernemer en AI-innovator in Zwijndrecht. Hij bouwt ReasonKit, MindSesh, Undominated.ai, boeken onder zijn eigen naam, het fictie-imprint LPH98.lifestyle en technologieventures via LPH98.ventures. Elf titels in Systems for the Strategic Self zijn nu verkrijgbaar, in het Engels en het Nederlands.",
			"address": {
				"@type": "PostalAddress",
				"addressLocality": "Zwijndrecht",
				"addressCountry": "NL"
			},
			"alumniOf": {
				"@type": "CollegeOrUniversity",
				"name": "Rotterdam School of Management, Erasmus University"
			},
			"knowsAbout": [
				"Artificial intelligence",
				"AI agents",
				"Agentic AI systems",
				"LLM routing",
				"SEO",
				"Generative engine optimization",
				"Answer engine optimization",
				"Venture building",
				"Founder performance",
				"Founder psychology",
				"Evidence-based decision-making"
			],
			"sameAs": [
				"https://www.linkedin.com/in/lenvanderhof/",
				"https://x.com/LenvanderHof",
				"https://www.youtube.com/channel/UCTG20buKqYYbitqqf7l3zJA",
				"https://www.instagram.com/Lenvanderhof/",
				"https://www.threads.com/@lenvanderhof",
				"https://github.com/Lenvanderhof",
				"https://huggingface.co/LPH98",
				"https://www.npmjs.com/~lenvanderhof",
				"https://www.goodreads.com/author/show/70983905.Len_P_van_der_Hof",
				"https://www.amazon.com/author/lenvanderhof",
				"https://www.bol.com/nl/nl/b/len-p-van-der-hof-msc/609879394/",
				"https://bsky.app/profile/lenvanderhof.com",
				"https://mastodon.social/@Lenvanderhof",
				"https://crates.io/users/Lenvanderhof",
				"https://cursor.com/@Lenvanderhof",
				"https://medium.com/@Lenvanderhof",
				"https://gitlab.com/Lenvanderhof",
				"https://hub.docker.com/u/lenvanderhof/",
				"https://dev.to/lenvanderhof",
				"https://www.facebook.com/Lenvanderhof",
				"https://soundcloud.com/Lenvanderhof"
			],
			"affiliation": [
				{
					"@id": "https://lenvanderhof.com/#publisher"
				},
				{
					"@id": "https://lenvanderhof.com/#mindsesh"
				},
				{
					"@id": "https://lenvanderhof.com/#lifestyle"
				}
			]
		},
		{
			"@type": "WebSite",
			"@id": "https://lenvanderhof.com/#website",
			"url": "https://lenvanderhof.com/",
			"name": "Len P. van der Hof",
			"description": "Len P. van der Hof, MSc, is een Nederlandse ondernemer en AI-innovator in Zwijndrecht. Hij bouwt ReasonKit, MindSesh, Undominated.ai, boeken onder zijn eigen naam, het fictie-imprint LPH98.lifestyle en technologieventures via LPH98.ventures. Elf titels in Systems for the Strategic Self zijn nu verkrijgbaar, in het Engels en het Nederlands.",
			"inLanguage": [
				"en",
				"nl"
			],
			"publisher": {
				"@id": "https://lenvanderhof.com/#person"
			}
		},
		{
			"@type": "Organization",
			"@id": "https://lenvanderhof.com/#publisher",
			"name": "LPH98.ventures",
			"url": "https://lph98.ventures",
			"founder": {
				"@id": "https://lenvanderhof.com/#person"
			}
		},
		{
			"@type": "Organization",
			"@id": "https://lenvanderhof.com/#mindsesh",
			"name": "MindSesh",
			"url": "https://mindsesh.net",
			"founder": {
				"@id": "https://lenvanderhof.com/#person"
			}
		},
		{
			"@type": "SoftwareApplication",
			"@id": "https://lenvanderhof.com/#reasonkit",
			"name": "ReasonKit",
			"url": "https://reasonkit.sh",
			"creator": {
				"@id": "https://lenvanderhof.com/#person"
			}
		},
		{
			"@type": "SoftwareApplication",
			"@id": "https://lenvanderhof.com/#undominated",
			"name": "Undominated.ai",
			"url": "https://undominated.ai",
			"creator": {
				"@id": "https://lenvanderhof.com/#person"
			}
		},
		{
			"@type": "Organization",
			"@id": "https://lenvanderhof.com/#lifestyle",
			"name": "LPH98.lifestyle",
			"url": "https://lph98.lifestyle",
			"founder": {
				"@id": "https://lenvanderhof.com/#person"
			}
		},
		{
			"@type": "ImageObject",
			"@id": "https://lenvanderhof.com/nl/blog/agent-audittrail/#primaryimage",
			"url": "https://lenvanderhof.com/media/generated/blog-hero-agent-audit-trail-v1.d9628fb70a32.wide.webp",
			"contentUrl": "https://lenvanderhof.com/media/generated/blog-hero-agent-audit-trail-v1.d9628fb70a32.wide.webp",
			"representativeOfPage": true
		},
		{
			"@type": "BreadcrumbList",
			"@id": "https://lenvanderhof.com/nl/blog/agent-audittrail/#breadcrumb",
			"itemListElement": [
				{
					"@type": "ListItem",
					"position": 1,
					"name": "Home",
					"item": "https://lenvanderhof.com/nl/"
				},
				{
					"@type": "ListItem",
					"position": 2,
					"name": "Blog",
					"item": "https://lenvanderhof.com/nl/blog/"
				},
				{
					"@type": "ListItem",
					"position": 3,
					"name": "AI-systemen",
					"item": "https://lenvanderhof.com/nl/blog/categorie/ai-systemen/"
				},
				{
					"@type": "ListItem",
					"position": 4,
					"name": "Agent-audittrail: reconstrueer de handeling, goedkeuring en uitkomst",
					"item": "https://lenvanderhof.com/nl/blog/agent-audittrail/"
				}
			]
		},
		{
			"@type": "WebPage",
			"@id": "https://lenvanderhof.com/nl/blog/agent-audittrail/#webpage",
			"url": "https://lenvanderhof.com/nl/blog/agent-audittrail/",
			"name": "Agent-audittrail: reconstrueer de handeling, goedkeuring en uitkomst",
			"description": "Wie er niet bij was, reconstrueert met een agent-audittrail wat een AI-agent deed, wie akkoord gaf en wat er gebeurde. De velden en een oefening van 20 minuten.",
			"isPartOf": {
				"@id": "https://lenvanderhof.com/#website"
			},
			"primaryImageOfPage": {
				"@id": "https://lenvanderhof.com/nl/blog/agent-audittrail/#primaryimage"
			},
			"breadcrumb": {
				"@id": "https://lenvanderhof.com/nl/blog/agent-audittrail/#breadcrumb"
			},
			"inLanguage": "nl-NL"
		},
		{
			"@type": "BlogPosting",
			"@id": "https://lenvanderhof.com/nl/blog/agent-audittrail/#article",
			"mainEntityOfPage": {
				"@id": "https://lenvanderhof.com/nl/blog/agent-audittrail/#webpage"
			},
			"headline": "Agent-audittrail: reconstrueer de handeling, goedkeuring en uitkomst",
			"description": "Wie er niet bij was, reconstrueert met een agent-audittrail wat een AI-agent deed, wie akkoord gaf en wat er gebeurde. De velden en een oefening van 20 minuten.",
			"datePublished": "2026-10-03T07:05:00.000Z",
			"author": {
				"@id": "https://lenvanderhof.com/#person"
			},
			"publisher": {
				"@id": "https://lenvanderhof.com/#person"
			},
			"image": [
				"https://lenvanderhof.com/media/generated/blog-hero-agent-audit-trail-v1.d9628fb70a32.square.webp",
				"https://lenvanderhof.com/media/generated/blog-hero-agent-audit-trail-v1.d9628fb70a32.landscape.webp",
				"https://lenvanderhof.com/media/generated/blog-hero-agent-audit-trail-v1.d9628fb70a32.wide.webp"
			],
			"articleSection": "AI-systemen",
			"inLanguage": "nl-NL"
		}
	]
}
```
