SSD Nodes Learn 🎉 VPS mulai $5.50/bln
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-08-13

Mengapa Coding Agent Mengabaikan Instruksi Anda

File instruksi meminta agent berhenti, tetapi ia tetap berjalan. Kenali 4 penyebabnya, termasuk aturan yang tak masuk context window dan efek compaction Claude Code.

Mengapa coding agent mengabaikan instruksi Anda

Coding agent mengabaikan instruksi Anda karena empat alasan, dan tidak satu pun disebabkan oleh cara Anda menyampaikannya yang terlalu sopan. Aturan tersebut tidak pernah masuk ke context window. Aturannya terlalu samar sehingga tidak dapat digunakan untuk memeriksa suatu tindakan. Ada hal lain dalam context yang bertentangan dengannya, biasanya kode yang baru saja dibaca oleh agent. Atau, aturan itu masih dimuat, tetapi berada jauh di belakang giliran saat ini, sehingga agent bekerja berdasarkan informasi yang paling dekat.

Setiap penyebab memiliki perbaikannya sendiri. Karena itu, langkah pertama adalah membedakannya. Penggunaan huruf kapital dan kata IMPORTANT bukan diagnosis. Penjelasan berikut menggunakan Claude Code sebagai contoh, karena perilaku pemuatan dan compaction-nya telah didokumentasikan secara terperinci hingga August 2026. Tool lain memiliki perbedaan pada detailnya, tetapi secara umum berperilaku dengan cara yang sama.

Ada dua istilah yang perlu dipahami terlebih dahulu. Context window adalah blok teks yang dilihat model pada giliran tertentu: system prompt, file instruksi Anda, percakapan, dan setiap file yang telah dibaca agent. Harness adalah program di sekitar model, yaitu program yang membaca file dari disk dan menyusun blok tersebut. Hampir setiap keluhan dalam tulisan ini sebenarnya merupakan keluhan tentang harness, bukan model.

File instruksi adalah pesan, bukan pengaturan

File instruksi bukan konfigurasi. Tidak ada komponen runtime yang membaca CLAUDE.md lalu menerapkannya. Harness membaca file tersebut dari disk dan menempelkan teksnya ke percakapan. Dalam Claude Code, konten itu dikirim sebagai pesan pengguna setelah system prompt. Artinya, model melihat aturan Anda dengan cara yang sama seperti melihat teks lain yang Anda ketikkan.

Hal ini memiliki konsekuensi yang tidak nyaman. Aturan Anda bersaing dengan setiap teks lain di jendela percakapan, dengan kedudukan yang sama. Aturan adalah klaim. File yang baru saja dibuka agen merupakan bukti. Jika keduanya bertentangan, bukti sering kali menang. Tidak ada error yang muncul karena dari sudut pandang model, tidak ada yang salah.

Dokumentasi resmi menjelaskan hal ini dengan jelas: file instruksi diperlakukan sebagai konteks, bukan konfigurasi yang diterapkan secara paksa. Untuk memblokir suatu tindakan terlepas dari keputusan model, Anda memerlukan hook, bukan kalimat. Ingat prinsip tersebut. Sebagian besar perbaikan di bagian akhir tulisan ini menerapkan prinsip itu pada kasus tertentu.

File instruksi yang dimuat dan waktunya

Claude Code menelusuri struktur direktori ke atas, mulai dari direktori tempat Anda menjalankannya. Setiap CLAUDE.md dan CLAUDE.local.md dari root sistem berkas hingga direktori kerja dimuat sepenuhnya saat peluncuran. File-file tersebut digabungkan dalam urutan itu. Dengan demikian, file yang paling dekat dengan lokasi peluncuran dibaca terakhir. Dalam satu direktori, file .local ditambahkan setelah file utama.

File dalam subdirektori di bawah direktori kerja berperilaku berbeda. File tersebut tidak dimuat saat peluncuran. File tersebut dimuat ketika agen membaca file di direktori tersebut. Hal yang sama berlaku untuk aturan berbasis path dalam .claude/rules/ yang memiliki field frontmatter paths:. Aturan tersebut masuk ke konteks ketika file yang sesuai dibaca, bukan pada setiap giliran.

Perbedaan ini menjelaskan banyak kegagalan yang dilaporkan. Anda menambahkan aturan ke packages/api/CLAUDE.md, mengajukan pertanyaan tentang API, lalu agen menjawab tanpa pernah membuka file di bawah packages/api/. Aturan tersebut tidak diabaikan. Aturan itu memang belum pernah masuk ke konteks. Jika repositori Anda membagi panduan ke dalam file instruksi per paket dalam monorepo, hal ini harus selalu menjadi pemeriksaan pertama.

