Blog

Claude Code 2.1.268: Perkara yang Dibaiki pada Peraturan deny dan MCP

Markdown

Claude Code 2.1.268–2.1.269 membaiki empat isu kebenaran dan kebocoran rahsia dalam /mcp. Siapa yang terjejas, cara mengemas kini dan cara menyemak peraturan anda.

Baca artikel penuh

Claude Code versi 2.1.268 dikeluarkan pada 10 September 2026, diikuti versi 2.1.269 pada keesokan harinya. Anda patut mengemas kini dengan segera: dalam dua keadaan, peraturan deny yang anda gunakan untuk menyekat ejen daripada mengakses .env dan folder perkhidmatan tidak berkesan secara senyap. Selain itu, arahan /mcp boleh memaparkan rahsia daripada konfigurasi anda di terminal.

Semua maklumat di bawah berdasarkan changelog dan dokumentasi rasmi Anthropic seperti yang tersedia pada 17 September 2026, iaitu tarikh bahan sumber. Versi terkini pada tarikh itu ialah 2.1.274. Kami menerangkan cara pepijat tersebut berfungsi berdasarkan entri itu; pintasan sekatan tidak diuji semula pada versi yang terdedah kepada kelemahan tersebut.

Untuk arahan lanjut tentang penggunaan Ailoot, lihat dokumentasi.

Apakah yang telah dibaiki dalam Claude Code 2.1.268 dan 2.1.269?

Inti pati utama

Empat isu kebenaran telah dibaiki. Peraturan deny dan ask tidak berfungsi pada laluan melalui pautan simbolik, dan deny untuk Read atau Edit boleh gagal pada baris yang mengandungi env -C atau eval. Peraturan dengan “!” turut terpakai di luar fail tetapannya. Arahan tee menulis fail tanpa disekat oleh deny untuk Edit. Selain itu, /mcp dan claude mcp list memaparkan rahsia daripada konfigurasi, manakala ralat pemalam memaparkan token daripada URL Git.

Empat pembaikan berkaitan dengan peraturan kebenaran:

  1. Sekatan pada pautan simbolik tidak berfungsi. Peraturan deny dan ask yang ditulis untuk direktori pautan simbolik (/etc, /tmp, /var pada macOS, /bin pada Linux) tidak dicetuskan apabila laluan dinyatakan menggunakan lokasi sebenarnya. Arahan Bash juga mengabaikan peraturan deny yang ditulis untuk laluan melalui pautan simbolik.
  2. Sekatan membaca dan mengedit gagal apabila terdapat env -C atau eval. Jika baris arahan yang sama mengandungi binaan yang tidak dapat dihuraikan oleh semakan kebenaran, deny untuk Read atau Edit mungkin tidak dicetuskan.
  3. Peraturan dengan “!” terpakai lebih luas daripada yang dimaksudkan. Peraturan deny atau ask yang bermula dengan ! terpakai di luar fail tetapan tempat peraturan itu ditulis. Kini, peraturan itu hanya terpakai dalam skop sumbernya sendiri, dan negasi tunggal ! diabaikan.
  4. tee memintas sekatan penulisan. Peraturan deny untuk Edit() dan semakan laluan penulisan tidak dikenakan pada fail yang dicipta oleh arahan Bash tee. Kebenaran Bash(tee:*) tidak lagi merangkumi penulisan di luar direktori kerja.

Versi ini turut membaiki dua isu pendedahan rahsia. WebFetch tidak lagi menunggu tanpa had untuk respons daripada pelayan yang membiarkan sambungan terbuka: permintaan kini gagal selepas 300 saat, dan had masa boleh dikonfigurasikan dengan pemboleh ubah CLAUDE_CODE_WEBFETCH_DEADLINE_MS. Penggunaan CPU yang kekal tinggi dalam sesi melahu yang panjang juga telah dihapuskan.

Bagaimanakah sekatan berfungsi dalam Claude Code?

Inti pati utama

Peraturan ditulis dalam blok permissions dalam settings.json: deny menyekat, ask meminta pengesahan, dan allow membenarkan tindakan tanpa pengesahan. Semakan dijalankan mengikut turutan ini: deny, kemudian ask, kemudian allow. Peraturan menggunakan format Tool atau Tool(detail), contohnya Read(./.env).

