Guider
Feil i sandkassen
Slå opp på feilmeldingen du ser. Hver oppføring sier hva som skjer, og hvilken kommando som løser det.
Start her
Mange feil er rettet i nyere cplt. cplt er en egen pakke, og brew upgrade navikt/tap/nav-pilot oppgraderer den ikke. Oppgrader cplt først:
brew update brew upgrade navikt/tap/cplt cplt --version
Har du installert cplt med apt på Debian eller Ubuntu:
sudo apt update && sudo apt upgrade cplt
Finner du ikke feilen under, spør cplt selv:
cplt check # virker sandkassen? cplt check net registry.npmjs.org # slipper proxyen gjennom denne hosten? cplt check path ~/.npmrc # får agenten lese eller skrive denne fila? cplt config set proxy.log_level blocked # vis blokkerte nettverkskall mens agenten jobber cplt config explain sandbox.allow_env_files # hva gjør en nøkkel?
Svarene fra cplt check har en linje som begynner med Reason:, og ofte en med Fix:. Kommandoene på denne siden er testet med cplt 2026.09.29-105335-ce50857 på macOS. Flere detaljer står i known-impacts.md (engelsk).
Versjon og konfig
unknown config key
cplt kjenner ikke nøkkelen. Dokumentasjonen følger nyeste cplt, så som regel er din cplt for gammel. Oppgrader som vist i Start her. Meldingen lister de gyldige nøklene. Står nøkkelen der, er den skrevet feil.
.cplt.toml uses a key this version of cplt does not understand
Repoets .cplt.toml er skrevet for en nyere cplt, og din cplt hopper over nøkkelen. Står den under [deny], blir en begrensning repoet ber om, ikke brukt. Oppgrader cplt. Får du unknown key '…' in [seksjon] om din egen konfig, sjekk fila:
cplt config validate
the [audit] section was removed
[audit] gjorde aldri noe, og cplt avviser nå alle audit.*-nøkler. Slett seksjonen fra ~/.config/cplt/config.toml. Vil du ha en logg over nettverkskallene, bruk proxy.log_file:
cplt config set proxy.log_file ~/cplt-proxy.log
Rapporten over filene agenten endret, sandbox.audit, er på som standard.
Nettverk
Sign-in failed: request failed: error sending request for url (https://github.com/login/oauth/access_token)
Du har en egen host-liste i proxy.allowed_domains, uten proxy.default_allowlist. I cplt eldre enn 2026.09.29-095137-e745d3a stengte den lista Copilot ute fra sine egne hoster, så innloggingen og modellkallene feilet. cplt check viste reach githubcopilot.com BLOCKED. Oppgrader cplt. Fra den versjonen er agentens egne hoster alltid med. Kan du ikke oppgradere nå, slå på cplts innebygde liste:
cplt config set proxy.default_allowlist true
BLOCKED-ALLOWLIST
Hosten står ikke på host-lista. Når proxy.allowed_domains er satt, slipper proxyen bare gjennom agentens egne hoster, hostene i fila og pakkeregistrene hvis proxy.default_allowlist er på. Finn fila og legg til hosten:
cplt config get proxy.allowed_domains # viser hvilken fil echo min.host.no >> <fila> cplt check net min.host.no # BLOCKED før, ALLOWED etter
Én host per linje. Mangler npm, Maven Central eller andre pakkeregistre, slå på proxy.default_allowlist som i oppføringen over.
Failed to CONNECT: 403 Forbidden — Private target blocked by cplt
Hosten peker til en privat IP-adresse, for eksempel repo.adeo.no eller en tjeneste på intern.nav.no. cplt stopper slike kall som vern mot SSRF. Proxyloggen viser BLOCKED-PRIVATE eller BLOCKED-PRIVATE-RESOLVED. Tillat domenet ved navn. Underdomener blir med:
cplt config set proxy.allow_private_domains repo.adeo.no cplt config set proxy.allow_private_domains intern.nav.no
En adresse skrevet som IP, for eksempel https://10.20.30.40/, kan ikke åpnes. Bruk DNS-navnet i stedet.
Sandbox is NOT ENFORCING
I cplt eldre enn 2026.09.29-095137-e745d3a sa cplt check dette også når sandkassen virket, men blokkerte noe den skulle slippe gjennom. Oppgrader og kjør cplt check på nytt. Står det fortsatt NOT ENFORCING, slapp sandkassen gjennom noe den skulle stoppe. Meld det i navikt/cplt.
policy too strict
Sandkassen virker, men konfigen din stenger noe agenten trenger. Linja under den feilede sjekken sier hva og hvorfor. En vanlig årsak er en egen host-liste, se BLOCKED-ALLOWLIST.
connect EPERM 127.0.0.1
cplt stenger localhost på macOS. Åpne porten til tjenesten du trenger, for eksempel PostgreSQL:
cplt config set allow.localhost 5432
Verktøy som bruker tilfeldige porter, som Next.js, Vite, esbuild og Gradle, trenger alle portene:
cplt config set sandbox.allow_localhost_any true
Filer og programmer
Operation not permitted, EPERM eller EACCES
Sandkassen nektet tilgang til en fil. Spør cplt om stien:
cplt check path <sti>
Stien sier som regel hvor du skal lete videre:
~/.npmrc,~/.gradle/gradle.propertieseller~/.m2/settings.xml: filene har tokens og er stengt med vilje.cplt config set allow.read ~/.npmrcgir agenten tokenene i fila. På Linux er bare~/.npmrcstengt. De to andre filene ligger i mapper agenten har tilgang til, og der kan agenten lese og skrive dem.~/Library/Preferences/pnpm: se pnpm-konfig..env,.env.localog lignende: se .env-filer..git/config: se git config./tmpeller/var/foldersnår en JVM starter: se JVM-oppstart.~/Library/Cachesnår et program skal kjøres: se Playwright og Cypress.
EPERM: operation not permitted, open …/Library/Preferences/pnpm/config.yaml
Gjelder macOS. cplt gir pnpm tilgang til feil mappe for konfigfila. Dette er rettet i cplt 2026.09.29-113343-7a9ef00 (cplt#616). Har du en eldre versjon, gir du lesetilgang til fila:
cplt config set allow.read ~/Library/Preferences/pnpm/config.yaml
Gi ikke tilgang til hele mappa. Der ligger auth.ini med tokenene til pnpm.
ERR_PNPM_EPERM … .claude/settings.local.json
Gjelder macOS. En pakke du installerer, for eksempel thread-stream@4.2.0, har en .claude-mappe. cplt stenger slike filer overalt i prosjektet, også i node_modules, og ingen innstilling åpner dem. Fra cplt 2026.09.29-113343-7a9ef00 gjelder dette ikke lenger i node_modules (cplt#627). Har du en eldre versjon, installerer du utenfor cplt og starter agenten etterpå:
pnpm install
EPERM: operation not permitted, open …/.yarnrc
yarn 1 stopper når den ikke får lese ~/.yarnrc. Gi lesetilgang til fila:
cplt config set allow.read ~/.yarnrc
Samme feil for ~/.npmrc (på Linux EACCES) håndterer cplt selv.
fatal: cannot hash .env.local
Gjelder macOS. Fila er sporet i git og endret. cplt stenger lesing av .env-filer, så git diff, git add og git commit -a stopper. En fil med hemmeligheter hører ikke hjemme i git. Slutt å spore den:
git rm --cached .env.local echo ".env.local" >> .gitignore
Operation not permitted på .env-filer
Gjelder macOS. På Linux kan agenten lese og skrive disse filene. cplt stenger både lesing og skriving av .env og .env.*, og av filer som heter .pem, .key og lignende. Next.js og dotenv får tomme variabler, og tester som skriver slike filer, feiler. Åpne dem hvis prosjektet trenger det:
cplt config set sandbox.allow_env_files true # alltid cplt --allow-env-files # bare denne økten
Da kan agenten lese alle slike filer i prosjektet, også hemmelighetene i dem.
fatal: unable to access ~/.config/git/work: Permission denied
Git-konfigen din har en includeIf som peker på en fil i ~/.config/git. Der får agenten bare lese config, ignore og attributes, og git stopper når en include ikke kan leses. På macOS står det Operation not permitted. Gi lesetilgang til fila, ikke hele mappa:
cplt config set allow.read ~/.config/git/work
execvp() of /bin/ps failed: Operation not permitted
Gjelder macOS. Programmer som kjører med rettighetene til eieren (setuid), som ps, top og sudo, kan ikke startes i sandkassen. Fra Go ser feilen ut som fork/exec /bin/ps: operation not permitted. Ingen innstilling åpner det. Kjør kommandoen utenfor cplt. cplt check exec /bin/ps svarer feilaktig ALLOWED (cplt#620).
openpty: Operation not permitted
Programmer som lager sin egen terminal, som script, tmux, screen, pexpect og node-pty, får ikke lov i sandkassen. Den kunne ellers lest det du skriver i andre terminalvinduer. Vanlige programmer i terminalen din virker. Kjør slike kommandoer utenfor cplt.
Java, Kotlin og Gradle
ConnectException: Could not connect to server
Gradle-daemonen og Kotlin-daemonen snakker sammen over tilfeldige porter på localhost, og cplt stenger localhost. Åpne alle portene:
cplt config set sandbox.allow_localhost_any true
Kommer feilen fortsatt med addresses:[/127.0.0.1], er det som regel ktlint eller detekt. Arbeidsprosessene deres får ikke med innstillingene cplt setter. Kjør disse oppgavene utenfor cplt, for eksempel ./gradlew ktlintFormat.
Operation not permitted når JVM-en starter
Gjelder macOS. Noen JVM-biblioteker lastes fra systemets temp-mappe før cplt har flyttet den. Bruk dette bare når feilen kommer mens JVM-en starter, ikke senere i bygget. Programmer i /tmp kan da kjøres, så cplt krever --force:
cplt config set sandbox.allow_tmp_exec true --force
Could not self-attach to current VM using external process
Gjelder macOS. MockK, Mockito og ByteBuddy kobler seg til JVM-en mens testene kjører, og det trenger en socket cplt stenger. Åpne den:
cplt config set sandbox.allow_jvm_attach true
På Linux stenger ikke cplt denne socketen, så der skyldes feilen noe annet.
Unable to download toolchain
Gradle prøver å laste ned en JDK til ~/.gradle/jdks, og den mappa er skrivebeskyttet i cplt. Feilen ser ut som et nettverksproblem, men det er skrivingen som stoppes. Kjør bygget én gang utenfor cplt, så ligger JDK-en klar. Eller bruk en JDK du har installert, i ~/.gradle/gradle.properties:
org.gradle.java.installations.auto-download=false org.gradle.java.installations.paths=/Library/Java/JavaVirtualMachines/temurin-25.jdk/Contents/Home
Playwright og Cypress
forbidden-sandbox-reinit
Chromium prøver å starte sin egen sandkasse, og det går ikke inne i cplt. Playwright MCP slår den på. Selve Playwright-biblioteket kjører uten. Playwright kjører dessuten nettleseren fra ms-playwright i cache-mappa, som cplt ikke lar programmer kjøre fra. Da står det Operation not permitted. Én innstilling løser begge:
cplt config set sandbox.allow_cache_exec ms-playwright
Mappa blir både skrivbar og kjørbar for agenten, og cplt slår av sandkassen til Chromium for Playwright MCP. cplt er da den eneste sandkassen rundt nettleseren. Starter du Chromium på en annen måte, sett --no-sandbox selv.
EPERM (1100)
cypress verify stopper under oppstart fordi Cypress kjører fra cache-mappa og trenger sitt eget område under ~/Library/Application Support/Cypress. Innstillingen Cypress åpner begge. Testkjøringer trenger i tillegg tilfeldige porter på localhost. Foreslå det i repoet, slik at alle i teamet får det:
cplt config set sandbox.allow_cache_exec Cypress cplt config set --repo sandbox.allow_localhost_any true # skriver til .cplt.toml cplt trust accept --all # godkjenn forslaget
Git og GitHub
error: could not write config file .git/config: Operation not permitted
Gjelder macOS. .git/config er skrivebeskyttet, fordi den kan få git til å kjøre kode utenfor sandkassen. Etter git push -u skriver git likevel set up to track og avslutter med 0. Den linja stemmer ikke. Push med grenen skrevet ut, og oppgi den når du lager pull requesten:
git push origin HEAD:min-gren gh pr create --head min-gren
git config, git remote add, git clone og git init må du kjøre utenfor cplt.
BLOCKED by sandbox: 'git push' is not allowed in this environment.
Git-vakta stopper push til standardgrenen og force push. main og master er alltid beskyttet, i tillegg til grenen origin peker på. Med strict stopper vakta all push. Lag en egen gren og push den:
git push origin HEAD:min-gren
Stopper vakta også push til en ny gren, og sier at the default branch of remote 'origin' could not be determined, vet den ikke hvilken gren som er standardgrenen. Kjør dette utenfor cplt, og start en ny økt:
git remote set-head origin -a
BLOCKED by sandbox: 'git remote' would change a remote's URL.
gh-vakta bruker origin til å avgjøre hvilket repo agenten får jobbe mot. Derfor stopper git-vakta git remote add origin, git remote set-url origin og git config med remote.origin.url eller url.*.insteadOf. Det gjelder overalt i sandkassen, også i test-repoer i en temp-mappe, og det er med vilje (cplt#622). Andre remotes kan du endre. Lager testene dine egne repoer med origin, kjør dem uten git-vakta:
cplt --no-git-guard exec -- <kommando>
Alternativt kan vakta bare advare. Det gjelder alle øktene dine, så slå den på igjen etterpå:
cplt config set git_guard.mode warn --force cplt config set git_guard.mode block
which is outside the startup repo
gh-vakta lar agenten jobbe mot repoet den startet i. Skal agenten jobbe i et repo til, legg det til. cplt finner utsjekkingen på maskinen din og sjekker at den er riktig repo:
cplt link navikt/annet-repo
aborted: you must first push the current branch to a remote, or use the --head flag
Uten terminal pusher ikke gh pr create for deg. Push først, og oppgi grenen:
git push origin HEAD:min-gren gh pr create --head min-gren
Permission denied (publickey)
SSH-nøklene dine er stengt i sandkassen. Bruk HTTPS i stedet. Kjør dette utenfor cplt, fordi det skriver til git-konfigen:
git remote set-url origin https://github.com/navikt/<repo>.git gh auth setup-git
error obtaining VCS status: exit status 128
Go-bygg i en git worktree kan finne en annen .git-mappe lenger opp, som agenten ikke har tilgang til. Slå av versjonsstemplingen:
go build -buildvcs=false
GOFLAGS fra skallet ditt slipper inn i sandkassen fra cplt 2026.09.29-113343-7a9ef00 (cplt#624). I eldre versjoner blir den filtrert bort. Hvordan du setter det for hele repoet med mise, står i worktree-guiden.
Agenten og innlogging
System vault not available
Gjelder Linux og WSL. Nøkkelringen nås over D-Bus, som cplt stenger, så agenten ber deg lagre tokenet i klartekst. Logg inn på maskinen din, og la cplt sende tokenet inn:
gh auth login # utenfor cplt, én gang cplt config set gh_guard.inject_token true --force
Tokenet ligger da i miljøet til alle prosesser i sandkassen, og alle kan lese det. Derfor krever cplt --force.
Sandboxing is disabled for this session because this host does not support it
Copilot CLI har sin egen sandkasse, og den kan ikke starte inne i cplt. cplt slår den av for økten, og Copilot sier fra med denne linja. Det er ventet, og innstillingene dine endres ikke. cplt er fortsatt sandkassen rundt agenten.
Henger Copilot rett etter oppstartsmeldingen, og organisasjonen din styrer Copilot-innstillingene, kan en policy kreve Copilots egen sandkasse. Det kan ikke cplt endre.
Operation not permitted i ~/Desktop eller ~/Documents
Gjelder macOS, og skjer også uten cplt. macOS beskytter disse mappene. Gi terminalen full disktilgang i Systeminnstillinger → Personvern og sikkerhet → Full disktilgang, og start terminalen på nytt. Eller kopier fila inn i prosjektet.
Andre problemer med nav-pilot står i feilsøkingsguiden, og hvordan sandkassen er satt opp, står i Sandkassen.