Einangrun erindreka: lögin innan í kerfinu og vöktun þeirra

Í hverri viku birtist nýtt verkfæri sem lofar að „einangra“ erindreka (AI agents) sem skrifa kóða á vélinni manns. Sum sýna manni hvað erindrekarnir hafast að, önnur halda þeim hverjum frá öðrum og þau þriðju halda þeim frá vélinni sjálfri. Svo er eitt lag sem aldrei er nefnt í þessum samtölum. Það hefur legið á vélinni í tíu ár og heitir vírusvörn. Hér ætla ég að fara yfir lögin hvert af öðru: hvað þau stöðva í raun og hvar þau leka.
Yfirsýn er ekki stjórn
Byrjum á því sem mest er rætt um. Herdr er tmux endurbyggt fyrir erindreka: ein Rust-keyrsla, engir reikningar, engin skýjaþjónusta. Maður keyrir Claude Code, Codex eða annan erindreka í glugga, Herdr þekkir ferlið og merkir það vinnandi, fast, búið eða aðgerðalaust. Því fylgir líka skipanalína og socket-viðmót, þannig að leiðbeiningar eða annar erindreki getur spurt hvort tiltekinn gluggi sé búinn og lesið það sem hann skilaði. dmux gerir svipaða hluti ofan á venjulegan tmux og býr til nýjan glugga, nýtt git worktree og ræsir erindrekann í honum.
Þetta eru fín verkfæri og ég ætla ekki að gera lítið úr þeim. En þau leysa yfirsýn og ekkert annað. Þau segja mér hvað erindrekarnir mínir eru að gera núna. Þau segja mér ekkert um hvað þeir mega gera, og enn síður hvað gerist þegar einn þeirra gerir eitthvað sem hann mátti ekki. Þegar fólk segist hafa einangrað erindrekana sína með Herdr eða tmux hefur það oftast bara gert þá sýnilega, sem er allt annar hlutur.
Erindrekaeinangrun
Fyrsta raunverulega einangrunarspurningin snýst um hvernig þrír eða fimm erindrekar á sama kóðasafni komast hjá því að skemma hver fyrir öðrum. Svarið er orðið nokkuð staðlað og heitir git worktree. Hver miði fær sína eigin möppu og sína eigin vinnugrein, tveir erindrekar skrifa aldrei í sömu skrána og hver þeirra skilar sínu pull request. Claude Code býður þetta núna innbyggt fyrir undirerindreka (subagents), þannig að fyrir mörg verk þarf engar sérstakar leiðbeiningar.
Skráakerfið er samt ekki nema hálf sagan. Worktree einangrar möppur en ekki vélina sem þær liggja á. Tveir erindrekar sem báðir ræsa þróunarþjón á porti 3000 rekast á og sá seinni nær ekki að ræsast. Tveir erindrekar sem báðir keyra próf á móti sama staðbundna gagnagrunninum skrifa hvor ofan í annan og prófin verða óáreiðanleg án þess að nokkur sjái hvers vegna. Við þessu er engin stöðluð lausn komin. Það vantar lag sem úthlutar hverjum erindreka sínu netporti, sínum gagnagrunni og sinni umhverfisskrá, og enginn hefur smíðað það lag almennilega. Þangað til leysir maður þetta sjálfur, keyrir færri erindreka í einu eða hefur færri gagnagrunnspróf sem gætu skarast.
Innan í kerfinu: stiginn
Seinni einangrunarspurningin snýst um hversu mikið einn erindreki getur gert á vélinni sem hann keyrir á. Þar eru fjögur þrep og það borgar sig að líta á þau sem stiga en ekki sem valkosti sem maður velur á milli.
Leyfisstillingar
Neðsta þrepið er stillingin í erindrekanum sjálfum. Claude Code spyr um leyfi í fyrsta sinn sem hvert tól er notað, getur samþykkt skráabreytingar sjálfkrafa, keyrt í skipulagsham þar sem engu er breytt, eða keyrt alveg án leyfisspurninga (breytir án þess að spyrja). Codex býður þrjú stig: aðeins lestur, skrif í vinnumöppu og fullan aðgang. Hvort tveggja er skynsamlegt og ég nota hvort tveggja.
En það er rétt að hafa á hreinu hvers eðlis þetta er. Skjölun Claude Code orðar það sjálf: Leyfisreglur segja erindrekanum hvað hann eigi að gera, sandkassinn ræður hvað hann geti gert. Leyfisstillingar marka stefnu en reisa enga múra. Margir hafa sýnt með dæmum hvernig Claude Code kemst fram hjá sínum eigin bannlista, meðal annars með því að pakka bannaðri skipun inn í aðra sem er leyfð. Sé stefnan eina lagið tekur enginn eftir því þegar hún brotnar.
Milli stefnu og múra er eitt þrep til viðbótar sem ég vil nefna sérstaklega, og það eru krókar. Claude Code keyrir krók fyrir hverja tólanotkun og þar getur maður sett sínar eigin reglur. Cupcake (opinn hugbúnaður á GitHub) er dæmi um verkfæri sem gerir þetta fyrir mann. Það getur leyft aðgerð, stöðvað hana eða beðið um samþykki manns fyrst. Hjá okkur er þetta handskrifað: Eitt Python-handrit stöðvar eyðileggjandi git-skipanir og nokkur önnur mynstur. Krókar sjá samt aldrei nema það sem fer í gegnum erindrekann. Leiðbeiningar sem erindrekinn skrifaði og keyrði svo fara í gegnum krókinn í eitt skipti, sem „keyra þetta skipanasett“, og það sem leiðbeiningarnar taka sér svo fyrir hendur sér krókurinn ekki.
Sandkassi stýrikerfisins
Næsta þrep er girðing á stýrikerfi vélarinnar. Á Mac heitir hún Seatbelt og á Linux sér bubblewrap um hana. Skrifaðgangur er bundinn við tilteknar möppur og netumferðin fer í gegnum milliþjón með lista yfir leyfð lén. Bæði Claude Code og Codex hafa þetta innbyggt, og þegar Ry Walker bar saman átta sjálfstæð sandkassaverkfæri var niðurstaðan sú að fyrir flesta sé innbyggði sandkassinn rétta svarið.
Tvennt lekur samt. Milliþjónninn í sandkassa Anthropic sér ekki inn í dulkóðaða umferð, þannig að lén sem er leyft getur borið gögn út án þess að nokkur skoði þau. Og lyklar sem liggja í umhverfisbreytum eða skrám eru lesanlegir innan úr sandkassanum nema maður hafi sérstaklega gert eitthvað í því. Verkfæri á borð við nono taka á seinna atriðinu með því að geyma lyklana utan sandkassans og skjóta þeim inn í beiðnirnar í milliþjóninum, þannig að erindrekinn sér þá aldrei.
Gámur eða sýndarvél
Þriðja þrepið er að erindrekinn keyri í sinni eigin vél. Docker gaf út Docker Sandboxes í janúar 2026 með léttri sýndarvél fyrir hvern erindreka, þar sem einungis verkefnismappan er tengd inn og netumferð er stýrt með leyfis- og bannlistum. Anthropic heldur úti viðmiðunarumhverfi með eldvegg sem hleypir aðeins út á lén sem eru skráð fyrir fram, og það er sú aðferð sem þau mæla sjálf með ef maður ætlar að keyra erindrekann án leyfisspurninga. Munurinn á gámi og sýndarvél skiptir máli: Gámur deilir kjarna með vélinni en sýndarvélin gerir það ekki, og veikleiki í gámi er oft þar með veikleiki á vélinni sjálfri.
Þetta er ekki ókeypis því það fylgir þessu smá vesen. Heimamappan verður eftir fyrir utan, þannig að SSH-lyklar, skeljarstillingar og innskráning í tól fylgja ekki með, og það er einmitt tilgangurinn. Það þýðir líka að ýmislegt sem maður er vanur að þurfa ekki að hugsa um hættir að virka þangað til maður hefur tekið afstöðu til þess hvað fer inn og hvað má tengjast við hvað.
Skýið
Efsta þrepið er að erindrekinn snerti vélina manns aldrei. Claude Code á vefnum keyrir í sýndarvél hjá Anthropic, Codex Cloud vinnur verkið í gámi hjá OpenAI og skilar breytingaskrá, og Copilot og Cursor bjóða sambærilegar bakgrunnsútgáfur. Þetta er sterkasta einangrunin og um leið sú sem flestir nota minnst, því verkið sem þeir vilja fela erindreka er oftast tengt við vélina sem þeir sitja við: staðbundinn gagnagrunn, þróunarumhverfi, innskráð tól og hálfkláraða vinnugrein.
Fyrir utan kerfið: vöktunin
Þá er komið að laginu sem gleymist í flestum þessum umræðum. Allt sem talið er upp hér að ofan á eitt sameiginlegt: Það er stillt innan í sama kerfinu og erindrekinn keyrir í, af sama manni og ræsti hann. Leyfisstillingin, krókurinn, sandkassinn og gámurinn eru allt hlutar af sömu ákvörðuninni. Hafi ákvörðunin verið röng, eða komist erindrekinn fram hjá henni, er ekkert þarna sem tekur eftir því.
Til er lag fyrir utan þetta og það er frekar hversdagslegt: vöktun á hegðun ferla. Avast er með Ransomware Shield, Windows Defender með Controlled Folder Access og fyrirtæki keyra Defender for Endpoint, CrowdStrike eða SentinelOne. Á Mac fá þessi kerfi kjarnaupplýsingar gegnum Endpoint Security Framework. Little Snitch vaktar hvað fer út um netið og Santa ræður hvaða keyrsluskrár fá yfirhöfuð að fara í gang. Þessi lög voru smíðuð utan um gagnagíslatöku en ekki erindreka. Samt hafa þau einn eiginleika sem ekkert þrepanna fyrir ofan hefur: Þau treysta hvorki erindrekanum né stillingunum mínum, heldur dæma ferlið eftir því sem fer fram.
Hér þarf samt að fara rétt að afmörkuninni. Vernduð mappa utan um kóðasafnið sjálft er vitleysa: Erindrekinn skrifar þar hundruð sinnum á klukkutíma og eftir þriðju tilkynninguna slekkur maður á vörninni. Vörnin á að liggja á hinu, því sem er utan kóðasafnsins og erindrekinn á aldrei að snerta: lyklamöppunni, skýjastillingum, skeljarstillingum og git-krókum. Þar liggur einmitt gatið sem flest sandkassaverkfærin skilja eftir opið.
Tvennt til viðbótar gerir þetta lag mikilvægara en það sýnist við fyrstu sýn. Í fyrsta lagi erfast heimildir á Mac. Sé skelin manns með fullan diskaðgang, og það er hún hjá flestum sem einhvern tíma smelltu á „leyfa“ til að losna við gluggann, þá fær hvert ferli sem hún ræsir sama aðgang án þess að spurt sé aftur. Claude Code þar með talið. Í öðru lagi eru lyklar erindrekans sjálfs skotmark. Silverfort sýndi í júlí 2026 að Claude Code geymdi aðgangslykilinn sinn á Mac þannig að hvaða ferli sem er undir notandanum gat lesið hann, án leyfisglugga, og notað hann til að komast áfram inn í tengdar þjónustur. Á Windows og Linux liggur lykillinn í skrá, sem er einmitt þar sem vírusvarnir vakta hvort eð er. Vöktunin fyrir utan ver mann þannig gegn erindrekanum, og hún ver um leið lykla erindrekans gegn öllu öðru.
Hvað hvert lag stöðvar og hvar hvert lekur
| Lag | Stöðvar | Þekktur leki | Kostnaður |
|---|---|---|---|
| Herdr og tmux | Ekkert, sýnir aðeins stöðu | Á ekki við | Enginn |
| git worktree | Erindrekar skrifa í sömu skrár | Port, staðbundinn gagnagrunnur, umhverfisskrár | Lítill |
| Leyfisstillingar | Aðgerðir sem erindrekinn spyr um | Innpökkun skipana, keðjur, leiðbeiningar | Leyfisgluggar |
| Krókar | Mynstur sem maður hefur skrifað reglu fyrir | Það sem gerist inni í leiðbeiningum | Viðhald á reglum |
| Sandkassi stýrikerfis | Skrif utan leyfðra mappa, óleyfð lén | Dulkóðuð umferð, lesanlegir lyklar | Lítill þegar hann er innbyggður |
| Gámur eða sýndarvél | Allt á vélinni utan verkefnismöppu | Það sem maður tengir inn | Uppsetning, tól vantar |
| Skýið | Vélina sjálfa, alfarið | Verkið þarf oft vélina | Bið, samhengi vantar |
| Vöktun fyrir utan | Skrif í varðar möppur, óvænt netumferð | Kóðasafnið sjálft er óverjandi | Tilkynningar, þarf skýra afmörkun |
Taflan dregur fram það sem ég vildi koma á framfæri: Ekkert eitt lag dugar, og lögin bæta hvert annað upp einmitt þar sem hin leka. Leyfisstillingin lekur inn í leiðbeiningarnar en sandkassinn grípur skrifin sem leiðbeiningarnar framkvæma. Sandkassinn lekur lyklum en vöktunin fyrir utan grípur lesturinn á lyklamöppunni. Yfirsýnin, sem umræðan snýst mest um, kemur hvergi við sögu í þessari keðju. Hún er það sem maður horfir á meðan keðjan vinnur.
Hvernig ég myndi raða þessu upp
Freistandi væri að ljúka greininni á lista sem allir gætu fylgt, en slíkur listi væri villandi. Fjöldi laganna sem maður þarf ræðst af því hvaða kóða erindrekinn snertir. Ég myndi skipta kóðanum í þrjá flokka.
Kóði viðskiptavinar
Hér eru kröfurnar strangastar og þær ráðast af samningnum en ekki af mér. Erindrekinn keyrir í gámi eða sýndarvél sem hefur aðgang að kóðasafni viðskiptavinarins og engu öðru, en aldrei beint á vinnuvélinni. Hann fær hvorki raungögn né lykla að rekstrarumhverfi, aðeins gervigögn, og netumferð er bundin við kóðasafnið og þau pakkasöfn sem verkið þarf. Leyfisstillingunum er ekki breytt og erindrekinn keyrir aldrei án leyfisspurninga. Allar breytingar berast sem pull request og eru lesnar yfir. Áður en erindreki í skýinu kemur til greina þarf að liggja fyrir að vinnslusamningurinn leyfi að kóðinn fari til fyrirtækisins sem rekur mállíkanið.
Innri frumgerð
Í frumgerðum má slaka mest á. Frumgerð er einnota og í henni eru hvorki raungögn né lyklar sem skipta máli. Worktree og innbyggði sandkassinn duga, og innan sandkassans er í lagi að erindrekinn samþykki sínar eigin breytingar. Þannig sparast tími sem annars færi í leyfisglugga, og frumgerð snýst jú um hraða. Ein regla gildir samt áfram: Fjöldi erindreka miðast við það sem maður kemst yfir að lesa, því frumgerð sem enginn hefur lesið sannar ekki neitt.
Innri vara í rekstri
Vara í rekstri liggur þarna á milli. Hvert worktree er tekið út frá þróunargrein en aldrei aðalgreininni, krókar stöðva eyðileggjandi skipanir og sandkassinn er alltaf virkur. Engir lyklar að rekstrarumhverfinu eru geymdir á vinnuvélinni, svo erindrekinn hefur þar ekkert að sækja. Uppsetning í rekstur fer eingöngu fram í gegnum sjálfvirka ferlið og aldrei að frumkvæði erindrekans. Vöktunin fyrir utan gætir lyklamöppunnar og skeljarstillinganna.
Takmörk prófana á eigin vél
Eitt á við um alla flokkana þrjá. Þegar erindreki segir að prófin standist hefur hann keyrt þau á vélinni manns, og sú vél er ekki rekstrarumhverfið. Útgáfur eru aðrar, ytri þjónustur eru hermdar og gagnagrunnurinn er staðbundinn, oft sameiginlegur með öðrum erindrekum. Sandkassinn bætir gráu ofan á svart, því hann lokar á netið og samþættingarpróf sem ná ekki sambandi eru þá ýmist hermd eða felld niður án þess að nokkur taki eftir því. Verst er að erindreki sem á að láta prófin standast getur einfaldlega breytt prófunum.
Staðbundin próf eru því fljótleg fyrsta sía fyrir erindrekann en engin sönnun. Sönnunin fæst í hreinu umhverfi sem líkist rekstrinum, fyrst með sjálfvirkum prófunum á hverju pull request og síðan í prófunarumhverfi áður en nokkuð fer í loftið. Grænt ljós á vélinni þýðir aðeins að erindrekinn megi skila verkinu.
Ekki afrita þessa skiptingu
Skiptingin hér að ofan sýnir aðferð en hana á ekki að taka upp óbreytta. Hvaða lög henta rekstri þínum ræðst af kröfum sem þú hefur þegar sett þér í upplýsingaöryggisstefnu, persónuverndarstefnu og samningum við viðskiptavini. Farðu yfir lögin í töflunni, flokkaðu kóðann sem erindrekarnir þínir snerta og ákveddu fyrir hvern flokk hvaða lög eru nauðsynleg og hver eru valfrjáls. Verkfæri til að halda utan um marga glugga má bíða þangað til því er lokið. Vissulega er gaman að sjá þrjá erindreka vinna í einu, en vöktunin sem enginn horfir á ræður því hvort maður sefur rótt.