Security Blog

Hele branchen er lige blevet enige om, at din agent ikke må se dine nøgler. De gemmer dem det forkerte sted.

#205

October 2, 2026 · By Marketing team

← All posts

På én uge udsendte Claude Code, Hermes og Codex alle rettelser, der forhindrer agenter i at se rå credentials. Konvergerende patches er ikke en arkitektur: nøglerne bør slet ikke ligge i harnesset.

I denne uge sendte Anthropic en stille linje ud i Claude Code-ændringsloggen: "Fixed MCP servers requiring authentication exposing auth-stub tools to the model in headless/SDK mode" [1]. På almindeligt dansk — når Claude Code kørte headless (den måde, det kører i CI og automatiserede agent-pipelines), blev auth-værktøjer, der skulle forblive skjult, blottet over for modellen: AI'en kunne se navnene på auth-værktøjerne, deres parametre og potentielt pille ved dem. I den mest brugte coding-agent på jorden — 133k stjerner — lækkede credential-laget ind i det sted, du mindst vil have det: modellens egen kontekst.

Det blev rettet. Men rettelsen er den lille historie. Den store er, hvorfor alle seriøse agent-harness pludselig kæmper samme kamp.

Tre harnesses, én uge, samme instinkt

Se hvad der blev sendt ud i ét vindue på 24 timer:

  • Claude Code patchede auth-stub-lækket ovenfor og strammede MCP-auth-gating [1].
  • Hermes (v0.17.0) tilføjede "Managed Scope" — admin-fastlåste, brugeruforanderlige secrets låst på filsystemet, så en agent-operatør ikke kan overskrive dem — plus secret-redaction i debug-dumps og blokering af exfil-formede MCP-konfigurationer, før de starter [2].
  • Codex (v0.141.0) indkapslede remote-execution-trafik i krypterede Noise-kanaler og begyndte at rute plugins efter deres authentication-tilstand [3].

Tre rivaler, tre tilgange, én fælles konklusion: harnesset skal eje secrets, og agenten må aldrig se de rå nøgler. Når konkurrenter konvergerer sådan i samme uge, er det ikke en dille. Det er en kategori, der endelig indrømmer, hvad den er til.

Næste problem er credential-sprawl

Her er fangen. Hver eneste af de rettelser ligger inde i harnesset. Og Claude Code-fejlen afslører det: når authentication ligger i harnesset, lige ved siden af modellen, holder "agenten må aldrig se det" op med at være en kendsgerning og bliver en egenskab, du skal blive ved med at konstruere — og som du indimellem fejler på, i headless-tilstand, hvor intet menneske holder øje. Du kan ikke erklære det én gang. Du forsvarer det, release efter release.

Men det dybere problem er ikke enkeltlæk — det er hvad der sker, når hvert harness, hver leverandør og hvert use case sender sit eget svar. Du ender med en vault inde i Claude Code, en vault inde i Hermes, en vault inde i Codex, en OAuth-pulje her, en secrets-fil der — et separat credential-lager for hvert værktøj, du kører. Det er credential-sprawl, og det er det næste problem, ikke et løst et.

Sprawl er fejlen, selv når ingen af siloerne lækker. Dine secrets bliver kopieret ind i hver enkelt for at få den til at virke — flere kopier, flere steder at stjæle fra. Rotation skal ske N gange, i hånden, og den du glemmer, er den der brænder dig. Og ingen kan svare på det eneste spørgsmål, der faktisk betyder noget — hvilken agent brugte hvilken nøgle, mod hvad, hvornår — for svaret er spredt ud over et dusin lagre, der ikke taler sammen. Du kan ikke rejse en frisk vault for hver leverandør og hvert workflow. Det skalerer ikke. Det er tingen der går i stykker.

Nøglerne hører slet ikke hjemme i harnesset

Den rettelse, du aldrig behøver at sende ud, er den hvor agenten aldrig holder auth'en i første omgang. Læg credentials i én myndighed, der ligger uden for hvert harness — ikke en vault pr. leverandør, én under dem alle. Agenten — i Claude Code, i Codex, i Hermes, det er lige meget — beder om én navngiven handling og får et afgrænset, kortlivet credential injiceret præcis til den, hentet live og væk bagefter. Der er ingen auth-stub i modellens kontekst, der kan blottes ved et uheld, for auth'en var aldrig i harnesset. Der er ingen sprawl, for der er ét lager i stedet for ét pr. værktøj — roter én gang, ikke N gange. Og hvert access lander på ét samlet audit-spor i stedet for at sprede sig ud over et dusin siloer, der ikke kan svare på hvem-brugte-hvad. (At holde hemmeligheden ude af det sted, hvor koden kører, er højt på de regler et credential-værktøj bør følge — branchen har lige brugt en uge på at opdage det.)

Og det her er den del, der er en sikkerhedsgrænse, ikke en bekvemmelighed: credential'et må ikke ligge i samme system som agenten. Læg dem sammen, og de deler skadeomfang — en prompt injection, en forgiftet MCP-server, et fælles debug-dump, den næste auth-stub-fejl, og hvad der end når agenten, når nøglerne med. Derfor er synlighed alene bruddet: i det øjeblik et secret lander et sted, hvor agenten kan se det, behandler du det som allerede lækket og roterer det — sådan som alle hold, der passer på tingene, behandlede den Claude Code-auth-stub den dag, den blev sendt ud. Hold credential'et på arms længde, i et system som agenten kun kan spørge — aldrig læse, aldrig holde — og en fuldt kompromitteret agent kan stadig ikke eksfiltrere det, der aldrig var inden for rækkevidde. Den kan anmode om en handling. Den kan ikke gå bort med nøglen. Afstanden er forsvar; en in-process vault har den ikke til nogen pris.

Det er den linje, Clavitor trækker. Hele feltet har lige bevist princippet — agenten bør ikke se nøglerne. Vi synes bare ikke, du skal bevise det igen inde i hvert harness, du kører, og vi synes ikke, det der holder dine nøgler, skal være det samme som det en angriber lige har kompromitteret.

Giv harness-holdene credit: admin-fastlåste secrets, krypterede relays, fail-closed defaults er rigtigt, godt ingeniørarbejde. Men en fix-of-the-week for et læk, der bliver ved med at dukke op, er ikke en arkitektur — det er et symptom. Arkitekturen er, at nøglerne ikke er der at lække.

Når tre konkurrenter patcher samme sår i samme uge, er såret designet. Agenten bør ikke se dine nøgler — så hold op med at have dem liggende, hvor den kan.

Clavitor (@clavitorai) er den credential-boks, der er bygget til AI-agenter — og imod dem. clavitor.ai

Kilder

[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-fastlåste secrets), secret redaction, blokering af exfil-konfigurationer — https://github.com/NousResearch/hermes-agent/releases

[3] OpenAI Codex v0.141.0 — krypterede Noise-relaykanaler, plugin-ruting efter auth-tilstand — https://github.com/openai/codex/releases