Asisten pengodean berbasis AI pada antrean server tier gratis menulis file migrasi skema setelah aturan “freeze migrations” sistem menghilang selama kompresi konteks otomatis. Insiden ini menunjukkan bahwa mengandalkan instruksi berbasis prompt untuk menegakkan keamanan dapat berakibat fatal ketika sesi obrolan yang panjang diringkas.
Apa yang terjadi
Sebuah agen pengodean bersama berjalan dengan prompt sistem yang berisi satu aturan: jangan membuat atau memodifikasi file migrasi. Aturan tersebut menjaga migrasi skema tetap membeku (frozen) pada branch rilis sementara pengembang menggunakan agen tersebut untuk pengeditan rutin.
Selama sesi yang berkepanjangan, percakapan melampaui batas token model. Server memanggil context compaction, mengganti seluruh riwayat obrolan dengan ringkasan singkat agar tetap berada dalam anggaran token. Ringkasan tersebut tetap mencantumkan penyebutan jalur file tetapi menghapus batasan negatif (“do not write to migrations/**”). Saat model menghasilkan respons berikutnya, aturan pembekuan tersebut tidak lagi ada dalam memori kerjanya.
Agen tersebut kemudian menyarankan penyesuaian SQL untuk meningkatkan kecepatan kueri. Alat pendampingnya menyimpan perubahan tersebut sebagai file migrasi di disk. Unit test berhasil karena mereka tidak pernah mengeksekusi migrasi SQL mentah, dan perubahan tersebut baru diketahui kemudian dalam diff peninjauan kode (code-review diff).
Mengapa ini penting
- Guardrail menghilang: Kebijakan tingkat prompt bersifat volatil. Ketika konteks model dikompresi, klausa "jangan" apa pun dapat hilang, sehingga sistem bebas melakukan tindakan yang dilarang.
- Unit test tidak cukup: Tes yang tidak menjalankan skrip migrasi dapat memberikan rasa aman yang palsu. Perubahan tersebut lolos karena rangkaian pengujian tidak pernah menjalankan SQL baru tersebut.
- Peninjauan manusia terlambat: Pada saat peninjau melihat diff, file migrasi sudah dikomit, sehingga memerlukan rollback atau pembersihan tambahan.
Kesalahan tersebut tidak menyebabkan gangguan layanan (outage), tetapi memaksa pekerjaan ekstra untuk membatalkan migrasi yang tidak perlu dan meningkatkan risiko kesalahan serupa yang memengaruhi database live.
Bagaimana guardrail gagal
- Aturan hanya berbasis prompt – Pembekuan tersebut ada sebagai teks biasa dalam prompt sistem.
- Sesi panjang – Obrolan tumbuh melampaui jendela konteks model.
- Kompresi (Compaction) – Server menukar transkrip lengkap dengan ringkasan yang padat kata benda.
- Hilangnya batasan negatif – Ringkasan mengabaikan instruksi “jangan”, sehingga menghapus aturan tersebut.
- Output model – Tanpa aturan tersebut, model menghasilkan respons yang membuat migrasi.
Alat perangkum cenderung mempertahankan kata benda (jalur file, nama fungsi) dan membuang negasi, itulah sebabnya aturan tersebut menghilang secara diam-diam.
Solusinya: pindahkan guardrail ke jalur penulisan (write path)
Alih-alih menyematkan larangan dalam prompt, tegakkan larangan tersebut di tempat kode menyentuh disk.
- Buat file kebijakan (misalnya,
agent_policy.txt) yang mencantumkan jalur yang dilarang (deny-listed) sepertischema/**ataumigrations/**. - Tambahkan skrip pra-penerapan (pre-apply script) yang membaca file kebijakan dan memindai setiap diff sebelum alat penerapan dijalankan.
- Gagal secara tertutup (fail closed) jika file kebijakan hilang, kosong, atau jika diff menyentuh jalur yang dilarang.
- Jangan meminta model untuk mengonfirmasi daftar larangan; konfirmasi hanyalah sebuah sinyal, bukan penegakan aturan.
Guardrail berbasis prompt vs. berbasis disk
| Aspek | Pembekuan hanya berbasis prompt | Gerbang berbasis disk |
|---|---|---|
| Risiko kompresi | Aturan dapat menghilang | File kebijakan tetap utuh |
| Cakupan unit-test | Mungkin melewatkan penulisan terlarang | Pemeriksaan jalur memblokir penulisan terlepas dari tes |
| Waktu peninjauan manusia | Kerusakan mungkin sudah dikomit | Penulisan tidak pernah dimulai, peninjau tidak melihat perubahan |
| Upaya implementasi | Minimal (hanya satu baris di prompt) | Skrip kecil + file kebijakan |
Argumen penyeimbang
Apa yang perlu diperhatikan selanjutnya
Kesimpulan
Jika Anda memerlukan aturan yang tidak boleh diabaikan—seperti “tidak ada migrasi selama pembekuan”—simpanlah di disk dan tegakkan pada titik penulisan. Teks prompt saja tidak dapat menjamin ketahanan setelah konteks model dikompresi.
