Blogi

Kimi Code Never Ask: tilat ja vaaralliset komennot

Markdown

Never Ask -tilassa Kimi Code suorittaa rm -rf- ja shutdown-komennot kysymättä. Miten 3 tilaa eroavat toisistaan, ja miten voit kieltää vaarallisen komennon config.toml-tiedostossa?

Lue koko artikkeli

Kimi Codessa Never Ask -tila (/auto) hyväksyy kaiken automaattisesti: se suorittaa rm -rf-, shutdown- ja reboot-komennot kysymättä kertaakaan. Agentti kysyy ennen näitä komentoja vain kahdessa muussa tilassa, Always Askissa ja Ask When Neededissä.

Työskentelen itse Claude Codessa niin, että ”salli kaikki” on käytössä; muuten istuisimme klikkaamassa: kyllä, kyllä, kyllä. Mutta joka kymmenes kerta agentti tekee asiat omalla tavallaan.

Myös henkilökohtainen prototyyppi voi paljastaa arvokkaita tiedostoja ja tunnistetietoja. Käytä eristettyä kopiota tai konttia rajatuilla oikeuksilla ja todennetulla varmuuskopiolla. Anna asiakasjärjestelmissä agentille lisäksi erillinen tietokantaidentiteetti, jolla on vain tehtävän tarvitsemat oikeudet.

Katsotaan, mitä kukin Kimi Coden tila tekee, missä suojaus toimii ja miten voit asettaa kiellon. Aloitetaan.

Katso palvelun käyttöä koskevat tiedot Ailoot-dokumentaatiosta.

Tärkein asia

Kimi Codessa on 3 tilaa. Always Ask on oletustila: lukeminen tapahtuu automaattisesti, ja vahvistat kaiken muun yksi toiminto kerrallaan. Ask When Needed (/yolo) hyväksyy tavalliset muokkaukset itse, mutta kysyy ennen avaimia sisältävien tiedostojen käyttöä, vaarallisten komentojen suorittamista ja suunnittelutilasta poistumista. Never Ask (/auto) ei kysy mitään, eikä vaarallisten komentojen suojaus toimi siinä. Voit asettaa pysyvän kiellon deny-säännöllä tiedostossa ~/.kimi-code/config.toml, eikä Never Askia kannata ottaa käyttöön, kun käytössä on oikea tietokanta.

Miten Kimi Coden 3 tilaa eroavat toisistaan?

Jos olet jo asentanut Kimi Coden, olet nähnyt hyväksymispaneelin: agentti haluaa muokata tiedostoa tai suorittaa komennon ja odottaa ”kyllä”-vastaustasi. Tilojen nimet olivat aiemmin Manual, YOLO ja Auto, minkä vuoksi niissä käytetään yhä vanhoja komentoja: /yolo ja /auto.

Always Ask. Oletustila. Agentti lukee tiedostoja kysymättä, mutta vahvistat erikseen jokaisen muokkauksen ja komennon. Tämä on hitain tila.

Ask When Needed. Otetaan käyttöön komennolla /yolo. Se hyväksyy tavalliset muokkaukset ja komennot itse, mutta kysyy ennen .env-tiedoston (projektin salasanat ja avaimet sisältävän tiedoston) ja palvelinten SSH-avainten käyttöä, vaarallisia komentoja, kuten shutdown (sammuta tietokone) ja rm -rf (poista kokonainen kansio ohittamalla roskakori), sekä suunnittelutilasta poistumista. Agentti voi myös esittää sinulle kysymyksen.

Never Ask. Otetaan käyttöön komennolla /auto. Kaikki hyväksynnät annetaan automaattisesti, myös arkaluonteisten tiedostojen ja suunnittelutilasta poistumisen osalta. Agentti ei kysy sinulta mitään vaan päättää kaikesta itse.

Taulukko Kimi Coden kolmesta käyttöoikeustilasta: Always Ask, Ask When Needed, Never Ask
3 käyttöoikeustilaa Kimi Code CLI:ssä.

Suunnittelutila otetaan käyttöön erikseen näppäinyhdistelmällä Shift-Tab tai komennolla /plan: agentti kirjoittaa ensin suunnitelman ja odottaa hyväksyntääsi ennen tiedostoihin koskemista.

Milloin työskentelen itse ilman vahvistuksia

Claude Codessa ”salli kaikki” on oletusasetukseni, ja se on käytössä jokaisessa uudessa keskustelussa. Ilman sitä vibe coding on liian hidasta. Vibe coder ymmärtää jo valmiiksi hyvin vähän, ja sitten pitää vielä painella painikkeita: kyllä, kyllä, kyllä, ei, ei, ei.

Tässä tilassa agentti voi kuitenkin tehdä aivan mitä tahansa harkitsematonta, myös pyyhkiä tietokannan. Sen jälkeen se sanoo ”anteeksi, pyydän anteeksi”, mutta joskus sen tekemisiä ei enää voi korjata. Tila on siis pelottomille, ja vastuu on sinulla.

