Referanse

Klienter

Hva Copilot CLI, opencode og pi kan når nav-pilot starter dem, og hva som mangler.

Klientene

KlientStatusHva du får
opencodeStandardopencode med Copilot-abonnementet ditt. Den eneste klienten der hovedagenten kan kjøre i skyen og delegere jobber til en lokal modell.
copilotStøttetGitHub Copilot CLI, i sandkassen cplt. Agentpakka virker også i VS Code, JetBrains og på github.com.
piEksperimentellpi i cplt, med skills, persona og AGENTS.md lagt inn ved oppstart. Mangler blant annet hooks.
  • Nye installasjoner får opencode: første gang spør nav-pilot hvilken klient du vil ha, med opencode forhåndsvalgt. Har du brukt nav-pilot før, beholder du klienten din.
  • Bytt for én økt med --client copilot, permanent med nav-pilot config set client copilot.
  • I CI og uten terminal starter nav-pilot Copilot CLI når config.toml mangler. Bruk --client opencode for opencode.
  • Kjører du lokal modell i Copilot CLI og har opencode installert, sier nav-pilot fra én gang at bare opencode kan delegere til den lokale modellen. Meldingen følger surveys-innstillingen: nav-pilot config set surveys false slår den av.

Mangler opencode, tilbyr nav-pilot å installere en testet versjon med en av kommandoene under. Sier du nei, får du Copilot CLI.

# macOS
brew install anomalyco/tap/opencode-v2
# Linux og WSL
npm i -g @opencode/cli@2.1.4

Hva hver klient kan

✓ betyr ja, – nei og i.a. ikke aktuelt.

FunksjonCopilot CLIopencodepi
Maskering av hemmeligheter og fnr. 1JaJaNei
Merknad om prompt-injeksjonJaJaNei
Loop guard i skyøkter 2JaJaNei
Gates og agentpakke-hooks 3JaJaNei
tools: i agentene 4JaJaNei
Navs MCP-register 5JaJaNei
Testet klientversjon 6Ikke aktueltJaNei
Deling slått av, oppdatering som varselIkke aktueltJaIkke aktuelt
WSL2 på WindowsJaJaNei
Sky + local-worker 7NeiJaNei
Delegeringssperre 8NeiJaNei
Egen LLM-server (local_endpoint) 9JaJaNei
autopilot, context_tier, ask_user 10JaNeiNei
Utvidelser (extensions)JaNeiNei
  1. Maskering av hemmeligheter og fnr.: Feiler maskeringen i opencode, holder nav-pilot verktøyresultatet tilbake.
  2. Loop guard i skyøkter: Stopper agenten når den gjentar seg.
  3. Gates og agentpakke-hooks: Gates fra repoet kjører i opencode uten at du har godtatt mappa først, slik Copilot CLI krever.
  4. tools: i agentene: opencode får dem som permission per agent. MCP-verktøy og task oversettes ikke.
  5. Navs MCP-register: GitHub håndhever det i Copilot CLI, nav-pilot i opencode.
  6. Testet klientversjon: opencode >=1.18.20,<1.19 og >=2.0.24,<2.2. Utenfor dette advarer nav-pilot ved oppstart og i nav-pilot doctor.
  7. Sky + local-worker: Copilot CLI kjører en økt helt lokalt eller helt i skyen, aldri blandet.
  8. Delegeringssperre: Med local_dispatch balanced eller aggressive stopper nav-pilot hovedagenten når den redigerer for mye selv.
  9. Egen LLM-server (local_endpoint): I Copilot CLI tar serveren hele økten.
  10. autopilot, context_tier, ask_user: nav-pilot advarer ved oppstart i opencode.

Uten nav-pilots hooks er det verken loop guard (stopper agenten når den gjentar seg) eller maskering. Det gjelder alltid pi, og opencode 1 med --pure og opencode uten nav-pilot. Se Kjente mangler i opencode.

Innstillinger per klient

Slik bruker klientene innstillingene i ~/.nav-pilot/config.toml. ✓ betyr at klienten bruker innstillingen. «Advarsel» betyr at klienten mangler en tilsvarende innstilling: nav-pilot sier fra ved oppstart og starter uten den.

InnstillingCopilot CLIopencodepi
modelJaJaJa
modeJaBare plan; autopilot gir advarselAdvarsel
reasoning_effortJaBare i opencode run; ellers advarselAdvarsel
context_tierJaAdvarselAdvarsel
allow_all_toolsJaJaAdvarsel
ask_userJaAdvarselAdvarsel
log_levelJaJa, unntatt noneAdvarsel

Navs MCP-register

