Guider

Tilpasse

Repoet ditt trenger ofte egne regler og egen kontekst. Slik legger du dem til uten å miste oppdateringene fra nav-pilot.

brew update
brew upgrade navikt/tap/nav-pilot navikt/tap/cplt
copilot update    # Copilot CLI
opencode upgrade  # hvis du bruker opencode

Endre innstillinger

Innstillingene dine ligger i ~/.nav-pilot/config.toml. Det finnes ingen konfig per repo. Et flagg vinner over fila, og fila vinner over standardverdien.

nav-pilot config                 # innstillingssiden i terminalen
nav-pilot config setup           # veiviser: klient, modus, modell og hva agenten får gjøre selv
nav-pilot config set <nøkkel> <verdi>
nav-pilot config unset <nøkkel>  # tilbake til standardverdien
nav-pilot config show            # hver nøkkel, verdien og hvor den kommer fra
nav-pilot config init            # lag fila med alle valg kommentert ut

Slik kan fila se ut:

# Skjemaversjon
version = 1

# Klient (copilot er standard)
client = "opencode"

# Modell. En Copilot-id som claude-opus-4.8 virker for copilot og opencode;
# opencode kjører den som github-copilot/claude-opus-4.8.
# Uten modell velger klienten selv.
# model = "claude-opus-4.8"

# Modus (default | plan | autopilot), bare Copilot
# mode = "default"

# Resonneringsinnsats (none|low|medium|high|xhigh|max)
reasoning_effort = "high"

# Loggnivå
# log_level = "info"

Alle nøklene står i referansen.

Teamets egne instruksjoner

Legg teamets filer i .github/instructions/, ved siden av det nav-pilot installerer. nav-pilot rører aldri filer den ikke har installert selv.

.github/instructions/
  golang.instructions.md           ← fra nav-pilot
  security-owasp.instructions.md   ← fra nav-pilot
  team-conventions.instructions.md ← teamets egen fil

Prosjektkontekst med nav-pilot init

nav-pilot init lager tre filer med TODO-er, forhåndsutfylt etter stacken den finner. Teamet fyller inn resten. nav-pilot lager filene én gang og rører dem ikke etterpå. Filer som finnes fra før, blir stående.

Legg til en «Språk»-del i AGENTS.md, så agenten vet hvilket språk som gjelder hvor. Et vanlig valg i Nav: fagbegreper som vedtak, meldekort og dagpenger beholder norske navn i koden, tekniske termer er på engelsk, og teamet velger språk for kommentarer og commit-meldinger.

nav-pilot init
# AGENTS.md
# .github/copilot-instructions.md
# .github/copilot-review-instructions.md

Overstyre installerte filer

Vil teamet eie en fil nav-pilot vanligvis oppdaterer, legg den i .github/copilot-sync.json. nav-pilot sync hopper over filene i overrides, så teamets versjon blir stående.

{
  "overrides": [
    ".github/instructions/golang.instructions.md"
  ]
}

Mer om hva sync gjør med filene, står i Tilpasse sync.

Ignorere enkeltkomponenter

Når agentpakka får en ny komponent, sier nav-pilot fra ved oppstart. Vil du ikke ha den, stopper du varselet. ignore virker bare for installasjonen i ~/.copilot (--user).

nav-pilot ignore agent rust-agent --user
nav-pilot ignore skill rust-development --user
nav-pilot ignore instruction nextjs-aksel --user

Slå hooks av og på

nav-pilot legger egne hooks i ~/.copilot/hooks/, og de kjører i alle økter med Copilot CLI. Fem nøkler slår dem av og på, og alle er på som standard:

  • hook_loop_guard: sier fra til modellen når den gjør det samme kallet om og om igjen.
  • hook_redact_secrets: maskerer tokener, nøkler og passord i verktøyresultater før modellen leser dem.
  • hook_redact_fnr: maskerer fødselsnummer, D-nummer og H-nummer.
  • hook_injection_note: merker verktøyresultater som ser ut som instrukser til modellen, så den leser dem som data.
  • hook_action_check: spør den lokale modellen om en risikabel skallkommando, for eksempel kubectl delete eller rm -rf, gir mening før den kjører, og lagrer svaret. Den stopper ingenting, og KI-agenten ser ikke svaret. Virker bare med lokal modell. Slå den av med off.Kommandoene den sjekker: endringer med kubectl, nais, gcloud og helm, terraform apply, rm -r, git push --force og lignende. Modellen vurderer om kommandoen står i forhold til formålet, om den er destruktiv, og om formålet agenten oppga støtter den. Med log lagres svaret i telemetrien og en lokal logg, og kommandoen kjører alltid. Den krever local_enabled og en server som kjører, og starter aldri en server selv.
nav-pilot config set hook_redact_fnr false   # fjernes ved neste oppstart
nav-pilot config set hook_redact_fnr true    # på igjen

Kan ikke nav-pilot lese config.toml, kjører maskeringen og loop guard (stopper agenten når den gjentar seg) likevel, og du får beskjed på stderr. Modellen får ikke vite terskelen, så den kan ikke heve den.

Hooks fra agentpakka er kode

Agentpakka har også hooks. En hook er et Python-skript Copilot CLI kjører ved verktøykall, ikke tekst modellen leser. nav-pilot install legger dem inn sammen med resten, så les dem før du stoler på dem. De ligger i .github/hooks/ eller ~/.copilot/hooks/. nav-pilot uninstall fjerner bare det nav-pilot har skrevet, så dine egne hooks blir stående.

To av hookene i agentpakka er porter som kan stoppe et verktøykall: polling-porten og ARIA-porten. Portene slipper kallet gjennom når Python svikter: python3 mangler, skriptet feiler, eller det svarer ikke innen fristen på ett sekund. Hver port har et unntak: POLL_OK=1 foran kommandoen for polling-porten, og en kommentar med ARIA_OK og begrunnelsen ved siden av role-attributtet for ARIA-porten. ARIA-porten ber bare modellen spørre deg og nevner ikke merket. Merket er et spor du legger igjen etter at du har sagt ja. Det er ingen lås, for en modell kan skrive det selv.