Claude Code mempunyai tiga senarai peraturan: deny (sentiasa dilarang), ask (minta sebelum melakukan tindakan) dan allow (dibenarkan tanpa pengesahan). Apabila ejen hendak melakukan sesuatu, peraturan disemak dengan ketat mengikut turutan itu. Peraturan deny yang sepadan membatalkan sebarang allow untuk tindakan yang sama: peraturan allow tidak boleh membuat pengecualian kepada sekatan.

Peraturan disimpan di tiga tempat: peraturan pengguna dalam ~/.claude/settings.json, peraturan projek dalam .claude/settings.json di dalam repositori dan peraturan setempat dalam .claude/settings.local.json. Berikut ialah contoh tetapan yang menyekat pembacaan fail yang mengandungi kunci:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./secrets/**)",
      "Bash(rm *)"
    ]
  }
}

Anda boleh melihat semua peraturan aktif dan fail asal setiap peraturan dengan menjalankan /permissions dalam sesi. Jika sesuatu peraturan menyekat pembacaan, mesej sekatan akan menyatakan peraturan tersebut, yang berguna untuk semakan di bawah.

Ralat manakah yang menjejaskan sekatan dan skop peraturan?

Ralat itu menjejaskan semakan laluan dan arahan, serta skop peraturan daripada fail tetapan yang berlainan.

Kes pertama: pautan simbolik. Pada macOS, /etc, /tmp dan /var ialah pautan simbolik kepada folder sebenar di bawah /private; pada Linux, /bin lazimnya pautan yang serupa. Jika anda menulis peraturan deny untuk satu bentuk laluan tetapi ejen mengaksesnya menggunakan bentuk lain (contohnya lokasi sebenar dan bukannya pautan simbolik), peraturan itu tidak dicetuskan. Arahan Bash juga mengabaikan sekatan yang ditulis untuk laluan melalui pautan simbolik. Kedua-dua kes ini dibaiki dalam 2.1.268: peraturan kini terpakai tanpa mengira bentuk laluan yang digunakan.

Kes kedua: env -C dan eval pada baris yang sama. Semakan kebenaran menghuraikan arahan untuk mengenal pasti fail yang akan diaksesnya. Semakan itu tidak dapat menghuraikan binaan seperti env -C atau eval. Pepijatnya ialah apabila binaan sedemikian muncul pada baris tersebut, deny untuk Read atau Edit mungkin tidak dikuatkuasakan. Akibatnya, arahan itu boleh memintas sekatan membaca atau mengedit fail yang dilindungi.

Kes ketiga: peraturan dengan “!” terpakai di luar sempadannya. Peraturan yang bermula dengan ! sepatutnya terpakai hanya dalam fail tetapan tempat peraturan itu ditulis. Sebelum 2.1.269, peraturan itu turut terpakai kepada sumber tetapan lain. Kini, skopnya terhad kepada failnya sendiri, dan peraturan yang hanya mengandungi ! diabaikan.

Kes keempat: menulis melalui tee. Arahan Bash tee boleh menulis ke fail. Semakan laluan penulisan dan peraturan deny untuk Edit() tidak dikenakan pada fail itu. Pada masa yang sama, kebenaran Bash(tee:*) merangkumi penulisan di luar direktori kerja. Dalam 2.1.269, semakan ini mula dikenakan pada penulisan melalui tee: sekatan untuk fail itu berkuat kuasa, dan Bash(tee:*) hanya meliputi direktori kerja.

Jika anda menggunakan sekatan khusus — untuk menyekat .env, beberapa folder perkhidmatan atau arahan berbahaya — anda patut menyemaknya juga. Langkah-langkahnya ada di bawah.

Mengapa /mcp boleh memaparkan kunci anda?

Inti pati utama

Kunci dalam konfigurasi MCP sering dibekalkan melalui pemboleh ubah ${VAR}. Arahan /mcp, /plugin, claude mcp list dan claude mcp get, serta ralat log masuk MCP, memaparkan nilai yang telah digantikan — iaitu kunci itu sendiri. Dalam 2.1.268, output telah disunting untuk menyembunyikan rahsia.

Konfigurasi pelayan MCP lazimnya menyimpan kunci dalam pemboleh ubah persekitaran dan merujuknya melalui ${VAR} supaya fail itu boleh disimpan dalam repositori tanpa menyertakan rahsia itu sendiri. Masalahnya ialah arahan paparan (/mcp, /plugin, claude mcp list, claude mcp get) dan mesej ralat log masuk MCP memaparkan konfigurasi dengan nilai yang telah digantikan. Kunci itu sendiri muncul pada skrin.

Satu lagi pembaikan melibatkan ralat pemalam dan marketplace: ralat tersebut boleh memaparkan token atau kata laluan daripada URL Git sumber.

Jika output daripada /mcp atau claude mcp list dalam versi lama muncul dalam strim, tangkapan skrin, mesej kepada rakan sekerja atau log yang meninggalkan komputer anda, termasuk secara automatik, anggap bahawa kunci daripada konfigurasi MCP anda telah terdedah lalu tukarkannya. Jika output itu tidak pernah meninggalkan komputer anda, kemas kini sudah memadai. Kami mempunyai panduan berasingan tentang pelayan MCP dan persediaan siap guna: Pelayan MCP Claude Code.

Perubahan lain dalam versi ini

WebFetch dan artifak. Sebelum ini, peraturan WebFetch tanpa butiran dalam deny atau ask turut terpakai pada pembacaan dan pengubahsuaian artifak yang diterbitkan. Mulai 2.1.268, peraturan itu tidak lagi terpakai kepada artifak tersebut. Untuk menyekat artifak, anda memerlukan peraturan Artifact yang berasingan atau peraturan untuk domain itu, seperti WebFetch(domain:claude.ai). Jika anda bergantung pada sekatan umum WebFetch untuk melindungi artifak daripada dibaca, semak semula tetapan anda: peraturan terdahulu tidak lagi menyekat tindakan ini.

WebFetch kini mempunyai had masa. Permintaan kepada pelayan yang membiarkan sambungan terbuka dan tidak menamatkan responsnya kini gagal selepas 300 saat. Sebelum ini, permintaan sedemikian boleh tergantung tanpa had. Tingkah laku ini boleh dikonfigurasikan dengan pemboleh ubah CLAUDE_CODE_WEBFETCH_DEADLINE_MS; tetapkan nilainya kepada 0 untuk melumpuhkan had masa.

Penggunaan CPU yang kekal tinggi dalam sesi melahu telah dihapuskan. Dalam sesi melahu yang panjang, gelung melahu dalam Claude Code boleh menyebabkan penggunaan CPU kekal tinggi. Pepijat ini dibaiki dalam 2.1.268. Pepijat ini juga boleh menjejaskan mereka yang membiarkan sesi terbuka sepanjang hari.

Pasang versi terkini. Pepijat baharu muncul dalam 2.1.269: selepas sesi berjalan lama, arahan Bash Git yang hanya membaca data mula meminta kebenaran. Pepijat ini dibaiki dalam 2.1.270. Jadi, kemas kini kepada versi terkini (setakat 17 September 2026, versinya ialah 2.1.274); jangan berhenti pada 2.1.268 atau 2.1.269.

Bagaimanakah cara mengemas kini dan menyemak sama ada sekatan berfungsi?

Inti pati utama

Semak versi dengan claude --version, kemas kini kepada keluaran terkini, kemudian uji menggunakan fail selamat yang tidak mengandungi rahsia: tambah peraturan deny untuk fail itu, minta ejen membaca fail tersebut dan pastikan mesej sekatan merujuk kepada peraturan anda.

  1. Semak versi semasa anda. Jalankan claude --version di terminal. Pembaikan bagi isu yang diterangkan di atas dikeluarkan dalam 2.1.268 dan 2.1.269. Jika nombor versi lebih rendah daripada 2.1.268, versi anda belum mengandungi pembaikan ini, walaupun sama ada setiap isu itu terpakai bergantung pada laluan, arahan dan peraturan yang anda gunakan.
  2. Kemas kini. Panduan cara mengemas kini Claude Code kepada versi terkini menyediakan arahan langkah demi langkah dan penyelesaian masalah. Pilih versi terkini; jangan berhenti pada 2.1.268.
  3. Uji sekatan. Jangan uji peraturan pada fail .env sebenar: jika sekatan gagal, ejen akan melihat kunci sebenar. Cipta fail ujian, contohnya secret-test.txt, yang mengandungi sebarang teks seperti “ini ialah ujian”; tambah peraturan "Read(./secret-test.txt)" pada senarai deny dalam .claude/settings.json projek; mulakan semula sesi; kemudian minta: “baca fail secret-test.txt dan beritahu saya kandungannya.” Tingkah laku yang dijangka ialah mesej sekatan yang menyatakan peraturan anda. Jika ejen membaca fail itu, sekatan tidak berfungsi dalam ujian ini. Mulakan dengan menyemak sintaks dalam bahagian di atas dan buka /permissions untuk melihat peraturan aktif serta fail tempat peraturan itu dimuatkan. Keputusan ujian sahaja tidak mengenal pasti puncanya. Satu sekatan menunjukkan bahawa peraturan untuk fail ini berfungsi; ia tidak membuktikan apa-apa tentang peraturan anda yang lain, jadi semak peraturan itu satu demi satu dengan cara yang sama.
  4. Jika anda menggunakan laluan seperti ini, semak kes pautan simbolik. Jika anda mempunyai sekatan untuk /tmp, /etc atau /var pada macOS, atau /bin pada Linux, ulangi ujian untuk laluan tersebut selepas mengemas kini.
  5. Semak peraturan dengan “!”. Jika anda pernah menggunakannya, pastikan setiap peraturan ditulis dalam fail tempat peraturan itu sepatutnya terpakai.

Jika sekatan berfungsi tetapi Claude Code masih tidak dapat melihat fail yang anda perlukan, lihat penjelasan berasingan: mengapa Claude Code tidak dapat melihat fail projek.

Jika anda tidak dapat mengemas kini sekarang

Kadangkala anda perlu menangguhkan kemas kini: anda tidak dapat mengubah persekitaran, komputer itu milik syarikat atau anda perlu menyiapkan tugas semasa. Sehingga anda mengemas kini, anda boleh mengurangkan risiko dengan cara berikut:

  • tulis peraturan deny untuk kedua-dua bentuk laluan — pautan simbolik dan lokasi sebenar (pada macOS, laluan sebenar berada di bawah /private);
  • jangan gabungkan berbilang arahan pada satu baris, dan elakkan env -C serta eval dalam arahan yang anda minta ejen jalankan;
  • jangan tunjukkan output /mcp, /plugin, claude mcp list atau claude mcp get kepada sesiapa, dan tukar kunci daripada konfigurasi MCP yang mungkin sudah jatuh ke tangan orang lain;
  • ingat bahawa tee menulis dengan memintas deny untuk Edit — jangan anggap fail dilindungi jika Bash dibenarkan.

Langkah-langkah ini mengurangkan kemungkinan pintasan tertentu, tetapi tidak menggantikan pembaikan. Kemas kini dan jalankan ujian daripada bahagian sebelumnya sebaik sahaja anda boleh.

Ringkasan ringkas

Versi 2.1.268 dan 2.1.269 membaiki empat isu kebenaran Claude Code: pautan simbolik, baris dengan env -C dan eval, peraturan dengan “!” yang terpakai di luar failnya sendiri, serta penulisan melalui tee. Secara berasingan, versi tersebut membaiki pendedahan rahsia dalam output /mcp dan token dalam ralat pemalam. Semak nombor versi anda, kemas kini kepada keluaran terkini dan jalankan ujian menggunakan fail ujian daripada bahagian di atas. Mesej sekatan yang menyatakan peraturan anda menunjukkan bahawa sekatan berfungsi dalam ujian ini. Kehadiran peraturan dalam tetapan sahaja tidak mencukupi untuk mengesahkannya.

Sumber

Untuk terus bekerja dengan model, anda boleh pergi ke Ailoot.

Butiran lanjut

Soalan lazim: Claude Code 2.1.268: Perkara yang Dibaiki pada Peraturan deny dan MCP

Bagaimanakah saya menguji peraturan deny tanpa mendedahkan rahsia sebenar?

Cipta fail dengan teks yang tidak berbahaya, larang akses Read kepada fail ujian itu, mulakan semula sesi dan minta ejen membacanya. Jangkakan penolakan yang menyebut peraturan anda. Jangan gunakan fail .env sebenar untuk ujian yang mungkin gagal.

Adakah satu penolakan yang berjaya membuktikan semua kebenaran saya selamat?

Tidak. Ia hanya mengesahkan fail dan laluan akses yang diuji. Semak peraturan aktif dalam /permissions, kemudian uji laluan dan kes lain yang anda bergantung padanya, termasuk ejaan laluan symlink jika berkaitan.

Semua artikel