Nono setter agentens verktøy i egne sandkasser, ikke bare agenten
Isolerer hvert verktøy KI-agenten kaller på i sin egen kjernehåndhevde sandkasse, slik at git og gh ikke arver agentens tilganger.
De fleste agent-sandkasser låser inne selve agenten og lar verktøyene den delegerer til arve hele tilgangen: nøkkelringen, arbeidskatalogen, nettverket. nono, et Rust-prosjekt fra Luke Hinds og miljøet bak signeringsstandarden Sigstore, snur på det og kjører hvert delegerte verktøy (git, gh, curl, kubectl, pakkeforvaltere) i sin egen barnesandkasse med separat policy, egne filtilganger og egne legitimasjoner. Repoet står i 3 476 stjerner på GitHub, siste utgivelse er v0.71.0 fra 31. juli, og API-et er fortsatt merket som ikke helt stabilt før 1.0.
Isolasjonen er håndhevd av kjernen, ikke av agenten: Landlock på Linux, Seatbelt på macOS og Windows via WSL2. Skriver agenten et Python-skript og kjører det, arver barneprosessen restriksjonene, og det finnes ikke noe API for å utvide sandkassen innenfra.
«Sandkasser på applikasjonsnivå kan omgås av koden de holder inne» — Luke Hinds, skaperen av nono
Det praktiske utslaget ligger i profilene. En profil er komponerbar JSON som beskriver filsystem-omfang, nettverks-allowlist, legitimasjoner og hvilke kommandoer agenten får kalle. Du kan si at agenten får kalle gh, men at gh bare mottar et GitHub-token gjennom nonos legitimasjonsproxy, og at tokenet bare virker mot utvalgte API-stier gjennom L7-filtrering. Reglene bor i profilen, ikke i prompten, så agenten kan be om et verktøy uten å kunne utvide verktøyets sandkasse. Ferdige profiler for Claude Code, Codex og OpenCode ligger i registeret på registry.nono.sh, og nono profile init gir deg en redigerbar kopi som arver fra basisprofilen.
Innvendingen som kom i Hacker News-tråden da prosjektet ble lansert i februar, handlet om at nettverket er den vanskelige biten.
«Egress-filtrering virker viktigere for agenter enn minnebeskyttelse. Lar jeg agenten kjøre npm install, åpner jeg en nettverks-Pandoras eske» — veunes, kommentator på Hacker News
Svaret nono gir er allowlister per verktøy i stedet for per sesjon: pakkeforvalteren kan nå registeret sitt uten at agenten selv får åpne sockets. To ting å vite før du bygger dette inn i en CI-jobb. Prosjektet er fortsatt før 1.0, og registernavnerommet flyttet nylig fra always-further til nolabs-ai, så gamle profilreferanser i skript slutter å virke når det gamle navnerommet pensjoneres.
Hva bør du gjøre?
- Kjør kodeagenten din med
nono run --profile nolabs-ai/opencodeog se hva den faktisk trenger tilgang til. - Flytt tokenene ut av miljøvariabler og inn i legitimasjonsproxyen, med endepunkt-policy på de API-stiene agenten faktisk bruker.
- Oppdater profilreferanser fra always-further til nolabs-ai før det gamle navnerommet forsvinner.
KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.