De hele industrie is het net eens geworden: je agent hoort je sleutels niet te zien. Ze verstoppen ze alleen op de verkeerde plek.
Binnen één week brachten Claude Code, Hermes en Codex alle drie fixes uit om te voorkomen dat agents ruwe inloggegevens zien. Convergerende patches zijn geen architectuur: de sleutels horen helemaal niet in de harness te zitten. <<<CLV-SUBTITLE>>>
Deze week zette Anthropic een stille regel in de Claude Code-changelog: "Fixed MCP servers requiring authentication exposing auth-stub tools to the model in headless/SDK mode" [1]. In gewone taal: wanneer Claude Code headless draaide (de manier waarop het draait in CI en geautomatiseerde agent-pipelines), werden authenticatietools die verborgen hadden moeten blijven blootgesteld aan het model: de AI kon de namen van de auth-tools zien, hun parameters, en er mogelijk aan zitten. In de meest gebruikte coding agent ter wereld — 133k sterren — lekte de inloggegevenslaag naar de plek waar je hem het minst wilt hebben: de eigen context van het model.
Het is gefixt. Maar de fix is het kleine verhaal. Het grote verhaal is waarom elke serieuze agent harness opeens dezelfde strijd voert.
Drie harnesses, één week, hetzelfde instinct
Kijk wat er binnen één venster van 24 uur uitkwam:
- Claude Code patchte het auth-stub-lek hierboven en scherpte de MCP-auth-gating aan [1].
- Hermes (v0.17.0) voegde "Managed Scope" toe — door de admin vastgezette, voor de gebruiker onveranderlijke secrets, vergrendeld op het bestandssysteem zodat een agent-beheerder ze niet kan overschrijven — plus geheimenroodmaskering in debugdumps en het blokkeren van exfil-achtige MCP-configs voordat ze starten [2].
- Codex (v0.141.0) wikkelde remote-execution-verkeer in versleutelde Noise-kanalen en begon plugins te routeren op basis van hun authenticatiemodus [3].
Drie rivalen, drie aanpakken, één gedeelde conclusie: de harness moet de secrets beheren, en de agent mag de ruwe sleutels nooit zien. Wanneer concurrenten in dezelfde week zo convergeren, is dat geen hype. Dat is een categorie die eindelijk toegeeft waar ze voor is.
Het volgende probleem is verspreiding van inloggegevens
Hier zit het addertje. Elk van die fixes zit in de harness. En de Claude Code-bug verraadt het: wanneer authenticatie in de harness zit, direct naast het model, houdt "de agent mag het nooit zien" op een feit te zijn en wordt het een eigenschap die je moet blijven engineeren — en waarin je af en toe faalt, in headless mode, waar geen mens meekijkt. Je kunt het niet één keer verklaren. Je verdedigt het, release na release.
Maar het diepere probleem is niet één enkel lek — het is wat er gebeurt wanneer elke harness, elke leverancier en elke use case zijn eigen antwoord uitbrengt. Je krijgt een kluis in Claude Code, een kluis in Hermes, een kluis in Codex, een OAuth-pool hier, een secrets-bestand daar — een aparte opslag voor inloggegevens voor elk gereedschap dat je draait. Dat is verspreiding van inloggegevens, en dat is het volgende probleem, geen opgelost probleem.
Verspreiding is het falen, zelfs als geen enkele silo lekt. Je secrets worden in elk ervan gekopieerd om het te laten werken — meer kopieën, meer plekken om te stelen. Rotatie moet N keer gebeuren, handmatig, en degene die je vergeet is degene die je verbrandt. En niemand kan het enige antwoord geven dat er echt toe doet — welke agent heeft welke sleutel gebruikt, waartegen, wanneer — want het antwoord ligt verspreid over een dozijn opslagplekken die niet met elkaar praten. Je kunt niet voor elke leverancier en elke workflow een verse kluis opzetten. Dat schaalt niet. Dat is het ding dat breekt.
De sleutels horen helemaal niet in de harness
De fix die je nooit hoeft uit te brengen is die waarbij de agent de authenticatie überhaupt nooit in handen heeft. Zet de inloggegevens in één autoriteit die buiten elke harness zit — niet een kluis per leverancier, één onder ze allemaal. De agent — in Claude Code, in Codex, in Hermes, het maakt niet uit — vraagt om één benoemde actie en krijgt daarvoor een scoped, tijdelijke credential ingeject, live opgehaald en daarna verdwenen. Er zit geen auth-stub in de context van het model die per ongeluk kan uitlekken, want de authenticatie zat nooit in de harness. Er is geen verspreiding, want er is één opslag in plaats van één per gereedschap — roteer één keer, niet N keer. En elke toegang landt op één audit trail in plaats van te verspreiden over een dozijn silo's die niet kunnen zeggen wie-wat-gebruikte. (Het geheim uit de buurt houden van waar de code draait, staat bijna bovenaan de regels die een credential-tool hoort te volgen — de industrie kwam er deze week achter.)
En dit is het onderdeel dat een security boundary is, geen gemak: de credential kan niet in hetzelfde systeem zitten als de agent. Zet ze bij elkaar en ze delen een blast radius — een prompt injection, een vergiftigde MCP-server, een gedeelde debugdump, de volgende auth-stub-bug, en alles wat de agent bereikt, bereikt de sleutels mee. Daarom is zichtbaarheid op zichzelf al de inbraak: op het moment dat een secret ergens landt waar de agent hem kan zien, behandel je hem als al gelekt en roteer je hem — zoals elk zorgvuldig team die Claude Code auth-stub behandelde op de dag dat die uitkwam. Houd de credential op armlengte, in een systeem dat de agent alleen kan vragen — nooit lezen, nooit vasthouden — en een volledig gecompromitteerde agent kan nog steeds niet exfiltreren wat nooit binnen zijn bereik lag. Het kan een actie aanvragen. Het kan niet met de sleutel weglopen. De afstand is de verdediging; een in-process kluis heeft die niet, voor geen enkele prijs.
Dat is de lijn die Clavitor trekt. Het hele veld heeft het principe net bewezen — de agent hoort de sleutels niet te zien. We denken alleen niet dat je het in elke harness die je draait opnieuw moet bewijzen, en we denken niet dat het ding dat je sleutels vasthoudt hetzelfde ding hoort te zijn dat een aanvaller zojuist heeft gecompromitteerd.
Geef de harness-teams krediet: door de admin vastgezette secrets, versleutelde relays, fail-closed standaarden zijn echt, goed werk. Maar een fix-van-de-week voor een lek dat steeds terugkomt is geen architectuur — het is een symptoom. De architectuur is dat de sleutels er niet zijn om te lekken.
Wanneer drie concurrenten in dezelfde week dezelfde wond dichten, is de wond het ontwerp. De agent hoort je sleutels niet te zien — stop dus met ze op de plek te bewaren waar hij ze kan zien.
Clavitor (@clavitorai) is de credential vault gebouwd voor AI agents, en ertegen. clavitor.ai
Bronnen
[1] Claude Code v2.1.183 — "Fixed MCP servers requiring authentication exposing auth-stub tools to the model in headless/SDK mode" — https://github.com/anthropics/claude-code/releases/tag/v2.1.183
[2] Hermes Agent v0.17.0 — Managed Scope (admin-pinned secrets), secret redaction, exfil-config blocking — https://github.com/NousResearch/hermes-agent/releases
[3] OpenAI Codex v0.141.0 — encrypted Noise relay channels, auth-mode plugin routing — https://github.com/openai/codex/releases