SSD Nodes Learn Hosting plans →
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-08-29

Mengapa Coding Agent Mengabaikan Instruksi Anda

Instruksi berhenti tetap diabaikan agent? Pahami empat penyebabnya, termasuk aturan yang tak masuk context window dan efek compaction, lalu diagnosis sebelum menulis ulang.

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. Aturan itu 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 masih dimuat, tetapi berada terlalu 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. Huruf kapital dan kata IMPORTANT bukan diagnosis. Penjelasan berikut menggunakan Claude Code sebagai contoh, karena perilaku pemuatan dan compaction-nya didokumentasikan secara terperinci hingga August 2026. Detail pada tool lain dapat berbeda, tetapi prinsip umumnya sama.

Pertama, ada dua istilah. 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 komponen yang membaca file dari disk dan menyusun blok tersebut. Hampir setiap keluhan dalam artikel 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 menegakkannya. Harness membaca file tersebut dari disk dan menempelkan teksnya ke dalam percakapan. Di Claude Code, konten itu dikirim sebagai pesan pengguna setelah system prompt, sehingga model melihat aturan Anda dengan cara yang sama seperti melihat teks lain yang Anda masukkan.

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

Dokumentasi resmi menyatakan hal ini secara jelas: file instruksi diperlakukan sebagai konteks, bukan konfigurasi yang ditegakkan. 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 mana yang dimuat, dan kapan

Claude Code menelusuri hierarki direktori ke atas, mulai dari direktori tempat Anda menjalankannya. Setiap CLAUDE.md dan CLAUDE.local.md dari root sistem file hingga direktori kerja Anda dimuat sepenuhnya saat peluncuran. File-file tersebut digabungkan sesuai urutan itu, sehingga 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 Anda berperilaku berbeda. File-file tersebut tidak dimuat saat peluncuran. File-file tersebut dimuat ketika agent membaca file di direktori itu. Hal yang sama berlaku untuk aturan dengan cakupan 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 sebagian besar kegagalan yang dilaporkan. Anda menempatkan aturan dalam packages/api/CLAUDE.md, mengajukan pertanyaan tentang API, lalu agent menjawab tanpa pernah membuka file di bawah packages/api/. Aturan tersebut tidak diabaikan. Aturan itu memang tidak pernah masuk ke konteks. Jika repositori Anda membagi panduan ke dalam file instruksi per paket dalam monorepo, ini adalah hal pertama yang harus diperiksa setiap kali.

Ada satu jebakan pemuatan lagi, dan ini adalah penyebab paling umum dari pesan "agent mengabaikan instruksi saya": Claude Code membaca CLAUDE.md, bukan AGENTS.md. Repositori yang menstandardisasi penggunaan AGENTS.md dan tidak memiliki CLAUDE.md tidak memberi Claude Code apa pun untuk dimuat. Solusi yang didukung adalah CLAUDE.md dengan baris pertama @AGENTS.md, yang mengimpor file tersebut saat peluncuran, dengan catatan khusus Claude di bawahnya. Symlink juga dapat digunakan jika Anda tidak perlu menambahkan apa pun. Menentukan isi file tersebut merupakan pertanyaan terpisah, yang dibahas dalam memisahkan instruksi agent dari dokumentasi untuk manusia.

Pastikan file dimuat sebelum Anda menulis ulang isinya

Jangan mengubah redaksi sampai Anda memiliki bukti 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 berada 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 mendapatkan jawaban yang lebih pasti, catat proses pemuatan file. Event hook InstructionsLoaded berjalan setiap kali CLAUDE.md atau file aturan masuk ke dalam konteks, dan matcher-nya menunjukkan alasan pemuatan: 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 file tersebut 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 bersarang Anda tidak pernah muncul dalam log selama sesi yang seharusnya memuatnya, hentikan perubahan redaksi. Masalahnya terletak pada penempatan file.

Dampak sesi panjang terhadap aturan Anda

Dua dampak terpisah berlaku di sini, dan masing-masing memerlukan respons yang berbeda.

Jarak. Aturan yang dinyatakan pada giliran 1 masih berada dalam jendela konteks pada giliran 90, tetapi kini bersaing dengan teks dari 90 giliran yang lebih baru dan lebih spesifik terhadap tugas yang sedang Anda kerjakan. 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 penyebabnya adalah jarak.

