Forklaring
nav-pilot starter klienten i cplt, sandkassen for kodeagenter. Her er hvorfor, og hva sikkerhetsnivåene gjør.
En KI-agent på Nav-utstyr skal kjøre i en sandkasse eller tilsvarende isolasjon. Kravet gjelder både arbeid for Nav og eget arbeid.
Bruk cplt. Det er det enkleste. Velger du noe annet, må du selv finne ut hvordan klienten isolerer agenten, og slå det på. Holder ikke det, må du isolere på en annen måte, for eksempel med en VM eller en container. Ikke kjør agenter med full tilgang til maskinen.
Kortversjonen av kravet er en lenke du kan dele med andre.
nav-pilot gir cplt katalogen du står i som prosjektkatalog, med --project-dir. Agenten kan lese og skrive der og under, ikke i mapper ved siden av. Står du i en undermappe, gjelder sandkassen bare den, men instruksjonene i roten av repoet, som .github/ og AGENTS.md, kan agenten likevel lese. Trenger den hele repoet, start fra roten eller kjør nav-pilot --project-dir <katalog>. Hjemmekatalogen og / avviser cplt, fordi de gir for mye tilgang.
nav-pilot doctor sjekker sikkerhetsnivået og anbefaler sandbox.preset = strict. gh_guard og git_guard er på allerede i standard. Det strict legger til, er nettverket: tvungen proxy, en git_guard som blokkerer i stedet for å advare, og proxy.default_allowlist. Den siste er den viktige. Da når agenten bare hostene på lista til cplt og det proxy.allowed_domains peker på. Alt annet blokkeres. Hele sammenligningen står i referansen.
Lista til cplt dekker GitHub Copilot og de offentlige pakkeregistrene, men ingenting hos Nav. Setter du strict for hånd, slutter telemetrien fra nav-pilot å komme fram. Skills som aksel-builder, observability-debugging og nav-auth mister hostene de er bygget rundt, og ingenting på skjermen sier hvorfor.
Sett det derfor med nav-pilot:
nav-pilot config # velg raden «cplt security posture»
nav-pilot skriver host-lista til ~/.nav-pilot/cplt-allowed-domains.txt, peker proxy.allowed_domains dit, og setter presetet til slutt. Da blir låsen aldri aktiv uten hostene. Har du en egen proxy.allowed_domains, lar nav-pilot den være og sier at du må legge til hostene selv. Konfigen til cplt er din, så nav-pilot endrer den aldri uten å si fra, og nøkler du har satt selv, gjelder fortsatt foran presetet.
Fila har hele lista, ikke bare Nav-hostene. proxy.allowed_domains blokkerer alt utenfor seg selv, uansett hva proxy.default_allowlist står på. Og lista til cplt er per agent: bare lista for copilot har GitHub og Copilot, mens den for opencode har opencode.ai og models.dev.
Den lokale modellen går gjennom en løkkevakt på 127.0.0.1. cplt blokkerer localhost som standard, så nav-pilot sender porten med som --allow-localhost <port> ved hver oppstart. Det er én port, ikke bryteren for hele maskinen, som proxy.forced overstyrer. Én port slipper gjennom tvungen proxy på både macOS og Linux, så strict og lokal modell går fint sammen.
På Linux krever proxy.forced at kjernen kan begrense nettverket med Landlock: ABI v4, altså kjerne 6.7 eller nyere med Landlock slått på. Under det starter ikke cplt i det hele tatt. En anbefaling som stopper hver økt på maskinen, er verre enn problemet den løser, så nav-pilot doctor og innstillingssiden anbefaler ikke strict der, og sier hvorfor.
nav-pilot spør kjernen direkte, med samme systemkall som cplt, i stedet for å lese uname. Landlock kan være kompilert bort eller slått av ved oppstart, og da ville en sjekk av versjonsnummeret sagt «går fint» rett før cplt nekter å starte. macOS har ingen slik grense. Der gjør Seatbelt samme jobben.