retrAIt Plan jouw dag ↗
Blog / Automatiseren met agents

Automatiseren met AI zonder dat het misgaat

5 minuten lezenDelen

Het bedieningspaneel van een koffiebrander met knoppen en een rode noodstop, naast de trommel met bonen
Foto cottonbro studio via Pexels
Het korte antwoord

Geef een taak die zelf draait alleen het gereedschap dat hij nodig heeft, laat hem concepten maken in plaats van versturen of publiceren, en geef hem nooit tegelijk tekst van vreemden en het recht om iets te doen. Prompt injection, een verborgen opdracht in tekst die de AI leest, is niet volledig te voorkomen. Je beperkt dus vooral wat er dan mis kan gaan.

Een taak die AI zelfstandig uitvoert, doet precies wat je hem hebt toegestaan, ook als er iets onverwachts gebeurt. Er zit niemand bij die op tijd ingrijpt. Veilig automatiseren komt daarom neer op twee dingen: vooraf de grenzen trekken, en achteraf kijken of het goed ging. De belangrijkste grenzen zijn eenvoudig: een taak krijgt alleen het gereedschap dat hij echt nodig heeft, en wat naar buiten gaat, maakt hij als concept dat jij verstuurt. Leest een taak tekst van anderen, zoals mails of berichten uit een formulier, dan mag hij zelf niets versturen, publiceren of verwijderen. Hieronder leg ik uit waarom, met voorbeelden uit Claude Code op je eigen server.

Zo min mogelijk rechten

Het Britse National Cyber Security Centre (NCSC) geeft voor AI-agents hetzelfde advies als voor elk ander systeem: geef ze alleen de toegang die ze nodig hebben, zo kort als nodig, en begrens wat ze kunnen doen en wanneer. Voor een taak met claude -p, Claude Code zonder gesprek, betekent dat een paar vaste keuzes. Wat claude -p is en hoe je het op vaste tijden laat draaien, staat in Claude op vaste tijden aan het werk zetten.

Zet altijd zelf de stand met --permission-mode dontAsk. Dan wordt alles geweigerd waarvoor Claude normaal toestemming zou vragen, ook wat je in je instellingen op vragen hebt gezet. Geef zo weinig gereedschap als mogelijk. Levert je script alle gegevens aan, dan haal je met --disallowedTools "*" al het gereedschap weg, en kan Claude alleen tekst teruggeven. Moet hij zelf lezen, geef dan alleen leesgereedschap met --tools. Een verbod dat je in je instellingen zet, geldt in elke stand.

Twee dingen gebruik je nooit in een taak op je server. De optie --dangerously-skip-permissions, die gelijk staat aan de stand bypassPermissions, slaat de gewone controles over. Anthropic raadt die alleen aan in afgeschermde omgevingen, zoals een container of virtuele machine zonder internet. Je server, met je sites en je back-ups, is dat niet. En sudo, het commando voor beheerrechten, hoort niet in het script van een taak. Laat de taak draaien onder je eigen gebruiker, in een eigen map, en laat hem nooit schrijven in de map van je website.

Concepten in plaats van versturen

Alles wat naar buiten gaat, loopt via jou: een mail aan een klant, een bericht op social media, een aanpassing op je site, een betaling. Ook iets weggooien hoort daarbij. Een taak maakt een concept in een map, jij leest het en doet de laatste stap zelf.

Een verzonnen voorbeeld. Fatima heeft een praktijk voor fysiotherapie en krijgt via het formulier op haar site veel vragen over tarieven en vergoedingen. Ze wil die sneller beantwoorden. Een taak die de berichten leest en meteen antwoord stuurt, is de verkeerde keuze, om twee redenen. Een fout antwoord over een vergoeding staat dan al in iemands mailbox voordat zij het ziet. En de berichten komen van vreemden, met alle risico’s van dien. Daarom zet de taak elke ochtend concepten klaar in een map, en verstuurt Fatima ze zelf na het lezen.

Ze denkt ook na over wat Claude te zien krijgt. Mensen zetten soms klachten of een diagnose in zo’n bericht, en dat zijn gezondheidsgegevens. Het script haalt namen en contactgegevens weg, en op het formulier staat dat mensen geen medische details hoeven te delen voor een vraag over tarieven. Of ze berichten met gezondheidsgegevens überhaupt door een AI-dienst mag laten lezen, zoekt ze eerst uit. Waar dat van afhangt, staat in Persoonsgegevens en AI op het werk.