Nav tillater bare MCP-servere som står i Navs MCP-register (se verktøykatalogen). Copilot CLI spør GitHub og kjører bare de godkjente. opencode har ingen slik sjekk, så nav-pilot gjør den ved oppstart:

  • Servere i opencode-konfigen din som ikke står i registeret, slås av for økten. En ekstern server må ha samme URL som i registeret, en lokal må starte en pakke registeret lister.
  • Kobler du til en avslått server med /mcp i økten, avviser hooks-pluginen verktøyene dens. Med --pure i opencode 1 kjører ingen hooks, så da virker ikke dette.
  • Konfigen din endres ikke, og opencode du starter uten nav-pilot, berøres ikke.
  • Mangler gh, eller svarer ikke GitHub, slår nav-pilot ingenting av. Du får en advarsel.

Ved oppstart ser du hva som ble slått av. nav-pilot doctor viser det samme på forhånd.

⚠ MCP servers turned off for this session (not in Nav's MCP registry): <navn>. See https://ki-utvikling.nav.no/verktoy (approved servers); to add one: https://github.com/navikt/copilot/blob/main/apps/mcp-registry/README.md#adding-servers

Slå på en server fra registeret med nav-pilot mcp enable <navn>, av med nav-pilot mcp disable <navn>. nav-pilot mcp list viser hva som hindrer en server, og kommandoen som retter det. I cplt spør nav-pilot om sandkassen skal slippe gjennom hostene serverne trenger. Enter betyr nei, og nav-pilot config set mcp_hosts off slår spørsmålet av. Se Når en MCP-server ikke virker. Hvilke konfigfiler nav-pilot leser, står i opencode-hooks.md.

Nais MCP trenger innloggingen din. Under cplt kjører cplt serveren på maskinen din, så innloggingen ikke kommer inn i sandkassen, likt i Copilot CLI og opencode. I opencode går GitHub-serveren gjennom en proxy i cplt som bruker gh-innloggingen din. Se MCP gjennom cplt.

Få en server inn i registeret

Legg den til i apps/mcp-registry/allowlist.json i navikt/copilot og lag en pull request. Den må gjennom en sikkerhetsgjennomgang. Hvordan du skriver oppføringen, står i README for MCP-registeret.

Uten cplt

cplt er sandkassen som holder agenten unna SSH-nøkler, skytilganger og andre hemmeligheter (se Sandkassen). Uten cplt starter ingen klient. --no-sandbox finnes ikke lenger. nav-pilot avslutter med en feilmelding som viser hvordan du installerer cplt.

opencode

  • nav-pilot legger AGENTS.md, skills, kommandoer og agenter i ~/.config/opencode/ og oppdaterer dem ved hver oppstart. Filer du har endret selv, lar den være.
  • Oppstarten venter ikke på GitHub. nav-pilot bruker kopien av agentpakka i ~/.nav-pilot/sources/ og henter ny i bakgrunnen, høyst én gang i timen. Bare første oppstart venter på nedlastingen.
  • Velger du ikke modell selv, bruker nav-pilot standarden agentpakka oppgir. For agentpakka nav-pilot er det GPT-6 Sol.
  • nav-pilot export opencode skriver agentpakka til .opencode/ i repoet. Du trenger det ikke for å bruke opencode.
  • nav-pilot setter opp OpenTelemetry for opencode, med mindre du har slått av telemetri.

Testet versjon

nav-pilot er testet mot opencode >=1.18.20,<1.19 og >=2.0.24,<2.2. Utenfor dette advarer nav-pilot og starter likevel, men hooks og delegeringssperre er ikke testet. nav-pilot doctor viser versjonen din. opencode 3 starter ikke før vi har testet den.

opencode 2 krever:

  • macOS eller Linux med cplt fra 22. oktober 2026 eller nyere (cplt --version minst 2026.10.22-172931). Med eldre cplt stopper nav-pilot og sier hvordan du oppdaterer.
  • På Linux må bubblewrap (bwrap) være installert.
  • Med Linux-kjerne eldre enn 6.7 kan ikke cplt stenge portene til økta. Da beskytter bare passordet til tjenesten den.

Fra opencode 1 til 2

nav-pilot støtter opencode 1 til og med 19. november 2026. Oppdateringen opencode 1 selv tilbyr, holder deg på opencode 1. Oppgrader slik, etter hvordan du installerte opencode:

  • Homebrew: brew uninstall opencode && brew install anomalyco/tap/opencode-v2
  • npm: npm uninstall -g opencode-ai && npm i -g @opencode/cli@2.1.4
  • Installasjonsskriptet: rm ~/.opencode/bin/opencode && npm i -g @opencode/cli@2.1.4

Oppgraderingen kan ikke angres: opencode 2 skriver om databasen fra opencode 1. Du må logge inn på nytt, fordi innloggingen (auth.json) ikke blir med. Når du starter opencode 1, viser nav-pilot den riktige kommandoen for din maskin.

Deling og oppdatering

Hver økt nav-pilot starter, får "share": "disabled" og "autoupdate": "notify", uansett hva opencode.json sier. Deling ville lastet opp økten til opencode.ai, og en oppdatering midt i en økt kunne gitt deg en versjon utenfor det testede området. nav-pilot setter også "share": "disabled" i ~/.config/opencode/opencode.json når fila ikke sier noe om deling. Står det "auto" der, får du en advarsel.

Økter nav-pilot starter, får lese filene i ~/.config/opencode/ uten å spørre om external_directory, men ikke endre dem. Har du satt external_directory til "deny", legger nav-pilot ikke til noe. Detaljene står i opencode-hooks.md.

Lokal delegering

Bare i opencode kan hovedagenten kjøre i skyen og delegere avgrensede jobber til local-worker, en subagent på den lokale modellen. local_dispatch styrer hvor mye som delegeres. Se Styr delegeringen.

Copilot CLI

mode = autopilot, context_tier, ask_user og utvidelser (extensions) finnes bare i Copilot CLI. I cplt kjører Copilot CLI kommandoer på egen hånd og spør når den trenger det, med mindre du har satt nav-pilot config set autonomy conservative. En lokal modell tar hele økten, uten delegering, se Lokal modell på Mac.

nav-pilot henter ikke GitHub-tokenet selv. Copilot prioriterer COPILOT_GITHUB_TOKEN, GH_TOKEN, så GITHUB_TOKEN. På macOS sender cplt gh auth token --hostname github.com som GH_TOKEN og stenger Keychain når Copilot og gh bruker samme konto, og lar Keychain være åpen når kontoene er ulike eller tvetydige. copilot_auth_mode filtrerer bare miljøet før cplt starter. env_only krever token der, og gh_only fjerner variablene.

pi eksperimentell

Installer pi med npm i -g @earendil-works/pi-coding-agent. nav-pilot legger agentpakka i ~/.nav-pilot/pi/ og gir pi skills og AGENTS.md som flagg. Dette mangler:

  • Hooks: ingen maskering, ingen loop guard og ingen gates.
  • --agent: pi kan ikke bytte agent. Personaen blir en del av systemprompten, og tools: gjelder ikke.
  • Lokal modell: ingen local-worker, local_dispatch eller local_endpoint.
  • Sjekk mot Navs MCP-register.
  • Innstillingene mode, reasoning_effort, context_tier, allow_all_tools, ask_user og log_level. nav-pilot advarer om dem.

Kjente mangler i opencode

Hookene kjører som en plugin nav-pilot legger inn ved oppstart. Dette dekker de ikke:

  • --pure: opencode laster ingen plugins, så ingen hooks kjører. nav-pilot sier fra ved oppstart.
  • Vedlegg som bilder og PDF-er går til modellen uten maskering. Maskeringen virker på tekst.
  • Sjekken mot MCP-registeret dekker ikke servere du legger til midt i økten, konfig fra .well-known/opencode eller en organisasjon du er logget inn i, eller administrerte innstillinger på macOS.
  • Plugins i repoet (.opencode/plugin og plugin i repoets opencode.json) er kode som kjører med agentens rettigheter, i sandkassen. I opencode 2 kan en slik plugin også slå av nav-pilots hooks. Stoler du ikke på repoet, start med OPENCODE_DISABLE_PROJECT_CONFIG=1. Da laster opencode verken plugins, MCP-servere eller konfig fra repoet.
  • Hovedagenten kan velge en annen modell for en underagent, og valget går foran modellen i agentpakka. opencode spør deg ikke (opencode#51071). Så lenge lista over tillatte leverandører som nav-pilot setter ved oppstart gjelder, må modellen være en GitHub Copilot-modell eller den lokale modellen. Utvidelser og konfig som endres senere, er ikke dekket. Valget kan gi en dyrere modell og flere premiumforespørsler. Betyr kostnaden noe, sjekk hvilken modell underagenten kjører på, og skriv i oppdraget at modellen ikke skal byttes. Lager du agentpakker: modellen du setter i agentfila, er et råd, ikke en garanti.
  • Tale (GPT-Live) er ikke tillatt med nav-pilot. Talefunksjonen i opencode 2.1 kobler seg rett til OpenAI, xAI eller Google når den finner en API-nøkkel for dem, lagret i opencode eller i en miljøvariabel som OPENAI_API_KEY. Den sjekker ikke lista over tillatte leverandører, så nav-pilots sperre stopper den ikke. Ikke lagre nøkler for openai, xai eller google i opencode, og ikke bruk tale. cplt slipper ikke miljøvariabler med slike nøkler inn i sandkassen som standard. Med cplt 2026.10.23-070444 eller nyere stenger nav-pilot dem også når noen slipper dem inn med --pass-env, --inherit-env eller .cplt.toml (navikt/cplt#817). Lagrede nøkler og tale via OpenCode Console kan likevel ikke stenges med konfig.

Resten, blant annet kodemodus og hva terminalen viser, står i opencode-hooks.md.