Omat sääntöni ovat nämä. Käytä henkilökohtaisissa projekteissa, kokeiluissa ja prototyypeissä vahvistuksetonta tilaa vain eristetyssä kopiossa tai kontissa ilman arvokkaita tiedostoja tai tuotantotunnisteita, rajatuilla oikeuksilla ja varmuuskopiolla. Asiakkaiden puuttuminen ei suojaa henkilökohtaisia tiedostoja tai avaimia, ja eristyskin pitää tarkistaa. Mutta jos otat tämän tilan käyttöön samassa projektissa, jolla on pääsy tuotantopalvelimelle, yksi prompt riittää siihen, että agentti poistaa tietokannan siellä yön aikana ja ottaa muutokset käyttöön live-sivustolla.

Miksi sanallinen kielto ei suojaa sinua

Monet kirjoittavat agentin ohjeisiin ”älä koske tietokantaan”. Älä luota siihen, että se suojaa sinua. Sanot sille: kuule, älä mene tuonne. Mutta se menee silti ja ottaa tarvitsemansa silloin kun sitä tarvitsee. Erityisesti kiinalainen Kimi: se rikkoo kaikki asettamasi kiellot. Amerikkalaiset mallit on koulutettu paljon paremmin olemaan tekemättä niin.

Käytän Kimiä silti työssäni. Kimi K3 on hyvin tarkkaavainen; käytän sitä tarkistamaan projekteista vuotaneita avaimia ja keräämään tietoa. Kerran käytin kaikki sen käyttörajat loppuun parissa päivässä. Kimi ei temppuile ja tekee kaiken mitä pyydät. Siksi tarvitset eristystä, kun työskentelet sen kanssa. Kuvailin tässä, miten testasin sitä omilla tehtävilläni.

Tarvitset 2 eristyskeinoa:

  1. Komentojen estolista asetuksissa. Se estää täsmäävät työkalukutsut. Yhden komennon kirjoitusasua vastaava kuvio ei muodosta täydellistä rajaa muita työkaluja tai vastaavia toimia vastaan. Käytä sitä käyttöjärjestelmän, kontin ja tietokannan oikeuksien rinnalla.
  2. Tietokannan lukuoikeudet. Käytössä olevassa tietokannassa agentilla on erillinen käyttäjä, jolla on vain lukuoikeudet. Silloin agentti ei pysty pyyhkimään tietokantaa edes Never Ask -tilassa.

Missä vaarallisten komentojen suojaus toimii?

Kimi Coden sisäänrakennettu suojaus vaarallisia komentoja vastaan on oletusarvoisesti käytössä. Always Ask- ja Ask When Needed -tiloissa se pyytää vahvistusta ennen komentoja shutdown, reboot (käynnistä uudelleen) tai rm -rf. Never Askissa nämä komennot suoritetaan pysäyttämättä.

Poikkeuksia on 2:

  • rm -rf suoritetaan kysymättä, jos se poistaa vain väliaikaisten kansioiden /tmp tai /temp sisällön (versiosta 0.43.0 alkaen);
  • Ask When Needed -tilassa Kimi Code ei kysy etukäteen sellaisista päätekomentoista, joita se ei pysty jäsentämään (versiosta 2.0.1 alkaen).

Versiossa 0.40.0 Auto-tila esti vaaralliset komennot; esto poistettiin versiossa 0.41.0.

Ennen/nyt: Kimi Coden autonominen tila esti aiemmin vaaralliset komennot, mutta ei enää
0.40.0: Auto esti vaaralliset komennot. 0.41.0: esto poistettiin.

Voit poistaa suojauksen käytöstä asetustiedoston ~/.kimi-code/config.toml osiossa [permission] määrittämällä dangerous_command_guard = false tai käyttämällä muuttujaa KIMI_CODE_DANGEROUS_COMMAND_GUARD=false. Kehittäjät suosittelevat tekemään näin vain ympäristöissä, joissa vaaralliset komennot pysäytetään jo muutenkin ulkoisesti.

Pysyvän kiellon asettaminen Kimi Codessa

Kun agentti haluaa muuttaa jotakin, Kimi Code näyttää hyväksymispaneelin:

  • Approve: käytä nuolinäppäimiä ja Enter-näppäintä tai paina suoraan 1, 2 tai 3;
  • Reject: Esc, Ctrl-C tai Ctrl-D;
  • Approve for this session: samanlaiset kutsut hyväksytään istunnon loppuun asti;
  • Permanent rules: pysyvä salli- tai kiellä-sääntö asetustiedostossa.