Kompaksi. Saat jendela konteks penuh, harness meringkas percakapan sejauh ini lalu melanjutkan dari ringkasan tersebut. Informasi yang bertahan adalah informasi yang dinilai penting oleh peringkas, dan penilaian itu belum tentu sama dengan penilaian Anda. Claude Code mendokumentasikan hasilnya untuk setiap mekanisme, dan perbedaannya besar. Root proyek CLAUDE.md serta aturan tanpa cakupan dimuat ulang dari disk setelah kompaksi. 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 di subdirektori tersebut dibaca kembali.

Urutkan instruksi Anda berdasarkan tabel tersebut, dan tingkat kerapuhannya akan terlihat. Aturan yang hanya Anda ketikkan ke chat adalah hal yang paling rapuh dalam sesi: aturan itu hanya bertahan jika ringkasan kebetulan mempertahankannya. Aturan dalam packages/api/CLAUDE.md berada di urutan berikutnya, karena aturan tersebut dimuat sekali, dihilangkan dalam ringkasan, lalu kembali hanya saat 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:. Selebihnya merupakan kompromi yang harus Anda pilih secara sadar. Mengelola informasi yang tetap berada dalam jendela konteks membahas /compact dengan argumen fokus dan /clear di antara tugas yang tidak berkaitan, yang keduanya memengaruhi seberapa sering peringkas dapat menentukan aturan Anda.

Mengapa kode di sekitarnya lebih kuat daripada aturan

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

Aturan menyatakan 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 dengan tugas di sisi lain. Menyalin pola lokal biasanya merupakan perilaku yang benar. Dalam kasus ini, tindakan tersebut salah hanya karena Anda mengetahui sesuatu yang tidak diketahui konteks: file-file itu adalah kode lama.

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

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 hal yang akan ditemukannya dan cara membacanya sebelum agent menemukannya. Perbaikan yang sama berlaku untuk aturan apa pun yang secara nyata dilanggar oleh repository Anda: gaya commit yang tidak diikuti oleh histori Anda, tata letak pengujian yang diabaikan oleh separuh test suite, atau konvensi import yang hanya berlaku pada kode baru. Jika kode tidak sesuai dengan isi file, sebutkan ketidaksesuaian tersebut di dalam file.

Aturan yang tidak jelas tidak dapat diperiksa, sehingga tidak dapat diikuti

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

Berikut pengujian yang harus diterapkan pada setiap baris dalam file Anda. Tulis perintah shell yang akan keluar dengan status non-zero ketika aturan tersebut dilanggar. Jika Anda tidak dapat menulis perintah itu, berarti 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 singkat, melainkan kalimat yang lebih panjang: menjelaskan secara rinci arti perubahan terkecil yang benar-benar berfungsi memberikan kriteria yang dapat digunakan agent untuk memeriksa diff-nya sendiri.

Ukuran file menimbulkan masalah yang sama dalam 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 bukanlah instruksi yang lebih tegas. File tersebut berisi 700 baris klaim dengan lebih banyak kemungkinan untuk saling bertentangan, dan seluruh isinya dihitung ke dalam window Anda pada setiap giliran, yang langsung terlihat 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. Lebih baik lagi, hapus bagian yang hanya menjelaskan, bukan memberikan instruksi: uraian direktori yang menunjukkan lokasi handler dan model adalah struktur yang dapat dicari agent saat diperlukan dari peta repository yang telah diuraikan, alih-alih terus membawanya dalam window pada setiap giliran.

Cara mendiagnosisnya dalam sepuluh menit

