Kontrol penggunaan alat dan izin dalam Claude Code SDK
canUseTool
, hooks, dan aturan izin settings.json. Untuk dokumentasi API lengkap, lihat referensi TypeScript SDK.
canUseTool
- Persetujuan dinamis untuk kasus yang tidak tercakup, meminta izin penggunaquery()
atau mengubahnya secara dinamis selama sesi streaming.
Mode | Deskripsi | Perilaku Alat |
---|---|---|
default | Perilaku izin standar | Pemeriksaan izin normal berlaku |
plan | Mode perencanaan - tidak ada eksekusi | Claude hanya dapat menggunakan alat read-only; menyajikan rencana sebelum eksekusi (Saat ini tidak didukung dalam SDK) |
acceptEdits | Terima edit file otomatis | Edit file dan operasi filesystem disetujui secara otomatis |
bypassPermissions | Lewati semua pemeriksaan izin | Semua alat berjalan tanpa prompt izin (gunakan dengan hati-hati) |
acceptEdits
)bypassPermissions
)bypassPermissions
- Jika aktif, mengizinkan semua alat yang tersisacanUseTool
- Menangani kasus yang tersisabypassPermissions
bypassPermissions
menimpa aturan allow dan canUseTool
canUseTool
diteruskan sebagai opsi saat memanggil fungsi query
. Ini menerima nama alat dan parameter input, dan harus mengembalikan keputusan - baik izinkan atau tolak.
canUseTool dipicu setiap kali Claude Code akan menampilkan prompt izin kepada pengguna, misalnya hooks dan aturan izin tidak mencakupnya dan tidak dalam mode autoaccept.
Berikut adalah contoh lengkap yang menunjukkan cara mengimplementasikan persetujuan alat interaktif:
canUseTool
menangani kasus yang tidak dicakup oleh aturan izinsettings.json
menyediakan kontrol deklaratif dengan parsing perintah bash bawaan. Aturan ini dievaluasi sebelum canUseTool
dipanggil. Untuk detail lebih lanjut tentang konfigurasi pengaturan, lihat dokumentasi pengaturan Claude Code.
ToolName(pattern)
Bash(npm:*)
cocok dengan perintah apa pun yang dimulai dengan “npm”Read(./src/**/*.ts)
cocok dengan file TypeScript di srcWebFetch
memblokir semua web fetchrm -rf
atau curl | sh
Bash(git:*)
- Cocok dengan perintah git apa punBash(npm run test)
- Cocok dengan perintah yang tepatBash(npm run test:*)
- Cocok dengan npm run test:unit, test:integration, dll.