Batas, bukan instruksi: cara menjaga kendali atas agen AI otonom
Mengapa kendali atas agen AI tidak bisa dibangun di atas instruksi dalam prompt — dan bagaimana membangunnya di atas batas teknis. Lima insiden dalam satu sesi.
Gambar ini tidak dapat dimuat.Semakin otonom agen AI, semakin sering kita mencoba mengendalikannya dengan cara biasa — menulis aturan di prompt: «jangan sentuh ini», «bekerja hanya di sana», «jangan pernah lakukan itu». Selama eksperimen dengan tiga agen paralel , dalam dua hari saya mengumpulkan koleksi kasus nyata di mana cara ini gagal — dan di mana cara lain berhasil. Tesis artikel ini sederhana: instruksi adalah permintaan yang dijalankan agen dengan probabilitas tertentu; batas adalah properti sistem yang tidak bergantung pada kepatuhan. Ketika agen hanya satu dan bekerja di bawah pengawasan, perbedaannya tampak stilistik. Ketika agen menjadi banyak, perbedaannya ternyata arsitektural.
Lima insiden dalam satu sesi
Semua kasus di bawah terjadi dalam satu sesi kerja di blog ini — semuanya terdokumentasi, dan masing-masing mengilustrasikan caranya sendiri di mana pengelolaan lewat teks mengecewakan.
Tidak ada instruksi — terjadilah kecelakaan. Agen, saat bersiap untuk tugasnya, menjalankan git stash di direktori umum dan membawa ke stash file-file saya yang belum di-commit, yang tidak terkait dengan tugasnya. Tidak ada yang «melanggar» apa pun: larangannya memang tidak pernah ada. Ini sifat fundamental instruksi — instruksi ditulis setelah kecelakaan. Daftar lengkap hal yang tidak boleh dilakukan agen mustahil ditulis.
Instruksinya ada — dan tidak berhasil. Setelah kecelakaan pertama, saya menambahkan aturan eksplisit kepada agen: «bekerja strictly di direktori kerjanya sendiri». Salah satu agen tetap menjalankan perintah git di direktori utama — hanya saja mengaksesnya lewat jalur absolut. Bukan karena niat buruk atau kebodohan: model bersifat probabilistik, dan kepatuhan pada aturan teks juga merupakan probabilitas, dikalikan dengan panjang konteks dan jumlah eksekusi.
Batas teknis bekerja diam-diam. Dalam eksperimen yang sama, kecelakaan yang paling diantisipasi tidak pernah terjadi — «satu agen mengganti branch untuk semua». Bukan karena agen-agennya hati-hati, melainkan karena git worktree secara fisik tidak memungkinkan satu branch ditulis ke dua salinan kerja. Perlindungannya tertanam dalam alat. Tidak perlu diingat, tidak perlu dipatuhi — ia sekadar ada.
Instruksi berdiri di tempat yang seharusnya ada batas. Temuan paling tidak menyenangkan: produksi blog ini dijaga oleh satu baris di prompt. Push ke master memicu auto-deploy, dan dari setiap agen hal itu hanya dipisahkan oleh teks «jangan git push». Itu bertahan — tetapi itu keberuntungan, bukan kendali: batas yang sebenarnya di sini adalah hak akses, protected branch, token tanpa hak tulis. Permintaan berdiri di tempat kunci.
Batas di atas agen itu sendiri. Dua kali dalam sesi, runtime menghentikan bukan agen-agen percobaan, melainkan asisten utama saya: klasifikator izin memblokir SSH ke server produksi dan penghapusan massal perubahan yang belum di-commit — tindakan yang secara formal mengikuti dari tugas, tetapi memerlukan «ya» manusia yang eksplisit. Kedua pemblokiran itu benar. Dan keduanya terjadi di atas «disiplin» agen yang cukup tulus mengira sedang bertindak sesuai rencana.
Prinsipnya bukan hal baru — hanya entitasnya yang baru
Rekayasa telah melewati pelajaran ini jauh sebelum LLM. Dalam sistem produksi Toyota, prinsipnya disebut poka-yoke: kesalahan dicegah oleh perangkat proses, bukan oleh kewaspadaan pelaksana. Komponen yang hanya bisa dipasang dengan sisi yang benar lebih andal daripada poster «pasang dengan benar». Dalam rekayasa platform hal yang sama disebut guardrails, dalam keamanan — defense in depth. Di mana-mana satu gagasan: jangan mengandalkan bahwa pelaksana telah membaca, memahami, dan tidak lupa — buatlah agar tindakan yang salah menjadi mustahil atau mahal.
“Instruksi adalah permintaan. Batas adalah properti sistem. Kendali yang bertumpu pada permintaan — itu bukan kendali, melainkan keberuntungan dengan efek kumulatif.”
– kesimpulan utama dari dua hari bekerja dengan agen paralel
Dengan agen AI, prinsip lama ini menjadi lebih tajam karena tiga alasan. Agennya banyak — probabilitas kegagalan instruksi berlipat pada setiap eksekusi setiap agen. Agennya cepat — antara «mulai salah» dan «merusak total» hanya berselang detik, manusia tidak sempat campur tangan. Dan agen bersifat literal tetapi tidak andal: mereka menjalankan teks prompt lebih rajin daripada junior mana pun, namun tetap probabilistik — dan kepatuhan probabilistik pada aturan dalam skala besar menjamin terjadinya pelanggaran.
Bagaimana batas terlihat dalam praktik
Lapisan-lapisan yang saya bangun setelah sesi ini — dari sistem file hingga verifikasi:
- Sistem file: setiap agen — salinan kerja sendiri (git worktree, yang direkomendasikan Anthropic untuk sesi paralel, di Claude Code sudah terpasang), dan di tingkat OS — sandbox: sandboxing di Claude Code mengisolasi sistem file dan jaringan dengan primitif OS bawaan — menurut data Anthropic, ini mengurangi permintaan izin internal mereka sebesar 84%, dan prompt-injection yang berhasil tetap terkurung di dalam.
- Hak tulis: prod dan master dilindungi oleh hak akses, bukan prompt — protected branch, token tanpa hak push, akun terpisah untuk agen. Permintaan untuk menyertakannya dalam prompt boleh saja, tetapi sebagai lapisan kedua.
- Runtime: worktree tidak mengisolasi basis data, port, dan kontainer — semuanya dipakai bersama oleh semua salinan. Agen yang menjalankan tes dan server membutuhkan sumber daya sekali pakai: basis data sementara, port sendiri, kontainer per agen.
- Izin untuk tindakan: operasi yang tidak dapat dibatalkan melewati konfirmasi atau klasifikator — seperti auto mode di Claude Code, yang menilai setiap tindakan alih-alih selalu bertanya tentang segalanya atau tidak bertanya sama sekali. Ini adalah batas yang hanya bergerak melalui keputusan eksplisit manusia.
- Verifikasi berdasarkan artefak: jangan percaya pada laporan diri agen, tetapi pada jejak di disk. Agen saya yang macet tampak berjalan di antarmuka; diagnosis ditegakkan oleh tidak adanya file baru di salinannya selama dua puluh menit. Commit ke cabang sendiri adalah ide yang sama: hasil yang bertahan baik terhadap kegagalan maupun optimisme agen.
Instruksi dalam skema ini tidak hilang — instruksi menjadi lapisan terakhir, bukan yang pertama. «Bekerjalah di direktori Anda sendiri» dalam prompt tetap berguna: itu mengurangi frekuensi percobaan. Tetapi antara percobaan dan kecelakaan harus ada batas, bukan harapan.
Catatan jujur
Batas bukanlah hal mutlak: sandbox dapat dilewati, klasifikator membuat kesalahan, dan analisis publik tentang cara melewatinya secara rutin menunjukkan hal itu. Karena itu batas dibangun berlapis — seperti halnya segala hal dalam keamanan. Dan batas lebih mahal daripada instruksi di awal: menyiapkan worktree, hak akses, dan sandbox membutuhkan waktu berjam-jam, menulis satu baris di prompt hanya butuh beberapa detik. Asimetrinya ada di tempat lain: batas dibayar sekali, instruksi dibayar dengan probabilitas kegagalan pada setiap eksekusi. Bagi saya, penyiapan isolasi terbayar pada restart eksperimen pertama yang berjalan tanpa satu pun konflik.
Kesimpulan
Pertanyaan seri ini adalah bagaimana mengintegrasikan agen AI ke dalam pekerjaan nyata tanpa kehilangan kendali. Jawaban artikel ini: kendali bukanlah apa yang dituliskan kepada agen, melainkan apa yang dibangun di sekitarnya. Sebelum menambahkan «jangan pernah melakukan X» yang lain ke dalam prompt, ada baiknya bertanya pada diri sendiri: apakah X bisa dibuat mustahil secara teknis? Jika ya — itulah tempat yang tepat untuk upaya. Biarlah prompt yang meminta; sistem yang harus melarang.
Sumber dan acuan
- Making Claude Code more secure and autonomous with sandboxing (Anthropic Engineering) — isolasi sistem file dan jaringan pada tingkat OS; sumber angka 84%.
- How we contain Claude across products (Anthropic Engineering, 2026) — bagaimana batas eksekusi dibangun di seluruh produk agen.
- How we built Claude Code auto mode (Anthropic Engineering) — klasifikator izin sebagai batas antara «bertanya tentang segalanya» dan «tidak bertanya sama sekali».
- Poka-Yoke (Lean Enterprise Institute) — prinsip klasik pencegahan kesalahan melalui desain proses.
- git-worktree dan git-stash — dokumentasi resmi Git: mekanika salinan kerja dan stash bersama.
- Claude Code: Best practices for agentic coding (Anthropic Engineering) — rekomendasi worktree untuk sesi paralel.
- Cara membandingkan LLM secara jujur pada kode Anda sendiri: eksperimen dengan tiga model Claude — artikel sebelumnya dalam seri ini: eksperimen yang mengumpulkan insiden-insiden yang dijelaskan.