Ada satu jebakan pemuatan lainnya. Ini adalah penyebab paling umum dari pesan "agen mengabaikan instruksi saya": Claude Code membaca CLAUDE.md, bukan AGENTS.md. Repositori yang menstandarkan penggunaan AGENTS.md dan tidak memiliki CLAUDE.md tidak memberikan apa pun untuk dimuat oleh Claude Code. Jembatan yang didukung adalah CLAUDE.md dengan baris pertama @AGENTS.md. File tersebut mengimpor file terkait saat peluncuran, dengan catatan khusus Claude di bawahnya. Symlink juga dapat digunakan jika tidak ada tambahan yang perlu dimasukkan. Menentukan isi yang seharusnya ada dalam file tersebut adalah pertanyaan terpisah, yang dibahas dalam memisahkan instruksi agen dari dokumentasi manusia.

Pastikan file dimuat sebelum Anda menulis ulang isinya

Jangan mengubah redaksi sebelum Anda memastikan bahwa agent dapat melihat file tersebut. Ada dua pemeriksaan, dan pemeriksaan yang lebih sederhana dilakukan terlebih dahulu.

Jalankan /context di dalam sesi. Perintah ini menampilkan jendela saat ini berdasarkan kategori, dan daftar Memory files mencantumkan setiap file instruksi yang benar-benar dimuat. File yang tidak ada dalam daftar tersebut tidak termasuk dalam percakapan, sehingga apa pun yang Anda tulis di dalamnya tidak akan berpengaruh. /memory mencantumkan lokasi file dan membukanya untuk diedit, termasuk file yang belum ada.

Untuk memperoleh bukti yang lebih kuat, catat proses pemuatan tersebut. Event hook InstructionsLoaded berjalan setiap kali CLAUDE.md atau file aturan masuk ke dalam konteks. Matcher-nya menjelaskan alasan pemuatan tersebut: session_start, nested_traversal, path_glob_match, include, atau compact. Masukkan konfigurasi berikut ke dalam .claude/settings.json:

{
  "hooks": {
    "InstructionsLoaded": [
      {
        "matcher": "nested_traversal",
        "hooks": [
          {
            "type": "command",
            "command": "cat >> /tmp/instructions-loaded.log"
          }
        ]
      }
    ]
  }
}

Hook menerima payload dalam format JSON melalui standard input, sehingga cat menambahkan seluruh record. Pantau hasilnya dengan tail -f /tmp/instructions-loaded.log selama Anda bekerja. Status keluar dari event ini diabaikan, sehingga hook hanya dapat mengamati dan tidak dapat memblokir. Jika file bertingkat Anda tidak pernah muncul dalam log selama sesi yang seharusnya memuatnya, hentikan perubahan redaksi. Masalahnya terletak pada penempatannya.

Dampak sesi panjang terhadap aturan Anda

Ada dua efek terpisah dalam hal ini, dan masing-masing memerlukan respons yang berbeda.

Jarak. Aturan yang dinyatakan pada giliran 1 masih berada dalam jendela konteks pada giliran 90. Namun, aturan itu kini bersaing dengan teks dari 90 giliran yang lebih baru dan lebih spesifik terhadap pekerjaan yang sedang Anda lakukan. Anda tidak dapat menghilangkan dampak ini melalui konfigurasi, tetapi Anda dapat mengukurnya. Jalankan tugas yang sama dalam sesi baru. Jika aturan tersebut berlaku di sana tetapi gagal setelah sesi berlangsung lama, berarti jarak adalah penyebabnya.

Pemadatan. Saat jendela konteks penuh, harness merangkum percakapan hingga saat itu, lalu melanjutkan dari ringkasan tersebut. Informasi yang bertahan adalah informasi yang dianggap penting oleh peringkas. Informasi itu belum tentu sama dengan yang Anda anggap penting. Claude Code mendokumentasikan hasilnya untuk setiap mekanisme, dan perbedaannya besar. Root proyek CLAUDE.md dan aturan tanpa cakupan dimuat ulang dari disk setelah pemadatan. Memori otomatis dimuat ulang dari disk. Aturan dengan frontmatter paths: hilang sampai file yang sesuai dibaca kembali. File CLAUDE.md bertingkat dalam subdirektori hilang sampai sebuah file dalam subdirektori tersebut dibaca kembali.

