Hva er cplt?
cplt sandboxer AI-kodingsagenter med OS-primitiver — macOS Seatbelt og Linux Landlock + seccomp-BPF. All tilgang til filer, nettverk og prosesser styres av kjernen, ikke av agenten selv.
Nøkkelfunksjoner:
- Filsystem-sandbox — agenten ser bare prosjektmappa og eksplisitt tillatte stier
- Nettverksproxy — all utgående trafikk filtreres, telemetri og analytics blokkeres
- Credential-beskyttelse — SSH-nøkler,
.env-filer og registry-tokens er utilgjengelige - Multi-agent — støtter Copilot CLI, OpenCode og generiske shell-agenter
- Konfigurerbar — én TOML-fil per prosjekt, alt kan overstyres per kjøring
brew install navikt/tap/cplt
cplt -- -p "fix the tests"
Se cplt-dokumentasjonen for interaktiv config-utforsker, nettverksdiagram og fullstendig funksjonsoversikt.
Hva er nytt (mai 2026)
Fire endringer denne uka gjør cplt tryggere og mer portabel.
Proxy aktivert som standard
CONNECT-proxyen er nå på som standard. Tidligere måtte du eksplisitt slå den på med --proxy. Proxyen binder til en ephemeral port (OS velger ledig port), så det er ingen konflikter med andre tjenester.
Hva dette betyr i praksis:
- All utgående trafikk fra sandboxed agents går gjennom proxyen
- Blokkerte domener (telemetri, analytics) stoppes automatisk
- Private IP-adresser blokkeres med mindre du eksplisitt tillater dem
Slå av med --no-proxy eller permanent:
cplt config set proxy.enabled false
# Eller: bruk fast port i stedet for ephemeral
cplt config set proxy.port 8888
Kilde: feat: enable proxy by default with ephemeral port (cplt, 2026-04-30)
Proxy log-nivå erstatter global quiet-flag
Proxy-logging til stderr er nå styrt av et eget log_level-felt, uavhengig av sandbox.quiet. Standard er none — ingen proxy-output til terminalen.
Tilgjengelige nivåer:
| Nivå | Hva som logges |
|---|---|
none | Ingenting til stderr (standard) |
error | DNS-feil, connect-feil |
blocked | Feil + blokkerte forbindelser |
all | Alt inkludert vellykkede tilkoblinger |
Audit-loggen (proxy.log_file) skriver alltid alt, uavhengig av nivå.
cplt config set proxy.log_level blocked
cplt config set proxy.log_file ~/.config/cplt/proxy.log
Kilde: feat(proxy): add log_level config (cplt, 2026-05-05)
Plattformagnostisk sandbox-API (Linux-støtte)
cplt har fått et felles sandbox-API som abstraherer bort plattformforskjeller. Samme config gir kernel-enforced sandbox på både macOS (Seatbelt) og Linux (Landlock LSM + seccomp-BPF).
Nye public API-funksjoner:
SandboxConfig— deklarativ policy uavhengig av OSprepare()→PreparedSandbox— genererer plattformspesifikk policyexec_sandboxed()— kjører kommando med kernel-enforced sandboxpreflight()— sjekker om OS-primitiver er tilgjengelige
Linux-enforcement krever kernel 5.13+ (Landlock v1). GitHub Actions Ubuntu runners støtter dette. Seccomp-BPF legger til syscall-filtrering som ekstra lag.
CI kjører nå integrasjonstester på begge plattformer: 37 macOS + 24 Linux kernel-tester.
Kilde: refactor: introduce platform-agnostic sandbox API (#19) (cplt, 2026-05-05)
Credential-filer blokkert som standard
Credential-filer for package managers er nå blokkert inne i sandboxen, selv om parent-katalogen er tillatt for lesing:
~/.m2/settings.xmlogsettings-security.xml(Maven)~/.gradle/gradle.properties(Gradle)~/.cargo/credentialsogcredentials.toml(Cargo)
En ondsinnet agent som har lesetilgang til ~/.m2/ (for å resolve dependencies) kan ikke lenger lese registry-passord eller tokens fra disse filene.
Override for utviklere som trenger private registries:
cplt config set allow.read '["~/.m2/settings.xml"]'
Eller per kjøring: cplt --allow-read ~/.m2/settings.xml
Kilde: feat: deny registry credential files inside allowed tool dirs (cplt, 2026-05-05)