Jalankan perintah berikut secara berurutan. Langsung melompat ke langkah terakhir dapat menghasilkan file panjang berisi aturan yang ditulis dengan huruf kapital, tetapi tetap tidak berfungsi.

  1. Pastikan aturan telah dimuat. Jalankan /context dan baca daftar Memory files. Jika file tersebut tidak ada, perbaiki lokasinya lalu berhenti. Tidak ada langkah lain dalam daftar ini yang berlaku sebelum itu.
  2. Reproduksi dalam sesi baru. Mulai sesi baru dan berikan tugas terkecil yang seharusnya memicu aturan tersebut. Jika aturan berfungsi pada tahap ini tetapi gagal dalam sesi yang panjang, masalahnya kemungkinan terkait jarak atau compaction. Jika juga gagal pada tahap ini, masalahnya ada pada aturan itu sendiri.
  3. Hilangkan aturan yang bersaing. Minta perubahan yang sama dalam direktori yang kode di dalamnya sudah mengikuti aturan tersebut. Jika kepatuhan kembali muncul, kode di sekitarnya telah mengalahkan instruksi 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 dapat diperiksa, lalu uji kembali. Tulis ulang aturan tersebut dengan path konkret dan kondisi yang jelas. Jika kepatuhan meningkat secara signifikan, penyebabnya adalah 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

Temuan pada dua file yang berisi instruksi berbeda adalah penyebab masalahnya. Hapus salah satunya. Jangan mencoba menentukan prioritas dengan kata-kata yang lebih tegas karena tidak ada mesin pemeringkatan yang dapat dijadikan acuan.

Perbaikan, berdasarkan tingkat pengaruh

Setiap langkah di bawah ini memiliki pengaruh lebih besar daripada langkah di atasnya dan membutuhkan biaya penyiapan yang lebih tinggi. Mulailah dari atas ketika sebuah aturan mudah ditulis ulang. Turun ke langkah berikutnya segera setelah aturan tersebut cukup penting sehingga kegagalan sesekali tidak dapat diterima.

  1. Buat aturan menjadi konkret. Sebutkan path, command, atau kondisi. Tambahkan bukti penyangkal yang akan ditemukan agent di repository, seperti ditunjukkan sebelumnya. Langkah ini tidak memerlukan biaya dan menyelesaikan banyak kasus yang tidak terduga.
  2. Pindahkan aturan lebih dekat ke hal yang diaturnya. Gunakan CLAUDE.md bertingkat, aturan dengan scope 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 yang memutuskan. Hook berjalan sebagai kode pada event lifecycle tertentu dan menerapkan aturan terlepas dari kesimpulan model.
  4. Serahkan aturan kepada tool deterministik dan hapus prosanya. Formatting, urutan import, panjang baris, import yang dilarang, bentuk commit message. ruff format, prettier --write, eslint, atau hook pre-commit. Formatter selalu benar dan tidak menghabiskan token. Kalimat biasanya benar, tetapi menghabiskan token pada setiap turn.

Langkah 3 secara lengkap. Misalkan file migration tidak boleh diedit oleh agent. Tambahkan ini ke .claude/settings.json:

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

Lalu tambahkan ini 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, lalu 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 tool call sebelum dijalankan, dan teks stderr Anda diteruskan kepada model sebagai pesan pemblokiran. ${CLAUDE_PROJECT_DIR} mengarah ke root project, sehingga hook berfungsi dari direktori mana pun tempat agent berada. Agent tidak perlu menyetujui aturan tersebut, mengingatnya, atau masih memiliki aturan itu di dalam context. Edit tidak terjadi.

Untuk larangan sederhana tanpa logic, permissions.deny di settings Anda menjalankan fungsi yang sama tanpa script yang harus dipelihara, dan mode permission menentukan apa yang dijalankan tanpa meminta persetujuan Anda terlebih dahulu. Jika sebuah instruksi memang 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 cocok untuk script daripada pekerjaan interaktif.

Hal yang tidak dapat Anda atasi hanya dengan instruksi

Jelaskan bagian mana yang menjadi tanggung jawab Anda. Penempatan, perumusan, konflik antarfile, dan ukuran file adalah 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 kembali dengan benar, lalu melanggarnya dua panggilan tool kemudian. Pengakuan itu tidak memerlukan biaya apa pun 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, atau menjalankan perintah berikutnya yang sudah jelas. Semua ini akan muncul kembali ketika ada aturan yang melarangnya, meskipun dengan tingkat yang lebih rendah, bukan menjadi nol. Anda dapat mengukur tingkatnya sendiri: jalankan tugas yang sama sepuluh kali dalam session baru, lalu hitung pelanggarannya. Jika jumlah tersebut harus nol, aturan itu harus dikeluarkan dari prompt. Menyatakan tugas selesai ketika sebagian tugas masih belum dikerjakan memiliki pola yang sama. Perbaikannya bersifat struktural, bukan verbal: skill unlazy mengganti kalimat tersebut dengan Depth Tree dan file gate yang harus diselesaikan agent sebelum dapat menyatakan tugas selesai.

