Keamanan · 2 menit baca · 19 Oktober 2026

Guardrail untuk AI agent: hook, bukan harapan

Aturan di prompt itu cuma saran. Aturan yang tidak boleh dilanggar saya pindahkan ke hook dan agent khusus. Lalu saya audit, dan ternyata setup yang paling sering saya pakai masih bolong.

Robot kartun bermain bowling di lajur dengan pembatas, di samping amplop bergembok dan gerbang tertutup
5
aturan wajib yang tidak bisa dilanggar agent commit
0
push yang boleh dilakukan agent commit
1
hook regex yang menjaga file env dari agent

01 · Kenapa pakai hook

Agent menjalankan perintah shell lebih cepat daripada saya membacanya.

Ada tiga kesalahan yang tidak boleh terjadi: secret terbaca masuk ke transkrip, commit ter-push ke main, dan baris atribusi AI muncul di riwayat git klien. Kalimat di prompt hanya meminta model untuk tidak melakukannya. Hook menghentikan perintahnya sebelum sempat jalan.

02 · env-guard

Sebelum agent menjalankan perintah shell, sebuah hook memeriksanya. Perintah yang menyentuh file env langsung ditolak.

Hook ini mengenali .env dan variannya sebagai kata utuh. Jadi cat .env dan source .env.local diblokir, sementara environment dan dotenv tetap lolos. Aturannya sengaja ketat, karena agent tidak punya alasan untuk membuka file env. Kalau sesekali salah blokir, saya cukup menjalankan satu perintah sendiri. Di sampingnya ada aturan yang melarang agent membaca dan mengedit file itu. Satu tool agent butuh versi JavaScript, karena aturan izinnya tidak bisa mengenali batas kata.

(^|[^A-Za-z0-9_.])\.env(\.[A-Za-z0-9_-]+)?([^A-Za-z0-9]|$)

03 · Agent commit yang tidak bisa push

commit-warden hanya punya satu tugas: memeriksa apakah sebuah pekerjaan sudah utuh, lalu meng-commit-nya.

Aturannya:

  • tidak pernah push, termasuk dengan force
  • tanpa atribusi AI dan tanpa mengganti author
  • tidak ada commit ke main, master, atau develop
  • hanya menambahkan file yang disebut, tidak pernah semuanya sekaligus
  • satu perubahan per commit, dengan pesan type: description maksimal 72 karakter

Ia menandai console log yang tertinggal, TODO, dan perubahan yang campur aduk. Lalu ia memberi tahu berapa commit yang menunggu di-push, tanpa mem-push-nya.

04 · Atribusi dimatikan dari sumbernya

Aturan yang satu ini lahir dari kesalahan.

Suatu kali, trailer AI lolos ke dalam commit. Saya harus amend lalu force-push untuk menghapusnya. Sekarang fitur itu saya matikan langsung di settings, bukan hanya di aturan.

{
  "attribution": "",
  "includeCoAuthoredBy": false
}

05 · Memori yang hanya boleh mengusulkan

Agent memori saya boleh membaca, tapi tidak boleh menulis.

Ia menyusun draf hal yang layak diingat. Agent utama memeriksanya dulu sebelum menyimpan apa pun. Ia tidak pernah mencatat secret atau transkrip. Kalau tidak ada yang baru, ia bilang begitu dan tidak mengarang catatan. Kalau sumber saling bertentangan, urutan kepercayaannya: kode saat ini, pengecekan ulang, snapshot, lalu riwayat.

06 · Audit yang bikin rendah hati

Guardrail yang tidak pernah dites hanyalah keyakinan.

Saat saya mengaudit setup saya, profil yang paling sering saya pakai ternyata tidak punya hook shell sama sekali. Padahal catatan saya sendiri bilang ada. Tool pencarian dan penulisan juga belum terlindungi, dan satu profil tidak punya guardrail apa pun. Aturannya sudah benar. Yang bergeser adalah pemasangannya.

Tulisan berikutnyaCompositor iOS Safari mengabaikan z-index kamu