Claude Code 2.1.268: Apa yang Diperbaiki pada Aturan deny dan MCP
MarkdownClaude Code 2.1.268–2.1.269 memperbaiki empat masalah izin dan kebocoran rahasia di /mcp. Siapa yang terdampak, cara memperbarui, dan cara memeriksa aturan Anda.
Baca artikel lengkap
Claude Code versi 2.1.268 dirilis pada 10 September 2026, disusul keesokan harinya oleh 2.1.269. Anda sebaiknya segera memperbarui: dalam dua kasus, aturan deny yang Anda gunakan untuk memblokir agen agar tidak mengakses .env dan folder layanan diam-diam tidak berfungsi. Selain itu, perintah /mcp dapat mencetak rahasia dari konfigurasi Anda di terminal.
Semua informasi di bawah ini didasarkan pada changelog dan dokumentasi resmi Anthropic sebagaimana tersedia pada 17 September 2026, tanggal materi sumber. Versi terbaru pada tanggal tersebut adalah 2.1.274. Kami menjelaskan cara kerja kesalahan berdasarkan entri tersebut; bypass tidak direproduksi pada versi yang rentan.
Untuk petunjuk tambahan tentang penggunaan Ailoot, lihat dokumentasi.
Apa yang diperbaiki di Claude Code 2.1.268 dan 2.1.269?
Poin utama
Empat masalah izin diperbaiki. Aturan deny dan ask tidak berfungsi pada jalur melalui symlink, dan deny pada Read atau Edit dapat gagal pada baris yang berisi env -C atau eval. Aturan dengan “!” berlaku melampaui file pengaturannya. Perintah tee menulis file tanpa diblokir oleh deny pada Edit. Selain itu, /mcp dan claude mcp list menampilkan rahasia dari konfigurasi, sementara kesalahan plugin menampilkan token dari URL Git.
Empat perbaikan terkait aturan izin:
- Penolakan pada symlink tidak berfungsi. Aturan deny dan ask yang ditulis untuk direktori symlink (
/etc,/tmp,/vardi macOS,/bindi Linux) tidak terpicu ketika jalur disebutkan menggunakan lokasi aslinya. Perintah Bash juga mengabaikan aturan deny yang ditulis untuk jalur melalui symlink. - Penolakan saat membaca dan mengedit gagal jika disertai
env -Cataueval. Jika baris perintah yang sama berisi konstruksi yang tidak dapat diurai oleh pemeriksaan izin, deny pada Read atau Edit mungkin tidak terpicu. - Aturan dengan “!” berlaku lebih luas daripada yang dimaksudkan. Aturan deny atau ask yang diawali
!berlaku melampaui file pengaturan tempat aturan itu ditulis. Kini aturan hanya berlaku di dalam sumbernya sendiri, dan negasi tunggal!diabaikan. teemenulis dengan melewati penolakan. Aturan deny untukEdit()dan pemeriksaan jalur tulis tidak diterapkan pada file yang dibuat oleh perintah Bashtee. IzinBash(tee:*)tidak lagi mencakup penulisan di luar direktori kerja.
Versi ini juga memperbaiki dua masalah terkait paparan rahasia. WebFetch tidak lagi menunggu tanpa batas untuk respons dari server yang membiarkan koneksi tetap terbuka: permintaan kini gagal setelah 300 detik, dan batas waktu dapat dikonfigurasi dengan variabel CLAUDE_CODE_WEBFETCH_DEADLINE_MS. Versi ini juga menghapus penggunaan CPU tinggi yang terus-menerus dalam sesi lama yang menganggur.
Bagaimana cara kerja penolakan di Claude Code?
Poin utama
Aturan ditulis dalam blok permissions di settings.json: deny memblokir, ask meminta konfirmasi, dan allow mengizinkan tindakan tanpa konfirmasi. Pemeriksaan dilakukan dengan urutan berikut: deny, lalu ask, kemudian allow. Aturan memiliki format Tool atau Tool(detail), misalnya Read(./.env).
Claude Code memiliki tiga daftar aturan: deny (selalu dilarang), ask (bertanya sebelum melakukan tindakan), dan allow (diizinkan tanpa konfirmasi). Saat agen hendak melakukan sesuatu, aturan diperiksa dengan urutan tersebut secara ketat. deny yang cocok membatalkan allow untuk tindakan yang sama: aturan yang mengizinkan tidak dapat membuat pengecualian terhadap penolakan.
Aturan disimpan di tiga tempat: aturan pengguna di ~/.claude/settings.json, aturan proyek di .claude/settings.json dalam repositori, dan aturan lokal di .claude/settings.local.json. Berikut contoh pengaturan yang menolak pembacaan file berisi kunci:
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./secrets/**)",
"Bash(rm *)"
]
}
}
Anda dapat melihat semua aturan aktif dan file asalnya dengan menjalankan /permissions dalam sesi. Jika aturan memblokir pembacaan, penolakan akan menyebutkan aturan tersebut, yang berguna untuk pemeriksaan di bawah ini.
Kesalahan mana yang memengaruhi penolakan dan cakupan aturan?
Kesalahan memengaruhi pemeriksaan jalur dan perintah, serta cakupan aturan dari berbagai file pengaturan.
Kasus pertama: symlink. Di macOS, /etc, /tmp, dan /var adalah symlink ke folder asli di bawah /private; di Linux, /bin umumnya merupakan symlink serupa. Jika Anda menulis aturan deny untuk satu ejaan jalur tetapi agen mengaksesnya menggunakan ejaan lain (misalnya lokasi aslinya, bukan symlink), aturan tidak terpicu. Perintah Bash juga mengabaikan penolakan yang ditulis untuk jalur melalui symlink. Di 2.1.268, kedua kasus diperbaiki: aturan kini berlaku tanpa memedulikan ejaan jalur yang digunakan.
Kasus kedua: env -C dan eval pada baris yang sama. Pemeriksaan izin mengurai perintah untuk mengetahui file mana yang akan diakses. Pemeriksaan itu tidak dapat mengurai konstruksi seperti env -C atau eval. Masalahnya adalah ketika konstruksi seperti itu muncul pada baris, deny pada Read atau Edit mungkin tidak diterapkan. Akibatnya, perintah dapat melewati penolakan untuk membaca atau mengedit file yang dilindungi.
Kasus ketiga: aturan dengan “!” berlaku melampaui batasnya. Aturan yang diawali ! seharusnya hanya berlaku di dalam file pengaturan tempat aturan itu ditulis. Sebelum 2.1.269, aturan itu juga berlaku pada sumber pengaturan lain. Kini cakupannya dibatasi pada file itu sendiri, dan aturan yang hanya terdiri dari ! diabaikan.
Kasus keempat: menulis melalui tee. Perintah Bash tee dapat menulis ke file. Pemeriksaan jalur tulis dan aturan deny Edit() tidak diterapkan pada file tersebut. Pada saat yang sama, izin Bash(tee:*) mencakup penulisan di luar direktori kerja. Di 2.1.269, pemeriksaan ini mulai berlaku pada penulisan melalui tee: penolakan pada file diberlakukan, dan Bash(tee:*) hanya mencakup direktori kerja.
Jika Anda menggunakan penolakan terarah—untuk memblokir .env, beberapa folder layanan, atau perintah berbahaya—periksa juga aturan tersebut. Langkah-langkahnya ada di bawah.
Mengapa /mcp dapat menampilkan kunci Anda?
Poin utama
Kunci dalam konfigurasi MCP sering diberikan melalui variabel ${VAR}. Perintah /mcp, /plugin, claude mcp list, dan claude mcp get, serta kesalahan login MCP, menampilkan nilai yang telah disubstitusikan—yaitu kunci itu sendiri. Di 2.1.268, keluaran disamarkan.
Konfigurasi server MCP biasanya menyimpan kunci dalam variabel lingkungan dan merujuknya melalui ${VAR} agar file dapat disimpan di repositori tanpa menyertakan rahasia itu sendiri. Masalahnya, perintah untuk melihat konfigurasi (/mcp, /plugin, claude mcp list, claude mcp get) dan pesan kesalahan login MCP menampilkan konfigurasi dengan nilai yang sudah disubstitusikan. Kuncinya sendiri muncul di layar.
Perbaikan lain menyangkut kesalahan plugin dan marketplace: kesalahan tersebut dapat menampilkan token atau kata sandi dari URL Git sumber.
Jika keluaran /mcp atau claude mcp list dari versi lama pernah muncul di siaran, tangkapan layar, pesan kepada rekan kerja, atau log yang keluar dari mesin Anda, termasuk secara otomatis, anggap kunci dari konfigurasi MCP Anda telah terekspos dan rotasikan kunci tersebut. Jika keluaran tidak pernah meninggalkan mesin Anda, cukup perbarui. Kami memiliki panduan terpisah tentang server MCP dan konfigurasi siap pakai: Server MCP Claude Code.
Perubahan lain dalam versi ini
WebFetch dan artefak. Sebelumnya, aturan WebFetch tanpa detail dalam deny atau ask juga berlaku untuk membaca dan mengubah artefak yang diterbitkan. Mulai 2.1.268, aturan itu tidak lagi berlaku pada artefak tersebut. Untuk memblokir artefak, Anda memerlukan aturan Artifact terpisah atau aturan untuk domain, seperti WebFetch(domain:claude.ai). Jika Anda mengandalkan penolakan WebFetch umum untuk melindungi dari pembacaan artefak, periksa kembali pengaturan Anda: aturan sebelumnya tidak lagi memblokir tindakan tersebut.
WebFetch kini memiliki batas waktu. Permintaan ke server yang membiarkan koneksi tetap terbuka dan tidak menyelesaikan responsnya kini gagal setelah 300 detik. Sebelumnya, permintaan semacam itu dapat menunggu tanpa batas. Perilaku ini dapat dikonfigurasi dengan variabel CLAUDE_CODE_WEBFETCH_DEADLINE_MS; mengaturnya ke 0 akan menonaktifkan batas waktu.
Penggunaan CPU tinggi yang terus-menerus dalam sesi menganggur telah diatasi. Dalam sesi lama yang menganggur, loop idle di Claude Code dapat menyebabkan penggunaan CPU tinggi yang terus-menerus. Masalah ini diperbaiki di 2.1.268. Masalah ini juga dapat memengaruhi orang yang membiarkan sesi terbuka sepanjang hari.
Instal versi terbaru. Bug baru muncul di 2.1.269: setelah sesi berjalan lama, perintah Bash Git yang hanya membaca data mulai meminta izin. Bug ini diperbaiki di 2.1.270. Jadi, perbarui ke versi terbaru (per 17 September 2026, versinya adalah 2.1.274); jangan berhenti di 2.1.268 atau 2.1.269.
Bagaimana cara memperbarui dan memeriksa apakah penolakan berfungsi?
Poin utama
Periksa versi dengan claude --version, perbarui ke rilis terbaru, lalu uji menggunakan file aman tanpa rahasia: tambahkan aturan deny untuk file tersebut, minta agen membacanya, dan pastikan penolakannya menyebutkan aturan Anda.
- Cari tahu versi yang Anda gunakan. Jalankan
claude --versiondi terminal. Perbaikan untuk masalah yang dijelaskan di atas dirilis di 2.1.268 dan 2.1.269. Jika nomor versi Anda lebih rendah dari 2.1.268, versi Anda belum menyertakan perbaikan ini, meskipun apakah masing-masing masalah berlaku bergantung pada jalur, perintah, dan aturan yang Anda gunakan. - Perbarui. Panduan cara memperbarui Claude Code ke versi terbaru berisi petunjuk langkah demi langkah dan pemecahan masalah. Pilih versi terbaru; jangan berhenti di 2.1.268.
- Uji penolakan. Jangan menguji aturan pada
.envsungguhan: jika penolakan gagal, agen akan melihat kunci sungguhan. Buat file uji, misalnyasecret-test.txt, yang berisi teks apa pun seperti “ini adalah uji”; tambahkan aturan"Read(./secret-test.txt)"ke daftar deny di.claude/settings.jsonproyek; mulai ulang sesi; lalu tanyakan: “baca file secret-test.txt dan beri tahu saya isinya.” Perilaku yang diharapkan adalah penolakan yang menyebutkan aturan Anda. Jika agen membaca file tersebut, berarti penolakan tidak berfungsi dalam pengujian ini. Mulailah dengan memeriksa sintaks pada bagian di atas dan buka/permissionsuntuk melihat aturan aktif serta file asalnya. Hasil pengujian saja tidak mengidentifikasi penyebabnya. Satu pengujian penolakan menunjukkan bahwa aturan untuk file ini berfungsi; pengujian itu tidak menjelaskan aturan Anda yang lain, jadi periksa satu per satu dengan cara yang sama. - Periksa kasus symlink jika Anda menggunakan jalur seperti ini. Jika Anda memiliki aturan penolakan untuk
/tmp,/etc, atau/vardi macOS, atau/bindi Linux, ulangi pengujian untuk jalur-jalur tersebut setelah memperbarui. - Tinjau aturan dengan “!”. Jika Anda menggunakannya, periksa apakah masing-masing ditulis dalam file yang memang dimaksudkan sebagai cakupannya.
Jika penolakan berfungsi tetapi Claude Code tetap tidak dapat melihat file yang Anda perlukan, lihat penjelasan terpisah: mengapa Claude Code tidak dapat melihat file proyek.
Jika Anda belum dapat memperbarui sekarang
Terkadang Anda harus menunda pembaruan: Anda tidak dapat mengubah lingkungan, mesin milik perusahaan, atau Anda harus menyelesaikan tugas saat ini. Sampai Anda memperbarui, Anda dapat mengurangi risiko dengan cara berikut:
- tulis aturan deny untuk kedua ejaan jalur—symlink dan lokasi aslinya (di macOS, jalur asli berada di bawah
/private); - jangan gabungkan beberapa perintah pada satu baris, dan hindari
env -Csertaevaldalam perintah yang Anda minta agen jalankan; - jangan tunjukkan keluaran
/mcp,/plugin,claude mcp list, atauclaude mcp getkepada siapa pun, dan rotasikan kunci dari konfigurasi MCP yang mungkin telah jatuh ke tangan orang lain; - ingat bahwa
teemenulis dengan melewati deny pada Edit—jangan menganggap file terlindungi jika Bash diizinkan.
Langkah-langkah ini mengurangi kemungkinan terjadinya bypass tertentu, tetapi tidak menggantikan perbaikannya. Perbarui dan jalankan pengujian dari bagian sebelumnya sesegera mungkin.
Ringkasan singkat
Versi 2.1.268 dan 2.1.269 memperbaiki empat masalah izin Claude Code: symlink, baris dengan env -C dan eval, aturan dengan “!” yang berlaku melampaui filenya sendiri, dan penulisan melalui tee. Secara terpisah, versi ini memperbaiki paparan rahasia dalam keluaran /mcp dan token dalam kesalahan plugin. Periksa nomor versi Anda, perbarui ke rilis terbaru, dan jalankan pengujian menggunakan file uji dari bagian di atas. Penolakan yang menyebutkan aturan Anda menunjukkan bahwa penolakan berfungsi dalam pengujian ini. Keberadaan aturan di pengaturan saja tidak cukup untuk memverifikasinya.
Sumber
- Claude Code, changelog resmi (entri untuk 2.1.268, 2.1.269, 2.1.270): https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md
- Claude Code, tanggal rilis versi di npm: https://www.npmjs.com/package/@anthropic-ai/claude-code
- Claude Code, dokumentasi izin (sintaks deny/ask/allow): https://code.claude.com/docs/en/permissions
- Claude Code, rilis di GitHub: https://github.com/anthropics/claude-code/releases
Untuk melanjutkan bekerja dengan model, Anda dapat mengunjungi Ailoot.
Rincian selengkapnya
Pertanyaan tentang Claude Code 2.1.268: Apa yang Diperbaiki pada Aturan deny dan MCP
Bagaimana menguji aturan deny tanpa mengekspos rahasia asli?
Buat file berisi teks yang tidak berbahaya, larang akses Read ke file uji itu, mulai ulang sesi, lalu minta agen membacanya. Harapkan penolakan yang menyebut aturan Anda. Jangan gunakan file .env asli untuk pengujian yang mungkin gagal.
Apakah satu penolakan yang berhasil membuktikan seluruh izin saya aman?
Tidak. Itu hanya membuktikan file dan jalur akses yang diuji. Tinjau aturan aktif di /permissions, lalu uji jalur dan kasus lain yang Anda andalkan, termasuk ejaan jalur symlink bila relevan.