Urutkan instruksi Anda berdasarkan tabel tersebut, dan urutan kerapuhannya akan terlihat. Aturan yang hanya Anda ketikkan ke dalam chat adalah hal yang paling rapuh dalam sesi. Aturan tersebut hanya bertahan jika ringkasan kebetulan mempertahankannya. Aturan dalam packages/api/CLAUDE.md berada di urutan berikutnya, karena aturan itu dimuat sekali, dihilangkan dalam ringkasan, lalu kembali hanya saat ada pembacaan berikutnya di direktori tersebut. Aturan dalam file root proyek adalah yang paling tahan lama, karena file tersebut dibaca ulang dari disk setiap kali.

Jadi, jika sebuah instruksi harus berlaku sepanjang sesi, letakkan instruksi tersebut dalam file root proyek tanpa frontmatter paths:. Semua pilihan lainnya merupakan kompromi yang harus Anda tentukan secara sadar. Mengelola informasi yang tetap berada dalam jendela konteks membahas /compact dengan argumen fokus dan /clear di antara tugas yang tidak berkaitan. Keduanya memengaruhi seberapa sering peringkas dapat menentukan aturan Anda.

Mengapa kode di sekitarnya mengalahkan aturan

Ini adalah kegagalan yang paling sering dijelaskan orang dan paling jarang didiagnosis. File Anda menyatakan bahwa akses database harus melalui lapisan repository. Agent menulis handler yang memanggil ORM (object relational mapper) secara langsung. Instruksi Anda bukan diabaikan karena alasan gaya. Instruksi tersebut kalah oleh bukti.

Aturan menjelaskan preferensi. Kode menunjukkan salah satunya. Saat agent membuka tiga file dalam modul yang akan diedit dan ketiganya memanggil ORM secara langsung, konteks berisi satu kalimat abstrak di satu sisi dan tiga contoh konkret, terbaru, serta sesuai tugas di sisi lain. Menyalin pola lokal biasanya merupakan perilaku yang benar. Dalam kasus ini, hal tersebut salah hanya karena Anda mengetahui sesuatu yang tidak diketahui konteks: file-file tersebut adalah kode lama.

Jadi, tuliskan hal itu ke dalam aturan. Aturan yang menyebutkan bukti tandingannya sendiri dapat bertahan saat diterapkan pada repository nyata. Aturan yang hanya menyatakan preferensi tidak dapat bertahan.

Akses database baru harus melalui app/repositories/. File di bawah app/legacy/ masih memanggil ORM secara langsung. Itu adalah kode lama, bukan polanya. Jangan menirunya.

Kalimat kedua menjalankan fungsi utama. Kalimat tersebut memberi tahu agent apa yang akan ditemukannya dan cara membacanya sebelum agent menemukannya. Perbaikan yang sama berlaku untuk aturan apa pun yang secara nyata bertentangan dengan repository Anda: gaya commit yang tidak diikuti oleh riwayat Anda, tata letak pengujian yang diabaikan oleh separuh rangkaian pengujian, atau konvensi import yang hanya berlaku pada kode baru. Di mana pun kode tidak sesuai dengan file, sebutkan ketidaksesuaian tersebut di dalam file.

Aturan yang samar tidak dapat diperiksa, sehingga tidak dapat diikuti

"Write clean code." "Do not over engineer." "Keep it simple." "Be careful with migrations." Tidak satu pun aturan ini dapat diuji terhadap tindakan tertentu, baik oleh agent maupun oleh Anda. Agent yang diberi aturan yang tidak dapat diperiksa terhadap outputnya sendiri hanya menebak, dan Anda menilai tebakan tersebut berdasarkan kesan.

Berikut adalah pengujian yang harus diterapkan pada setiap baris dalam file Anda. Tulis perintah shell yang akan keluar dengan status non-zero saat aturan tersebut dilanggar. Jika Anda tidak dapat menulis perintah itu, aturan tersebut tidak dapat diperiksa. Bandingkan pasangan berikut:

  • Tidak dapat diperiksa: "Keep functions small." Dapat diperiksa: "A function longer than 60 lines needs a comment above it explaining why."
  • Tidak dapat diperiksa: "Test your changes." Dapat diperiksa: "Run npm test and paste the failure count before calling a task done."
  • Tidak dapat diperiksa: "Keep files organised." Dapat diperiksa: "HTTP handlers live in src/api/handlers/. Nothing else goes in that directory."
  • Tidak dapat diperiksa: "Format code properly." Dapat diperiksa: "Use 2 space indentation in .ts files."