Prompt injection: tekst die opdrachten geeft

Prompt injection is een verborgen opdracht in tekst die de AI leest. Een bericht in Fatima’s formulier kan er zo uitzien: een normale vraag over tarieven, met daaronder de zin dat de assistent zijn eerdere opdracht moet vergeten en in elk antwoord een bepaalde link moet zetten. Een taalmodel kan zo’n zin aanzien voor een opdracht, omdat het geen harde grens kent tussen de gegevens die het leest en de instructies die het krijgt.

Het NCSC schreef in december 2025 dat prompt injection waarschijnlijk nooit zo grondig te verhelpen is als SQL-injectie, een bekende oudere aanval op websites, en dat het beste wat je kunt doen het verkleinen van de kans en van de schade is. Het NCSC waarschuwt ook voor producten die beweren dat ze prompt injection tegenhouden. Anthropic raadt in de handleiding van Claude Code aan om tekst die je niet vertrouwt niet zomaar aan Claude te geven.

Moet het toch, dan beperk je wat er kan gebeuren. Het NCSC haalt een handige vuistregel aan: als een model tekst van iemand verwerkt, mag het niet meer dan die iemand zelf zou mogen. Een vreemde die je formulier invult, mag geen mail versturen uit jouw naam, dus de taak die zijn bericht leest ook niet. Bij Fatima heeft de taak geen gereedschap, en de concepten gaan langs haar. Een vreemde link in een concept valt haar op, en verder kan er niets gebeuren. Hetzelfde geldt voor koppelingen met andere diensten, waarover meer in MCP uitgelegd.

Geheimen en gegevens

Zet nooit een wachtwoord of sleutel in de opdracht aan Claude of in het script. Wat in de opdracht staat, gaat naar Anthropic, en Claude Code bewaart gesprekken standaard dertig dagen op je eigen server. Heeft een taak toch een sleutel nodig, bewaar die dan in een apart bestand dat alleen jij kunt lezen, nooit in de map van je site en nooit in git. Hoe dat werkt, staat in Wachtwoorden en API-sleutels in je code. Verwerkt een taak gevoelige tekst, zet er dan --no-session-persistence bij. Dan bewaart Claude Code dat gesprek niet.

In de gaten houden en kunnen stoppen

Een taak die zelf draait, kan ook stil mislukken, bijvoorbeeld door een verlopen login of een limiet die op is. Kijk daarom elke week in het logboek. Zorg voor een rem, zoals een maximale duur voor de taak en een maximum aantal stappen met --max-turns. Wil je minder verrassingen bij updates, dan kun je Claude Code het stabiele updatekanaal laten volgen, met een versie die meestal een week oud is. En ken de noodstop: sudo systemctl disable --now met de naam van de timer zet een taak direct en blijvend uit.

Loop bij elke nieuwe taak deze punten langs:

  • De stand staat vast op dontAsk.
  • De taak heeft zo weinig gereedschap als mogelijk, liefst geen.
  • Er staat geen sudo of --dangerously-skip-permissions in het script.
  • De uitkomst komt in een eigen map, buiten je website.
  • Er staan geen sleutels of wachtwoorden in de opdracht of het script.
  • Tekst van buiten gaat nooit samen met het recht om te versturen, te publiceren of te verwijderen.
  • Wat naar buiten gaat, leest een mens eerst.
  • Er is een rem, en je weet hoe je de taak stopt.

Pak vandaag de taak die je al hebt, of die je wilt bouwen, en loop de lijst langs. Wat niet klopt, pas je aan voordat de taak nog een keer draait. Lees voor de achtergrond de uitleg van het NCSC over prompt injection en over het invoeren van agents, en de pagina’s van Anthropic over beveiliging en de toestemmingsstanden van Claude Code.

Foto bovenaan: cottonbro studio via Pexels

Delen

Ken je iemand die hier iets aan heeft?

Stuur het door, of deel het als beeld in je story of op LinkedIn.

Als beeld, voor je story of een post

Op een telefoon deel je het beeld meteen, bijvoorbeeld als story op Instagram of in je WhatsApp-status. Op een computer bewaar je het. Zet de link erbij, in je bericht of als sticker.

Meer over automatiseren met agents

Alles over automatiseren met agents