Microsoft wil dat jij je AI-agent controleert. Hier is hoe je dat zelf bouwt.
Op Microsoft Build 2026 kondigde Microsoft gisteren een opvallende feature aan die weinig aandacht kreeg tussen alle Surface-hardware en Scout-hype door: een systeem waarmee developers, compliance-teams en security-mensen zelf portable policy files kunnen schrijven om te bepalen hoe AI-agents zich gedragen.
Wat is er gebeurd?
Microsoft lanceerde een open specificatie die het mogelijk maakt om gedragsregels voor AI-agents vast te leggen in herbruikbare, draagbare bestanden. Denk aan regels als: "deze agent mag geen klantdata opslaan", "antwoord altijd in formeel Nederlands" of "stuur nooit e-mails zonder expliciete bevestiging". Die regels zijn los van de agent zelf te beheren, door elk team dat dat nodig vindt.
Meer details via TechCrunch.
Voor makers van kleine SaaS-producten is dit relevant omdat het een patroon legitimeert dat je nu al zelf kunt implementeren. Als jouw product een AI-feature heeft, wil je straks ook dat klanten zelf kunnen instellen hoe die feature zich gedraagt, zonder dat jij elke keer nieuwe code schrijft.
Wat betekent dit voor jouw project?
Als jouw SaaS een AI-functie heeft (denk: samenvattingen genereren, e-mails opstellen, data analyseren), dan loop je vroeg of laat tegen dezelfde vraag aan als Microsoft: hoe geef ik de gebruiker controle over het gedrag, zonder dat het een rommeltje wordt in mijn codebase?
Het antwoord is een eenvoudige "policy file" of "instructions file" per gebruiker of per workspace. Vanavond kun je dat patroon al in je eigen project bouwen met Claude Code.
Hoe pak je het aan met Claude Code?
Hieronder een aanpak in vier stappen. Het voorbeeld gaat uit van een Next.js-project met een AI-feature (bijv. het opstellen van klantemails), maar je past het eenvoudig aan naar jouw situatie.
Stap 1: Laat Claude Code een policy-structuur aanmaken
Open Claude Code in je project en geef deze prompt:
Maak een bestand
lib/ai-policy.tsaan dat een gebruikers-specifieke "policy" laadt en toepast op AI-prompts. Een policy is een object met de volgende velden:taal(string, bijv. 'Nederlands'),toon(string, bijv. 'formeel' of 'informeel'),verboden_onderwerpen(array van strings), enextra_instructies(vrij tekstveld). Schrijf ook een functiebuildSystemPrompt(policy)die op basis van dit object een system prompt string genereert.
Claude Code maakt dan zoiets:
// lib/ai-policy.ts
export interface AiPolicy {
taal: string;
toon: 'formeel' | 'informeel';
verboden_onderwerpen: string[];
extra_instructies: string;
}
export function buildSystemPrompt(policy: AiPolicy): string {
const verboden = policy.verboden_onderwerpen.length > 0
? `Bespreek nooit de volgende onderwerpen: ${policy.verboden_onderwerpen.join(', ')}.`
: '';
return `
Je communiceert altijd in het ${policy.taal}.
Je toon is ${policy.toon}.
${verboden}
${policy.extra_instructies}
`.trim();
}
Stap 2: Sla policies op per gebruiker in je database
Geef Claude Code nu deze prompt:
Voeg een Supabase-tabel toe genaamd
user_ai_policiesmet kolommen:user_id(uuid, foreign key naar auth.users),taal(text, default 'Nederlands'),toon(text, default 'formeel'),verboden_onderwerpen(text array, default leeg),extra_instructies(text, default leeg). Schrijf ook de migratie en een helper-functiegetUserPolicy(userId)die de policy ophaalt of een default teruggeeft.
Claude Code genereert de SQL-migratie en de helper automatisch. Je hoeft zelf geen SQL te kennen.
Stap 3: Koppel de policy aan je AI-aanroep
Als je al een route hebt die Claude of een andere AI aanroept, geef dan deze prompt:
In
app/api/generate-email/route.tshaal je nu eerst de policy op van de ingelogde gebruiker viagetUserPolicy, bouw je een system prompt viabuildSystemPrompt, en gebruik je die alssystem-parameter in de Anthropic API-aanroep. Zorg dat de bestaande user-message-logica intact blijft.
Het resultaat ziet er dan ongeveer zo uit:
// app/api/generate-email/route.ts
import { getUserPolicy } from '@/lib/ai-policy';
import { buildSystemPrompt } from '@/lib/ai-policy';
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic();
export async function POST(req: Request) {
const { userId, userMessage } = await req.json();
const policy = await getUserPolicy(userId);
const systemPrompt = buildSystemPrompt(policy);
const response = await client.messages.create({
model: 'claude-opus-4-5',
max_tokens: 1024,
system: systemPrompt,
messages: [{ role: 'user', content: userMessage }],
});
return Response.json({ result: response.content[0] });
}
Stap 4: Bouw een eenvoudige instellingen-pagina
Zodat je gebruikers hun eigen policy kunnen aanpassen:
Maak een pagina
app/settings/ai/page.tsxmet een formulier waarop de gebruiker de taal, toon, verboden onderwerpen (kommagescheiden invoerveld) en extra instructies kan invullen en opslaan. Gebruik een server action om de waarden op te slaan inuser_ai_policies. Houd het simpel, geen UI-library nodig.
Dit hoeft geen mooi design te hebben. Het gaat erom dat het werkt.
Wat te checken na afloop
- Maak twee testgebruikers aan met verschillende policies (bijv. een met formeel Nederlands en een met informeel Engels).
- Stuur dezelfde user-message naar je AI-route als beide gebruikers en vergelijk de output.
- Controleer in Supabase of de
user_ai_policies-tabel correct gevuld wordt bij opslaan. - Open de browser-console of je server-logs: geen errors bij het ophalen van de policy wanneer een gebruiker nog geen instellingen heeft opgeslagen (de default moet dan gewoon werken).
Als dat allemaal klopt, heb je hetzelfde patroon als wat Microsoft gisteren aankondigde, maar dan in je eigen product, gebouwd in een avond.
Bij Eighty leer ik je Claude Code in het Nederlands gebruiken, van installatie tot een werkend SaaS-product. Wekelijks een nieuwe module, persoonlijke begeleiding.
