Ringkasan
- Pertahankan tiga dari sepuluh mod: collision-guard, model-router, dan auto-handoff. Masing-masing menunjukkan overhead terukur sekitar nol pada tugas baca headless, dan masing-masing menyelesaikan masalah yang bisa kamu sebutkan.
- Hapus next-steps. Mod ini mem-fork sesi setelah setiap jawaban yang memenuhi syarat dan memakan +250 token output dan +2850 ms per giliran di pengujian kami, termasuk di permukaan yang tidak pernah menampilkan sarannya.
- Hapus cache-keeper (+1589 ms, ping model berbayar), recording-mode (ia menyamarkan tampilan, bukan riwayat yang tersimpan), dan session-bookmarks (bookmark yang bisa memanggil model, menjalankan proses, dan menulis file).
- Hapus goal-meter, repo-heatmap, dan flight-recorder kecuali kamu memang mau visualnya. Biayanya hampir nol dan tidak ada manfaat terukur.
- Setiap mod guard gagal terbuka secara default. Tanpa handler
.catch, guard yang melempar error dilewati dan perintah tetap jalan. - Mod tidak di-sandbox. Baca output
claude plugin validatesebelum memasang satu pun.
Apa kata pengukurannya
Hype dan skala. Tweet rilisnya punya 4.138.918 tayangan, 20.021 suka, dan 13.440 bookmark saat kami ambil snapshot pada 2026-10-03 s11. Katalog komunitas mencantumkan 1018 mod di 873 repo kandidat, dipindai pada 2026-10-03 terhadap Claude Code 2.1.288 s9.
Mod adalah fungsi yang mengait pada sebuah event. Ia bisa jalan sebelum event, sesudahnya, menggantikannya, atau membungkusnya s1. Mod butuh Claude Code v2.1.287 atau lebih baru dan aktif secara default s2.
Keamanan dulu. Kata-kata Anthropic sendiri: "Mods run with the same access to your machine as Claude Code itself. They aren't sandboxed" s1. Proses yang dijalankan mod berjalan di luar sandbox, bahkan saat sandboxing kamu nyalakan s2. Dengan Read(.env) ditolak, mod tetap bisa membaca file itu lewat $.fs.read atau menjalankan program yang melakukannya s6. Dalam pemindaian katalog, 409 mod menjalankan proses host, 167 menulis file, 150 mengakses jaringan, dan 28 gagal divalidasi di versi ini s9.
Jangkauan versus klaim. Dalam audit statis kami, session-bookmarks memanggil $.model.complete, $.process.run, dan $.fs.write, jangkauan terberat di antara semuanya untuk sebuah fitur bookmark. next-steps punya jejak terkecil: tanpa fs, tanpa process, tanpa env. claude plugin validate mencetak baris calls: dan env reads: yang kami pakai untuk audit ini s6.
Mod andalannya punya biaya per giliran. next-steps mem-fork sesi dengan $.model.fork pada turn.complete, dan README menyebut fork itu "costs about one short reply" s10. Saran hanya digambar di terminal; permukaan lain tidak menampilkan apa-apa s10. Fork-nya tidak punya opsi untuk dimatikan. Dalam uji headless kami ia menambah +250 token output dan +2850 ms, dengan fork masuk ke penggunaan sesi padahal tidak ada yang ditampilkan s10.
Batas yang terdokumentasi. Waktu eksekusi hook dibatasi 10 detik per event, baca dan tulis $.fs 4 MiB per file, dan $.store 4 MiB JSON secara total s3.
Guard gagal terbuka. Dokumen menyebut hook tanpa handler .catch yang melempar error, kena timeout, atau mengembalikan bentuk yang salah akan dilewati, dan handler berikutnya jalan sebagai gantinya s7. Kami mereproduksinya: guard Bash yang melempar error, tanpa .catch, membiarkan touch ./marker-failopen.txt membuat file. Guard yang sama dengan .catch yang mengembalikan {deny} tidak membuat file. Sebuah laporan lapangan menemukan guard yang aktif dan berjalan tetapi tidak melakukan apa-apa, sementara plugin list tetap menampilkan "enabled" s8.
Bug terbuka di 2.1.288: deny yang dikembalikan setelah await next(e) tidak menghentikan tool, dan file tertulis 3 dari 3 kali sementara model diberi tahu penulisan gagal s5.
Mod versus hook di settings. Hook di settings menjalankan satu proses per panggilan. Kami mengukur biaya spawn: 2,2 ms untuk biner true, 8,3 ms untuk bash -c 'exit 0', 26,1 ms untuk python3 -c 'pass', dan 43,1 ms untuk node -e ''. Dalam 5.993 panggilan tool per minggu, hook node memakan 258 s. Mod in-process tidak membayar semua itu. Dokumen menyarankan hook di settings kalau kamu sudah punya skrip yang memblokir, mengizinkan, atau mencatat sebuah event s2. Satu laporan migrasi beralih dari 27 hook shell ke 5 mod s8.
Penyamaran hanya di tampilan. recording-mode menulis ulang apa yang digambar ui.render. ~/.claude/history.jsonl menyimpan prompt persis seperti diketik, dan seorang penguji menemukan string canary-nya 7 kali di entri queue-operation pada transkrip s5.
Di mana mod tidak jalan. claude -p headless dan Agent SDK menjalankan hook tetapi tidak menggambar apa-apa; sesi Desktop WSL tidak menjalankan keduanya s2.
Kepercayaan pada katalog. Seorang penguji menerbitkan mod yang tombolnya menjalankan program dengan $.process.run dan menulis file ke direktori home-nya. Mod itu terpasang seperti mod lain tanpa peringatan s5. Itu proof of concept yang diterbitkan sendiri, bukan serangan yang terlihat di dunia nyata.
Pengukuran
Korpus: 7 hari terakhir dari setup nyata, 85 sesi, 4 proyek, 882 prompt pengguna, 11.010 giliran asisten, 5.993 panggilan tool. Benchmark dijalankan di Claude Code 2.1.288 (macOS).
| config | dur ms | Δdur | out tok | Δout | task ok |
|---|---|---|---|---|---|
| baseline | 3980 | 0 | 247 | 0 | 3/3 |
| next-steps | 6830 | +2850 | 497 | +250 | 3/3 |
| cache-keeper | 5569 | +1589 | 367 | +120 | 3/3 |
| recording-mode | 8240 | +4260* | 598 | +351* | 3/3 |
| goal-meter | 3722 | -258 | 244 | -3 | 3/3 |
| collision-guard | 4565 | +585 | 376 | +129* | 3/3 |
| repo-heatmap | 4119 | +139 | 257 | +10 | 3/3 |
| flight-recorder | 3949 | -31 | 261 | +14 | 3/3 |
| model-router | 3698 | -282 | 238 | -9 | 3/3 |
| session-bookmarks | 4152 | +172 | 235 | -12 | 3/3 |
| auto-handoff | 4051 | +71 | 248 | +1 | 3/3 |
Baris bertanda * kemungkinan besar variansi jawaban. recording-mode dalam keadaan mati selama pengujian dan tidak menyuntikkan apa pun saat mati.
Protokol untuk mengulanginya:
- Pasang satu mod dalam satu waktu dan pastikan lolos
claude plugin validate. - Jalankan tugas baca-saja yang sama secara headless dengan
claude -pdi haiku, 3 pengulangan per konfigurasi, lalu ambil median durasi dan token output. - Kutip hanya selisih durasi dan token output. Biaya dalam USD bervariasi menurut urutan cache antar konfigurasi, jadi abaikan.
- Untuk biaya spawn, ukur 30 spawn dari setiap isi hook, ambil mediannya, lalu kalikan dengan jumlah panggilan tool mingguanmu.
Lakukan ini hari Senin
- Jalankan
claude plugin validatepada setiap mod yang terpasang dan baca bariscalls:danenv reads:. - Nonaktifkan mod mana pun yang jangkauannya (proses, tulis fs, panggilan model) lebih besar dari tugasnya.
- Nonaktifkan next-steps kalau kamu kebanyakan bekerja di run headless, panel VS Code, atau SDK, tempat sarannya tidak pernah ditampilkan.
- Tambahkan handler
.catchyang mengembalikan{ deny: ... }ke setiap mod guard yang kamu andalkan. - Buktikan setiap guard gagal tertutup: buat ia melempar error, jalankan perintah yang membuat file penanda, dan pastikan file itu tidak muncul.
- Jangan mengandalkan mod penyamar untuk menjaga rahasia keluar dari
~/.claude/history.jsonlatau transkrip. Periksa keduanya di disk. - Ganti hook shell per panggilan yang menjalankan node atau python dengan mod in-process, atau biner terkompilasi, kalau biaya spawn menumpuk dalam panggilan tool mingguanmu.
- Pelajari tombol matinya: nonaktifkan satu mod di
/plugin,--safe-modeuntuk satu sesi,"disableAllHooks": truedi~/.claude/settings.jsonuntuk semua tempat.
Baca lebih lanjut
- Bangun sendiri: panduan praktis mod sekitar 80 baris, dengan jebakan yang penting (state tingkat modul direset saat hot reload, jadi simpan data di
$.state) s4. - Tentukan mod, hook, skill, atau settings dari riwayatmu sendiri: seorang praktisi menyarankan menggali log sesimu dulu untuk mencari masalah yang berulang s12.
- Baca daftar event lengkap dan batasnya sebelum menulis guard s3.
- Pengelolaan seluruh organisasi di luar cakupan di sini. Satu poin untuk developer solo:
sec-defaultdimuat saat mesin punya managed settings atau kamu masuk dengan paket Team atau Enterprise, dan tidak menambah pembatasan lain s6. - Asal-usul desainnya, termasuk bug isolasi worktree yang diperbaiki di 2.1.288 dan internal runtime, ada di thread terbuka s5.
- Contoh mod dari Anthropic (token-weather, blast-radius, replay-theater) tercantum sebagai dibagikan tanpa dukungan s2.
Sumber
- Customize Claude Code with mods, blog Anthropic. Kenapa dibaca: definisi resmi dan peringatan tanpa sandbox dalam kata-kata Anthropic sendiri.
- Mods overview, dokumentasi. Kenapa dibaca: perbandingan mod versus hook, matriks permukaan, dan tombol matinya.
- Mods reference, dokumentasi. Kenapa dibaca: daftar event lengkap dan batas yang terdokumentasi.
- Getting started with Claude Code mods, claude.dev (Addy Osmani). Kenapa dibaca: panduan praktik terbaik, dengan jebakan yang tidak dibahas sumber lain.
- Mods issue #91870, GitHub. Kenapa dibaca: laporan lapangan soal isolasi, perilaku fail-closed, dan kebocoran riwayat.
- Manage mods for your organization, dokumentasi. Kenapa dibaca: audit validate dan batas setiap kontrol keamanan.
- React to events with a mod, dokumentasi. Kenapa dibaca: urutan rantai middleware dan default fail-open.
- The Guard I Installed Was Enabled, Running, and Doing Nothing, blog. Kenapa dibaca: satu-satunya laporan migrasi lapangan, dari 27 hook shell ke 5 mod.
- awesome-claude-code-mods, GitHub. Kenapa dibaca: ukuran ekosistem dan metode audit siap pakai.
- next-steps plugin source, GitHub. Kenapa dibaca: mekanisme asli mod andalan, termasuk fork per giliran.
- ClaudeDevs release tweet, X. Kenapa dibaca: pengumuman peluncuran dan jangkauannya.
- Avid's session-log mining workflow, X. Kenapa dibaca: cara menentukan apa yang dibangun atau dipasang sebelum memasang apa pun.
FAQ
Apakah mod di-sandbox?
Tidak. Anthropic menyebut mod berjalan dengan akses yang sama ke mesinmu seperti Claude Code sendiri s1. Program yang dijalankan mod juga berjalan di luar sandbox s2.
Apa yang terjadi kalau mod guard-ku crash?
Tanpa handler .catch, ia dilewati dan perintah tetap jalan s7. Tambahkan .catch yang mengembalikan { deny: ... } supaya ia gagal tertutup.
Apakah mod memakan token?
Hanya kalau ia memanggil model. Dari sepuluh yang kami jalankan, next-steps dan cache-keeper menunjukkan biaya terukur; sisanya tidak menunjukkan overhead yang kokoh dalam pengujian kami.
Bagaimana cara mematikan mod dengan cepat?
Nonaktifkan satu di /plugin, mulai sesi dengan --safe-mode, atau setel "disableAllHooks": true di ~/.claude/settings.json s2. Tidak satu pun dari ini menghentikan mod bawaan.
Bisakah aku memeriksa apa yang dilakukan sebuah mod sebelum memasangnya?
Bisa. claude plugin validate mencantumkan hook, panggilan API, dan variabel lingkungan yang dibacanya s6.
AIDive