# Claude Code 2.1.268: Apa yang Diperbaiki pada Aturan deny dan MCP

> Claude 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.

Source: https://ailoot.ai/blog/id/claude-code-2-1-268-fixes/
Canonical: https://ailoot.ai/blog/id/claude-code-2-1-268-fixes/
Language: id
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-040
Revision: sha256-a85286ec991c04ba54f8e2b3aa2c49c8a189eedfc1d1b6d070488753dc150744


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](https://ailoot.ai/docs/).



## Apa yang diperbaiki di Claude Code 2.1.268 dan 2.1.269?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Poin utama bagian ini">

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.

</div>

Empat perbaikan terkait aturan izin:

1.  **Penolakan pada symlink tidak berfungsi.** Aturan deny dan ask yang ditulis untuk direktori symlink (`/etc`, `/tmp`, `/var` di macOS, `/bin` di Linux) tidak terpicu ketika jalur disebutkan menggunakan lokasi aslinya. Perintah Bash juga mengabaikan aturan deny yang ditulis untuk jalur melalui symlink.
2.  **Penolakan saat membaca dan mengedit gagal jika disertai `env -C` atau `eval`.** Jika baris perintah yang sama berisi konstruksi yang tidak dapat diurai oleh pemeriksaan izin, deny pada Read atau Edit mungkin tidak terpicu.
3.  **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.
4.  **`tee` menulis dengan melewati penolakan.** Aturan deny untuk `Edit()` dan pemeriksaan jalur tulis tidak diterapkan pada file yang dibuat oleh perintah Bash `tee`. Izin `Bash(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?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Poin utama bagian ini">

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)`.

</div>

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:

```json
{
  "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?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Poin utama bagian ini">

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.

</div>

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](https://ailoot.ai/blog/id/mcp-servers-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?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Poin utama bagian ini">

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.

</div>

1.  **Cari tahu versi yang Anda gunakan.** Jalankan `claude --version` di 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.
2.  **Perbarui.** Panduan [cara memperbarui Claude Code ke versi terbaru](https://ailoot.ai/blog/id/update-claude-code/) berisi petunjuk langkah demi langkah dan pemecahan masalah. Pilih versi terbaru; jangan berhenti di 2.1.268.
3.  **Uji penolakan.** Jangan menguji aturan pada `.env` sungguhan: jika penolakan gagal, agen akan melihat kunci sungguhan. Buat file uji, misalnya `secret-test.txt`, yang berisi teks apa pun seperti “ini adalah uji”; tambahkan aturan `"Read(./secret-test.txt)"` ke daftar deny di `.claude/settings.json` proyek; 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 `/permissions` untuk 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.
4.  **Periksa kasus symlink jika Anda menggunakan jalur seperti ini.** Jika Anda memiliki aturan penolakan untuk `/tmp`, `/etc`, atau `/var` di macOS, atau `/bin` di Linux, ulangi pengujian untuk jalur-jalur tersebut setelah memperbarui.
5.  **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](https://ailoot.ai/blog/id/claude-code-cant-see-project-files/).

## 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 -C` serta `eval` dalam perintah yang Anda minta agen jalankan;
- jangan tunjukkan keluaran `/mcp`, `/plugin`, `claude mcp list`, atau `claude mcp get` kepada siapa pun, dan rotasikan kunci dari konfigurasi MCP yang mungkin telah jatuh ke tangan orang lain;
- ingat bahwa `tee` menulis 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.

<div class="section" role="doc-bibliography" aria-label="Sumber">

### 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>

</div>





Untuk melanjutkan bekerja dengan model, Anda dapat mengunjungi [Ailoot](https://ailoot.ai/).

## 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.


## Ailoot · Perusahaan dan portofolio proyeknya

Ailoot bertumpu pada pengalaman operasional yang teruji, basis pelanggan yang besar, layanan yang stabil, dan pemantauan KPI berkelanjutan.

Perusahaan dan portofolio proyeknya: jutaan pelanggan; penjualan miliaran setiap bulan.

Ailoot memanfaatkan pengalaman operasional ini untuk akses API ke fitur AI dalam produk pelanggan, agen, aplikasi, dan otomatisasi.