Session Anda sendiri menjadi contoh. Jika agent melanggar aturan pada turn 12 dan Anda membiarkannya, pelanggaran tersebut kini berada dalam context sebagai demonstrasi, dan posisinya jauh lebih baru daripada aturan itu. Perbaiki pelanggaran segera setelah Anda melihatnya. Pelanggaran yang tidak diperbaiki mengajarkan perilaku tersebut kepada seluruh session.

File instruksi bukan batas keamanan. File tersebut membentuk perilaku, tetapi tidak menegakkannya. Hal-hal yang berisiko jika terlewat, seperti kredensial atau perintah destruktif, harus ditangani melalui permissions atau hook. Menjauhkan secret dari jangkauan agent menerapkan prinsip yang sama pada data: jangan meminta agent untuk tidak membaca suatu file; atur agar file tersebut tidak dapat dibaca.

Versi singkatnya: buktikan bahwa file telah dimuat, buat aturan dapat diperiksa, letakkan aturan di dekat hal yang diaturnya, dan jika tingkat pelanggaran masih penting, keluarkan aturan tersebut dari teks instruksi. Aturan yang tidak dapat diabaikan agent adalah aturan yang sejak awal tidak pernah diminta dari agent.

FAQ

Mengapa Claude Code mengabaikan CLAUDE.md saya?

Pastikan file tersebut telah dimuat sebelum menyimpulkan bahwa file itu diabaikan. Jalankan /context dan periksa daftar Memory files; file yang tidak tercantum di sana tidak ada dalam percakapan. File instruksi dikirim sebagai pesan pengguna setelah system prompt dan diperlakukan sebagai konteks, bukan sebagai konfigurasi yang diberlakukan, sehingga tidak ada jaminan kepatuhan mutlak. Dalam praktiknya, 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 samar untuk digunakan saat memeriksa suatu tindakan, atau kode di sekitarnya menunjukkan hal yang berlawanan dengan isi aturan.

Apakah mengedit file instruksi di tengah sesi mengubah sesuatu?

Tidak untuk salinan yang sudah ada dalam percakapan. File di atas direktori kerja Anda dimuat secara lengkap 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 normalnya. Tindakan ini memasukkan versi terbaru ke dalam percakapan sebagai pesan baru. Setelah compaction, file root project dibaca ulang dari disk, sehingga versi baru juga masuk pada saat itu.

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

Tidak ada yang selalu berlaku. File yang ditemukan digabungkan ke dalam konteks, bukan saling menimpa. Urutannya dimulai dari root filesystem hingga direktori kerja Anda, 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 bertingkat sebagai tambahan yang menyebutkan path yang diaturnya, lalu hapus pertentangannya alih-alih mencoba membuatnya memiliki prioritas lebih tinggi.

Apakah instruksi saya tetap berlaku setelah /compact?

Bergantung pada cara instruksi tersebut dimuat. Project root CLAUDE.md, aturan tanpa scope, dan auto memory dimasukkan kembali dari disk setelah compaction. Aturan dengan frontmatter paths: dan file CLAUDE.md bertingkat di subdirektori hilang sampai file yang sesuai dibaca kembali. Apa pun yang hanya Anda ketikkan di chat tetap ada hanya jika summariser kebetulan mempertahankannya. Jika sebuah aturan harus berlaku sepanjang sesi, letakkan aturan tersebut dalam file project root tanpa frontmatter paths:.

Kapan sebuah aturan sebaiknya menjadi hook, bukan prosa?

Saat 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 semuanya memenuhi kriteria ini. Hook PreToolUse yang keluar dengan status 2 langsung memblokir tool call dan mengirimkan teks stderr Anda kembali ke model sebagai alasannya. Dengan demikian, aturan tersebut tetap berlaku terlepas dari apakah aturan itu masih ada dalam konteks. Apa pun yang dapat diputuskan oleh formatter atau linter sebaiknya ditangani oleh tool tersebut dan dihapus sepenuhnya dari file instruksi.