"Do not over engineer" adalah aturan yang paling cepat ditinggalkan orang, karena perbaikannya bukan kalimat yang lebih pendek, melainkan kalimat yang lebih panjang: menjelaskan secara terperinci arti perubahan terkecil yang benar-benar berfungsi memberi agent kriteria untuk membandingkan diff-nya sendiri.

Ukuran file adalah masalah yang sama dengan bentuk berbeda. Panduan Claude Code menargetkan kurang dari 200 baris untuk setiap file instruksi dan menyatakan secara langsung bahwa file yang lebih panjang mengurangi kepatuhan. File 700 baris bukan instruksi yang lebih tegas. File tersebut berisi 700 baris klaim dengan lebih banyak kemungkinan saling bertentangan, dan seluruhnya mengurangi kapasitas context window Anda pada setiap giliran, yang terlihat langsung dalam penggunaan token Anda. Menyusun file agar setiap aturan berada di bawah heading yang dapat dipindai pembaca dibahas dalam menulis file instruksi yang dapat ditindaklanjuti oleh agent.

Cara mendiagnosisnya dalam sepuluh menit

Jalankan langkah-langkah ini secara berurutan. Langsung menuju langkah terakhir dapat membuat Anda memiliki file panjang berisi aturan yang ditulis dengan huruf kapital, tetapi tetap tidak berfungsi.

  1. Pastikan aturan dimuat. Jalankan /context, lalu baca daftar Memory files. Jika file tidak ada, perbaiki lokasinya dan hentikan proses. Belum ada langkah lain dalam daftar ini yang berlaku.
  2. Reproduksi dalam sesi baru. Mulai sesi baru dan berikan tugas paling sederhana yang seharusnya memicu aturan tersebut. Jika aturan berhasil pada tahap ini tetapi gagal dalam sesi yang panjang, masalahnya kemungkinan terkait jarak atau compaction. Jika aturan juga gagal pada tahap ini, masalahnya ada pada aturan itu sendiri.
  3. Hilangkan aturan yang bersaing. Minta perubahan yang sama di direktori yang kode di dalamnya sudah mengikuti aturan tersebut. Jika kepatuhan kembali, kode di sekitarnya telah mengalahkan kalimat aturan Anda.
  4. Cari konflik. Dua file yang memberikan panduan berbeda untuk perilaku yang sama merupakan kegagalan yang terdokumentasi: model dapat memilih salah satunya secara acak dan tidak akan memberi tahu Anda bahwa hal itu terjadi.
  5. Buat aturan mudah diperiksa, lalu uji lagi. Tulis ulang aturan dengan path konkret dan kondisi yang jelas. Jika kepatuhan meningkat drastis, penyebabnya adalah cara perumusan aturan.

Langkah 4 hanya memerlukan satu perintah. Cari topik tersebut di setiap sumber instruksi, bukan hanya di file yang sedang Anda edit:

grep -rni "migration" --include="CLAUDE.md" --include="CLAUDE.local.md" .
grep -rni "migration" .claude/rules/ ~/.claude/CLAUDE.md ~/.claude/rules/ 2>/dev/null

Jika dua file berisi arahan yang berbeda, itulah bug Anda. Hapus salah satunya. Jangan mencoba menentukan prioritas dengan pilihan kata yang lebih kuat, karena tidak ada mesin pemeringkatan yang dapat dijadikan acuan.

Perbaikan berdasarkan tingkat pengaruh

Setiap langkah di bawah memiliki pengaruh yang lebih besar daripada langkah sebelumnya dan memerlukan biaya penyiapan yang lebih tinggi. Mulai dari atas ketika aturan mudah diperjelas dengan perubahan kata. Turun ke langkah berikutnya saat aturan sudah cukup penting sehingga kesalahan sesekali tidak dapat diterima.

  1. Buat aturan menjadi konkret. Sebutkan path, command, atau kondisi. Tambahkan bukti tandingan yang akan ditemukan agent di repository, seperti yang ditunjukkan sebelumnya. Cara ini tidak memerlukan biaya dan memperbaiki sejumlah kasus yang mengejutkan.
  2. Pindahkan aturan lebih dekat ke hal yang diaturnya. Gunakan CLAUDE.md bertingkat, aturan dengan cakupan path di .claude/rules/, atau komentar di bagian atas file itu sendiri. Dengan demikian, aturan dibaca bersamaan dengan kode yang diaturnya. Terima konsekuensinya: apa pun yang dimuat dengan cara tersebut akan hilang pada compaction berikutnya dan muncul kembali pada pembacaan berikutnya yang sesuai.
  3. Pindahkan penegakan aturan ke hook. Prosa hanya meminta. Hook mengambil keputusan. Hook berjalan sebagai kode pada event siklus hidup tertentu dan berlaku terlepas dari kesimpulan model.
  4. Serahkan aturan kepada tool deterministik dan hapus prosanya. Pemformatan, urutan import, panjang baris, import yang dilarang, bentuk pesan commit. ruff format, prettier --write, eslint, atau hook pre-commit. Formatter selalu benar dan tidak memerlukan token. Kalimat biasanya benar, tetapi memerlukan token pada setiap giliran.