Pysyvät säännöt kirjoitetaan asetustiedostoon ~/.kimi-code/config.toml lohkoina [[permission.rules]]. Kimi Code tarkistaa ne järjestyksessä, ja ensimmäinen osuma ratkaisee, joten sijoita kiellot sallimisten yläpuolelle. Jokaisella säännöllä on decision: allow (salli heti), deny (kiellä heti) tai ask (kysy joka kerta).

Kielto komennolle rm -rf ja kysymys ennen kaikkia muita päätekomentoja:

[[permission.rules]]
decision = "deny"
pattern = "Bash(rm -rf*)"

[[permission.rules]]
decision = "ask"
pattern = "Bash"

Päätekomentojen mallissa kuvio tulee sulkeisiin: Bash(command-pattern); tiedostojen lukemisessa käytetään muotoa Read(path-pattern). MCP-työkalut, AgentSwarm ja omat työkalusi voidaan kieltää vain niiden täydellisillä nimillä.

Jos et ole tekninen käyttäjä etkä halua avata asetustiedostoa, liitä vain alla oleva prompt agentille: se selvittää itse, mitä pitää rajoittaa. Pyydä sitä kuitenkin ensin kertomaan, kuinka paljon tämä hidastaa työskentelyäsi. Jos olet tottunut työskentelemään ilman vahvistuksia, jotkin asiat lakkaavat toimimasta, kun lisäät kiellot. Tässä on käyttämäni prompt:

Analysoi projektini ja kerro, onko sinulla pääsyä tuotantopalvelimelle, staging-tietokantaan ja tuotantoavaimiin. Jos on, määritä suojaus vaarallisia komentoja vastaan: kiellä kokonaisten kansioiden poistaminen, komennot, jotka kirjoittavat muutoshistorian peruuttamattomasti uudelleen, sekä suorat komennot tuotantotietokantaan. Näytä ensin suunnitelma muodossa ”ennen – jälkeen” ja kerro rehellisesti, kuinka paljon tämä hidastaa työskentelyäni.

Olen käsitellyt saman asian määrittämistä Claude Codessa erillisessä artikkelissa. Katso myös, miten Claude Coden Auto-tila tarkistaa agentin toiminnan.

Minkä tilan valita?

  • Haluat nähdä agentin jokaisen vaiheen: Always Ask, oletustila. Vahvistat kaiken paitsi lukemisen.
  • Henkilökohtainen projekti tai prototyyppi ilman oikeita asiakkaita: aloita Always Ask- tai Ask When Needed -tilasta. Harkitse Never Askia vain eristetyssä hävitettävässä kopiossa rajatuilla oikeuksilla ja ilman arvokasta dataa tai avaimia. Tila ei muutu turvalliseksi vain siksi, ettei projektilla ole asiakkaita.
  • Projekti, jolla on oikeita asiakkaita ja pääsy palvelimelle: älä ota Never Askia käyttöön. Aseta deny-kiellot tiedostoon config.toml ja anna agentille tietokantaan vain lukuoikeudet.

Varmuuskopioi tietokanta myös eri koneelle kuin sillä, jolla projekti on. Muut turvallisuussäännöt on koottu erilliseen artikkeliin.

Valitse vahvistustila projektin käyttöoikeuksien mukaan ja tarkista, mihin tarvitaan kieltoja.

Lähteet

  • Kimi Code: Interaction and input — 3 käyttöoikeustilaa, /yolo, /auto, vaarallisten komentojen suojaus kussakin tilassa, hyväksymispaneeli ja suunnittelutila.
  • Kimi Code: Configuration files — [[permission.rules]], sääntöjen tarkistusjärjestys, dangerous_command_guard, KIMI_CODE_DANGEROUS_COMMAND_GUARD ja config.toml-tiedoston polku.
  • Kimi Code: Changelog — versiot 0.40.0, 0.41.0, 0.43.0 ja 2.0.1: vaarallisten komentojen suojaus ja tilojen nimien vaihtuminen.

Tutustu Ailootiin.

Lisätietoja

Kysymyksiä tästä oppaasta: Kimi Code Never Ask: tilat ja vaaralliset komennot

Onko Never Ask turvallinen vain siksi, ettei projektillani ole asiakkaita?

Ei. Agentti voi silti vahingoittaa henkilökohtaisia tiedostoja tai paljastaa avaimia. Käytä rajattuja oikeuksia, eristettyä hävitettävää kopiota tai konttia ja varmuuskopiota ennen vahvistuksettoman tilan harkitsemista.

Korvaako rm -rf -komennon deny-sääntö eristyksen?

Ei. Se estää täsmäävät työkalukutsut, ei jokaista vastaavaa tapaa muuttaa tiedostoja. Pidä arvokas data ja tuotantotunnisteet agentin pääsyn ulkopuolella ja käytä erillistä tietokantaidentiteettiä vain tehtävän tarvitsemilla oikeuksilla.

Kaikki artikkelit