Wat het oplevert
In de afgelopen maanden deed ik met Claude Code als copiloot dingen in dagen die anders weken hadden gekost:
- een migratie van Graylog naar Loki, inclusief twee gepatchte bugs in de GELF-ontvanger;
- een Wazuh-manager naar Kubernetes, met gegenereerde dashboards en een handleiding voor security;
- root cause analyses met een tijdlijn uit metrics, een bewijslijst en een samenvatting van één pagina;
- een PHP-noodlek in één dag afgeschermd, gepatcht en weer opengezet, met evidence en checksums.
Het model schrijft scripts, manifests, alertregels en documentatie, en leest metrics en configuratie. Ik bepaal de koers, controleer en neem de besluiten. Dat werkt alleen als de grenzen vooraf vastliggen.
De spelregels
1. Geen logdata en geen persoonsgegevens naar buiten
Server- en clusterlogs gaan nooit ongefilterd naar een externe AI. Logs bevatten queries, zoektermen, IP-adressen en soms namen of geboortedata. In de praktijk:
- Metrics wel, logregels niet. Prometheus-metrics zijn tellingen en duurwaarden, en daarmee is het meeste onderzoek te doen.
- Saniteren op de bron. Moeten logs toch meekijken, dan draait er eerst op de server een script dat alleen de structuur overhoudt (tijdstip, proces, foutcode, aantallen). Pas na mijn expliciete toestemming leest het model het resultaat, en nooit het ruwe bestand.
- Tellingen in plaats van inhoud. Om te bewijzen dat maskering in Tempo werkte, telde een TraceQL-query hoeveel traces nog ongemaskeerde waarden hadden, zonder ze te tonen.
- Scripts die geen IP's en regels tonen. Een inbraakcheck na het PHP-lek geeft alleen tellingen en bestandsnamen terug, zodat de uitvoer veilig gedeeld kan worden.
2. Lezen mag, wijzigen alleen met toestemming
kubectl getendescribezijn vrij;exec,deleteen elke wijziging niet.- SSH naar servers alleen als ik dat per sessie toesta, en dan met de kleinst mogelijke rechten. Tijdelijke sudo trek ik direct na afloop weer in.
- De ingebouwde veiligheidsclassifier van Claude Code blokkeert riskante acties, zoals pushen naar een registry of exec op productie. Dat voelt soms als vertraging, maar het is precies de bedoeling.
3. Alles via Git, en een mens merget
Wijzigingen gaan naar een ontwikkelbranch en worden een merge request. Het model mag een MR aanmaken via de API, maar mergen naar main doe ik zelf, want main is wat Flux uitrolt. Zo is er altijd een review-moment, en een revert is één klik.
4. Evidence tijdens het werk, niet achteraf
Bij incidenten legt het model metingen vast met tijdstempels, en maakt het checksums van de bewijsbestanden. Het rapport (als Word-document, voor collega's die geen Markdown lezen) verwijst naar die bestanden. Ook wat níet bewezen is, staat erin.
5. Geheugen zonder geheimen
Claude Code onthoudt per project wat niet uit de code af te leiden is: valkuilen, besluiten, werkwijzen. Wachtwoorden, tokens en logdata horen daar niet in. Het geheugen beschrijft wáár iets staat, niet de inhoud.
Hulpmiddelen die ik erbij bouwde
- Hooks die commando's tegen productie herkennen en een extra bevestiging vragen.
- Een gedeelde kit met agents, commando's en hooks voor de AI-werkgroep op het werk, via symlinks geïnstalleerd zodat iedereen dezelfde vangrails heeft.
- Een wekelijks AI-verslag: een timer verzamelt op vrijdag mijn prompts van die week plus een handmatig logboek voor AI-gebruik buiten de terminal, en maakt er een samenvatting van. Zo kan de werkgroep zien waarvoor AI echt wordt ingezet.
- Een lokaal model als voordeur. Vragen die geen externe AI nodig hebben, beantwoordt mijn eigen model in het homelab. Dat staat beschreven in Lokaal model als voordeur.
Wat ik geleerd heb
- Het model is zo goed als de grenzen die je stelt. Zonder regels gaat het graag zelf "even" iets fixen. Met regels wordt het een collega die nooit moe wordt van documenteren.
- Laat het meten voordat het concludeert. De beste resultaten kwamen als het eerst een meting deed, en pas daarna een oorzaak noemde.
- Controleer de controle. Een paar keer bleek een "fout" een meetfout in een query. Een tweede, onafhankelijke meting voorkomt dat je een verkeerde conclusie in een rapport zet.