Langkah 3 secara lengkap. Misalkan file migrasi tidak boleh diedit oleh agent. Masukkan konfigurasi berikut ke .claude/settings.json:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/guard-migrations.sh"
          }
        ]
      }
    ]
  }
}

Lalu masukkan konfigurasi berikut ke .claude/hooks/guard-migrations.sh:

#!/usr/bin/env bash
set -euo pipefail

path=$(jq -r '.tool_input.file_path // empty')

case "$path" in
  */migrations/*)
    echo "Files under migrations/ are written by hand. Stop and ask first." >&2
    exit 2
    ;;
esac

exit 0

Jalankan chmod +x .claude/hooks/guard-migrations.sh, kemudian mulai session baru dan minta agent mengedit file di bawah migrations/. Edit tersebut ditolak dan pesan Anda dikembalikan sebagai alasannya. Exit status 2 pada PreToolUse memblokir pemanggilan tool sebelum dijalankan, dan teks stderr Anda diserahkan kepada model sebagai pesan pemblokiran. ${CLAUDE_PROJECT_DIR} mengarah ke root project, sehingga hook berfungsi di direktori mana pun tempat agent berada. Agent tidak perlu menyetujui aturan, mengingat aturan, atau masih memiliki aturan tersebut dalam konteks. Edit tidak terjadi.

Untuk larangan sederhana tanpa logika, permissions.deny di settings Anda menjalankan fungsi yang sama tanpa script yang harus dipelihara, dan mode permission menentukan apa yang berjalan tanpa meminta persetujuan Anda terlebih dahulu. Jika sebuah instruksi benar-benar harus ditempatkan pada tingkat system prompt, bukan dalam user message, --append-system-prompt menempatkannya di sana. Namun, instruksi tersebut harus diteruskan pada setiap invocation, sehingga lebih sesuai untuk script daripada pekerjaan interaktif.

Hal yang tidak dapat Anda atasi hanya dengan instruksi

Jelaskan dengan tegas bagian mana yang menjadi tanggung jawab Anda. Penempatan, perumusan, konflik antarfile, dan ukuran file merupakan masalah penulis yang harus diperbaiki oleh penulis. Selebihnya merupakan perilaku model, dan perumusan yang lebih baik tidak akan menghilangkannya.

Persetujuan bukan kepatuhan. Agent dapat mengakui suatu aturan, mengulanginya dengan benar, lalu melanggarnya dua pemanggilan tool kemudian. Persetujuan tersebut tidak memerlukan biaya dan tidak memprediksi apa pun. Jangan menganggapnya sebagai perbaikan, dan jangan menghitungnya sebagai pengujian.

Beberapa kebiasaan bersifat menetap. Menambahkan komentar, menambahkan penanganan error defensif, menulis ringkasan penutup, dan menjalankan perintah berikutnya yang dianggap jelas. Kebiasaan ini akan muncul kembali meskipun ada aturan yang melarangnya, tetapi dengan frekuensi yang lebih rendah, bukan menjadi nol. Anda dapat mengukur frekuensi Anda sendiri: jalankan tugas yang sama sepuluh kali dalam sesi baru, lalu hitung pelanggarannya. Jika jumlah tersebut harus nol, aturan itu harus dikeluarkan dari prompt.

Sesi Anda sendiri menjadi contoh. Jika agent melanggar aturan pada giliran 12 dan Anda membiarkannya, pelanggaran tersebut kini berada dalam konteks sebagai contoh, serta jauh lebih baru daripada aturan tersebut. Perbaiki pelanggaran segera setelah melihatnya. Pelanggaran yang tidak diperbaiki mengajarkan pola itu kepada seluruh sesi.

File instruksi bukan batas keamanan. File tersebut membentuk perilaku, tetapi tidak menegakkannya. Hal yang berisiko jika terlewat, seperti kredensial atau perintah destruktif, harus ditangani melalui permission atau hook. Menjaga rahasia tetap di luar jangkauan agent menerapkan prinsip yang sama pada data: jangan meminta agent untuk tidak membaca file; atur agar file tersebut tidak dapat dibaca.

Versi singkatnya: buktikan bahwa file telah dimuat, buat aturan dapat diperiksa, pindahkan aturan ke dekat objek yang diaturnya, dan jika tingkat pelanggaran masih penting, keluarkan aturan tersebut dari prosa. Aturan yang tidak dapat diabaikan oleh agent adalah aturan yang sejak awal tidak pernah diminta dari agent.

FAQ

Mengapa Claude Code mengabaikan CLAUDE.md saya?

Pastikan file tersebut memang dimuat sebelum menyimpulkan bahwa file itu diabaikan. Jalankan /context dan periksa daftar Memory files; file yang tidak tercantum di sana tidak menjadi bagian dari percakapan. File instruksi dikirim sebagai pesan pengguna setelah system prompt dan diperlakukan sebagai konteks, bukan sebagai konfigurasi yang diberlakukan. Karena itu, tidak ada jaminan kepatuhan yang ketat. Dalam kasus nyata, biasanya ada satu dari empat penyebab: file berada di subdirektori yang tidak pernah dibaca oleh agent, dua file berisi aturan yang bertentangan dan model memilih salah satunya secara arbitrer, aturan terlalu umum untuk digunakan memeriksa suatu tindakan, atau kode di sekitarnya menunjukkan hal yang berlawanan dengan isi aturan.

Apakah mengedit file instruksi saat sesi berlangsung akan mengubah sesuatu?

Tidak untuk salinan file yang sudah ada dalam percakapan. File di atas direktori kerja dimuat secara keseluruhan saat peluncuran, sehingga teks yang dipegang model adalah teks pada saat peluncuran. Untuk memuat hasil edit, mulai sesi baru atau minta agent membaca file tersebut dengan file tools yang biasa digunakan. Tindakan ini memasukkan versi terbaru ke dalam percakapan sebagai pesan baru. Setelah compaction, file project root dibaca ulang dari disk, sehingga versi baru juga dimuat pada saat itu.

File mana yang berlaku jika CLAUDE.md di root dan file bersarang berisi aturan yang bertentangan?

Tidak ada yang berlaku secara andal. File yang ditemukan digabungkan ke dalam konteks, bukan saling menimpa. Urutannya dimulai dari filesystem root hingga direktori kerja, sehingga file yang paling dekat hanya dibaca terakhir. Tidak ada precedence engine yang menyelesaikan pertentangan, dan dokumentasi Claude Code menyatakan bahwa aturan yang bertentangan dapat diselesaikan secara arbitrer. Tulis file bersarang sebagai tambahan yang menyebutkan path yang diaturnya, dan hapus pertentangan tersebut alih-alih mencoba membuatnya lebih unggul dari aturan lain.

Apakah instruksi saya tetap berlaku setelah /compact?

Bergantung pada cara instruksi tersebut dimuat. CLAUDE.md di project root, aturan tanpa cakupan, dan auto memory dimasukkan kembali dari disk setelah compaction. Aturan dengan frontmatter paths: dan file CLAUDE.md bersarang di subdirektori akan hilang hingga file yang sesuai dibaca kembali. Apa pun yang hanya Anda ketikkan dalam chat hanya akan bertahan jika kebetulan dipertahankan oleh summariser. Jika aturan harus berlaku sepanjang sesi, letakkan aturan tersebut di file project root tanpa frontmatter paths:.

Kapan sebuah aturan harus menjadi hook, bukan prosa?

Gunakan hook ketika pemeriksaannya deterministik dan biaya jika terlewat lebih besar daripada biaya menulis skrip kecil. Pembatasan file path, perintah yang wajib dijalankan sebelum commit, dan pemanggilan tool yang dilarang termasuk dalam kategori ini. Hook PreToolUse yang keluar dengan status 2 langsung memblokir pemanggilan tool dan meneruskan teks stderr Anda kepada model sebagai alasannya. Dengan demikian, aturan tersebut tetap berlaku meskipun tidak lagi ada di dalam konteks. Apa pun yang dapat diputuskan oleh formatter atau linter harus ditangani oleh tool tersebut dan dihapus sepenuhnya dari file instruksi.