SpyBara
Go Premium

agent-sdk/permissions.md 2026-05-04 22:58 UTC to 2026-05-05 23:00 UTC

242 added, 0 removed.

2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

Konfigurasi izin

Kontrol bagaimana agen Anda menggunakan alat dengan mode izin, hooks, dan aturan allow/deny deklaratif.

Claude Agent SDK menyediakan kontrol izin untuk mengelola bagaimana Claude menggunakan alat. Gunakan mode izin dan aturan untuk menentukan apa yang diizinkan secara otomatis, dan callback canUseTool untuk menangani segalanya di runtime.

Bagaimana izin dievaluasi

Ketika Claude meminta alat, SDK memeriksa izin dalam urutan ini:

1

Hooks

Jalankan hooks terlebih dahulu. Hook dapat menolak panggilan sepenuhnya atau meneruskannya. Hook yang mengembalikan allow tidak melewati aturan deny dan ask di bawah; aturan tersebut dievaluasi terlepas dari hasil hook.

2

Deny rules

Periksa aturan deny (dari disallowed_tools dan settings.json). Jika aturan deny cocok, alat diblokir, bahkan dalam mode bypassPermissions.

3

Permission mode

Terapkan mode izin yang aktif. bypassPermissions menyetujui semua yang mencapai langkah ini. acceptEdits menyetujui operasi file. Mode lain jatuh melalui.

4

Allow rules

Periksa aturan allow (dari allowed_tools dan settings.json). Jika aturan cocok, alat disetujui.

5

canUseTool callback

Jika tidak diselesaikan oleh salah satu di atas, panggil callback canUseTool Anda untuk keputusan. Dalam mode dontAsk, langkah ini dilewati dan alat ditolak.

Diagram alur evaluasi izin

Halaman ini berfokus pada aturan allow dan deny serta mode izin. Untuk langkah lainnya:

Aturan allow dan deny

allowed_tools dan disallowed_tools (TypeScript: allowedTools / disallowedTools) menambahkan entri ke daftar aturan allow dan deny dalam alur evaluasi di atas. Mereka mengontrol apakah panggilan alat disetujui, bukan apakah alat tersedia untuk Claude.

Opsi Efek
allowed_tools=["Read", "Grep"] Read dan Grep disetujui secara otomatis. Alat yang tidak tercantum di sini masih ada dan jatuh melalui mode izin dan canUseTool.
disallowed_tools=["Bash"] Bash selalu ditolak. Aturan deny diperiksa terlebih dahulu dan berlaku di setiap mode izin, termasuk bypassPermissions.

Untuk agen yang terkunci, pasangkan allowedTools dengan permissionMode: "dontAsk". Alat yang tercantum disetujui; apa pun yang lain ditolak sepenuhnya daripada meminta:

const options = {
  allowedTools: ["Read", "Glob", "Grep"],
  permissionMode: "dontAsk"
};

Anda juga dapat mengonfigurasi aturan allow, deny, dan ask secara deklaratif di .claude/settings.json. Aturan ini dibaca ketika sumber pengaturan project diaktifkan, yang merupakan default untuk opsi query(). Jika Anda menetapkan setting_sources (TypeScript: settingSources) secara eksplisit, sertakan "project" agar aturan diterapkan. Lihat Pengaturan izin untuk sintaks aturan.

Mode izin

Mode izin memberikan kontrol global atas bagaimana Claude menggunakan alat. Anda dapat menetapkan mode izin saat memanggil query() atau mengubahnya secara dinamis selama sesi streaming.

Mode yang tersedia

SDK mendukung mode izin ini:

Mode Deskripsi Perilaku alat
default Perilaku izin standar Tidak ada persetujuan otomatis; alat yang tidak cocok memicu callback canUseTool Anda
dontAsk Tolak daripada meminta Apa pun yang tidak pra-disetujui oleh allowed_tools atau aturan ditolak; canUseTool tidak pernah dipanggil
acceptEdits Terima otomatis edit file Edit file dan operasi sistem file (mkdir, rm, mv, dll.) disetujui secara otomatis
bypassPermissions Lewati semua pemeriksaan izin Semua alat berjalan tanpa prompt izin (gunakan dengan hati-hati)
plan Mode perencanaan Alat baca saja berjalan; Claude menganalisis dan merencanakan tanpa mengedit file sumber Anda
auto (TypeScript saja) Persetujuan yang diklasifikasikan model Pengklasifikasi model menyetujui atau menolak setiap panggilan alat. Lihat Mode Auto untuk ketersediaan

Tetapkan mode izin

Anda dapat menetapkan mode izin sekali saat memulai kueri, atau mengubahnya secara dinamis saat sesi aktif.

Teruskan permission_mode (Python) atau permissionMode (TypeScript) saat membuat kueri. Mode ini berlaku untuk seluruh sesi kecuali diubah secara dinamis.

import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions


async def main():
async for message in query(
prompt="Help me refactor this code",
options=ClaudeAgentOptions(
permission_mode="default",  # Set the mode here
),
):
if hasattr(message, "result"):
print(message.result)


asyncio.run(main())

Detail mode

Mode terima edit (acceptEdits)

Menyetujui operasi file secara otomatis sehingga Claude dapat mengedit kode tanpa meminta. Alat lain (seperti perintah Bash yang bukan operasi sistem file) masih memerlukan izin normal.

Operasi yang disetujui secara otomatis:

  • Edit file (alat Edit, Write)
  • Perintah sistem file: mkdir, touch, rm, rmdir, mv, cp, sed

Keduanya hanya berlaku untuk jalur di dalam direktori kerja atau additionalDirectories. Jalur di luar cakupan itu dan penulisan ke jalur yang dilindungi masih meminta.

Gunakan ketika: Anda mempercayai edit Claude dan menginginkan iterasi yang lebih cepat, seperti selama prototyping atau saat bekerja di direktori terisolasi.

Mode jangan tanya (dontAsk)

Mengonversi prompt izin apa pun menjadi penolakan. Alat yang pra-disetujui oleh allowed_tools, aturan allow settings.json, atau hook berjalan normal. Segalanya ditolak tanpa memanggil canUseTool.

Gunakan ketika: Anda menginginkan permukaan alat yang tetap dan eksplisit untuk agen headless dan lebih suka penolakan keras daripada ketergantungan diam pada canUseTool yang tidak ada.

Mode lewati izin (bypassPermissions)

Menyetujui semua penggunaan alat secara otomatis tanpa prompt. Hooks masih dijalankan dan dapat memblokir operasi jika diperlukan.

Mode rencana (plan)

Membatasi Claude ke alat baca saja. Claude dapat membaca file dan menjalankan perintah shell baca saja untuk menjelajahi basis kode tetapi tidak mengedit file sumber Anda. Claude dapat menggunakan AskUserQuestion untuk mengklarifikasi persyaratan sebelum menyelesaikan rencana. Lihat Tangani persetujuan dan input pengguna untuk menangani prompt ini.

Gunakan ketika: Anda ingin Claude mengusulkan perubahan tanpa menjalankannya, seperti selama tinjauan kode atau ketika Anda perlu menyetujui perubahan sebelum dibuat.

Sumber daya terkait

Untuk langkah lain dalam alur evaluasi izin: