# hafn · principer — hållningen

> Agenten föreslår, människan bestämmer. Det är inte en begränsning vi
> ursäktar oss för — det är produkten.
> spec v0.3 · 2026-08-30 · människoform: https://hafn.eu/principer

## 1. Agenten föreslår, människan bestämmer

Din agent läser, sorterar, bokar preliminärt och skriver utkast — dygnet
runt. Men det som inte går att ångra godkänns av en människa: att skicka
ett brev, att avboka en händelse. I verktygsytan är det byggt, inte lovat:
de irreversibla handlingarna är egna verktyg med egna behörigheter som
kontots ägare måste ge uttryckligen, och sändning accepterar bara utkast.
En bokning är preliminär tills någon sagt ja — tentative är förvalet.

## 2. Behörighet är arkitektur, inte en prompt

En systemprompt är ett användargränssnitt, inte en säkerhetsgräns. Därför
sitter all faktisk behörighet i nyckeln: per JMAP-metod, återkallbar utan
att något annat dör, roterbar med överlapp. Verktyg utanför nyckelns scope
existerar inte för anroparen — de syns inte i verktygslistan och går inte
att anropa. Det är vårt starkaste skydd mot promptinjektion, och det är
mätbart, till skillnad från löften om detektion.

## 3. Promptinjektion är inte löst — av någon

En mailserver är den enda produkt där en okänd angripare gratis kan skicka
text rakt in i en agents kontextfönster. Vi påstår inte att vi upptäcker
sådana angrepp; branschens egna mätningar visar att detektion inte håller.
I stället minskar vi vad ett lyckat angrepp kan åstadkomma: verktygslistan
är filtrerad per scope, inkommande brödtext märks som otillförlitlig med
markörer som inte går att förfalska, agentnyckeln saknar sändning som
standard, och det oåterkalleliga kräver en människa.

## 4. Proveniens: det agenten gjort ska gå att se

Varje skrivande anrop genom skalet loggas i en append-only, hash-kedjad
skrivlogg: när, med vilken nyckel, vilket verktyg, mot vad, med vilket
utfall. Kalenderhändelser en agent skapar bär agentens deltagaradress;
post märks med X-Hafn-Agent, och inkommande brev som försöker förfalska
sådana rubriker får dem strippade vid ingressen. Ärligt läge: den utgående
märkningen sätts i dag av klienten, inte av servern — oförfalskbar blir den
först när hafns egen sändningsväg är byggd. Tills dess är skrivloggen
beviset.

## 5. Vad vi inte lovar

- Ingen autonom oåterkallelig sändning. Vill någon sälja dig det: fråga hur.
- Detektion av promptinjektion. Vi designar bort skadan i stället.
- Att pushströmmarna lyder nyckelns scope. Det gör de inte i dag: en nyckel
  utan läsrätt får ändå veta ATT något ändrats (aldrig vad), och en öppen
  ström överlever att nyckeln återkallas. Felet är rapporterat uppströms
  och skalet bygger vägen runt; tills dess står det här.
- En läsbar cache när hafn är nere. Varje klient bygger sin egen — och vi
  lovar det som gör den billig: stabila id:n, tillstånd per typ, billiga
  ändringsanrop, och besked innan något av det ändras.
- Att varje tredjepartsklient renderar allt. Att en preliminär bokning
  överlever vårt API är mätt; hur varje kalenderapp ritar den är inte vårt
  att lova.

## 6. Datan är din

Datan ligger i EU, under europeisk rätt. Ett konto kan ta ut post och
kalender i standardformat medan servern kör, utan att fråga om lov och utan
att någon annan märker det. Uttaget är hittills provat i liten skala — även
det står här hellre än att låtsas vara färdigtestat. Låset är vårt eget,
och det ska gå att öppna.

Frågor, invändningar, hål i resonemanget: hello@hafn.eu
