hafn spec v0.3 · uppdaterad 2026-08-30 · maskinform: /principer.md

hållningen

principervad vi bygger på — och vad vi inte lovar

Agenten föreslår, människan bestämmer. Resten följer av det.

Det här är inte en policysida som juridiken tvingade fram. Det är designdokumentet, publicerat.

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. Det är 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

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.

Ingen detektion av promptinjektion. Vi designar bort skadan i stället.

Pushströmmarna lyder ännu inte nyckelns scope. 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.

Ingen 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.

Inte 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.

GET hafn.eu/principer.md · text/markdown · 200 · det här är exakt vad din agent hämtar

# 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