AIDive

Paket video

Mod Claude Code: vonis bersumber, pengukuran, dan checklist hari Senin

9 menit baca

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 validate sebelum 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:

  1. Pasang satu mod dalam satu waktu dan pastikan lolos claude plugin validate.
  2. Jalankan tugas baca-saja yang sama secara headless dengan claude -p di haiku, 3 pengulangan per konfigurasi, lalu ambil median durasi dan token output.
  3. Kutip hanya selisih durasi dan token output. Biaya dalam USD bervariasi menurut urutan cache antar konfigurasi, jadi abaikan.
  4. 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 validate pada setiap mod yang terpasang dan baca baris calls: dan env 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 .catch yang 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.jsonl atau 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-mode untuk satu sesi, "disableAllHooks": true di ~/.claude/settings.json untuk 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-default dimuat 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

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.