6 6
7> Kontrol bagaimana agen Anda menggunakan alat dengan mode izin, hooks, dan aturan allow/deny deklaratif.7> Kontrol bagaimana agen Anda menggunakan alat dengan mode izin, hooks, dan aturan allow/deny deklaratif.
8 8
9Claude 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`](/docs/id/agent-sdk/user-input) untuk menangani segalanya di runtime.9Claude 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`](https://code.claude.com/docs/id/agent-sdk/user-input) untuk menangani segalanya di runtime.
10 10
11## Cara izin dievaluasi11## Cara izin dievaluasi
12 12
14 14
15**1. Hooks**15**1. Hooks**
16 16
17Jalankan [hook](/docs/id/agent-sdk/hooks.md) terlebih dahulu. Sebuah hook dapat langsung menolak panggilan tersebut atau meneruskannya. Hook yang mengembalikan `allow` tidak melewati aturan deny dan ask di bawah; aturan-aturan tersebut tetap dievaluasi apa pun hasil hook-nya.17Jalankan [hook](https://code.claude.com/docs/id/agent-sdk/hooks.md) terlebih dahulu. Sebuah hook dapat langsung menolak panggilan tersebut atau meneruskannya. Hook yang mengembalikan `allow` tidak melewati aturan deny dan ask di bawah; aturan-aturan tersebut tetap dievaluasi apa pun hasil hook-nya.
18 18
19Hook `PreToolUse` yang mengembalikan `allow` juga tidak dapat menyetujui perintah `rm` atau `rmdir` yang targetnya dikenali oleh Claude Code sebagai [jalur kritis](/docs/id/permission-modes.md#critical-paths), seperti `rm -rf ~`. Untuk apa yang dilakukan `allow` tersebut dalam plan mode, lihat [Persetujuan hook dalam plan mode](/docs/id/permissions.md#hook-approvals-in-plan-mode).19Hook `PreToolUse` yang mengembalikan `allow` juga tidak dapat menyetujui perintah `rm` atau `rmdir` yang targetnya dikenali oleh Claude Code sebagai [jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-paths), seperti `rm -rf ~`. Untuk apa yang dilakukan `allow` tersebut dalam plan mode, lihat [Persetujuan hook dalam plan mode](https://code.claude.com/docs/id/permissions.md#hook-approvals-in-plan-mode).
20 20
21**2. Deny rules**21**2. Deny rules**
22 22
23Periksa aturan `deny` (dari `disallowed_tools` dan [settings.json](/docs/id/settings-reference.md#permission-settings)). Jika aturan deny cocok, tool tersebut diblokir, bahkan dalam mode `bypassPermissions`. Aturan deny dengan nama saja seperti `Bash` menghapus tool tersebut dari konteks Claude sebelum evaluasi ini dimulai, sehingga hanya aturan bercakupan seperti `Bash(rm *)` yang diperiksa pada langkah ini.23Periksa aturan `deny` (dari `disallowed_tools` dan [settings.json](https://code.claude.com/docs/id/settings-reference.md#permission-settings)). Jika aturan deny cocok, tool tersebut diblokir, bahkan dalam mode `bypassPermissions`. Aturan deny dengan nama saja seperti `Bash` menghapus tool tersebut dari konteks Claude sebelum evaluasi ini dimulai, sehingga hanya aturan bercakupan seperti `Bash(rm *)` yang diperiksa pada langkah ini.
24 24
25**3. Ask rules**25**3. Ask rules**
26 26
27Periksa aturan `ask` dari [settings.json](/docs/id/settings-reference.md#permission-settings). Jika aturan ask cocok, panggilan tersebut diteruskan ke [callback `canUseTool`](/docs/id/agent-sdk/user-input) Anda untuk konfirmasi, bahkan dalam mode `bypassPermissions`.27Periksa aturan `ask` dari [settings.json](https://code.claude.com/docs/id/settings-reference.md#permission-settings). Jika aturan ask cocok, panggilan tersebut diteruskan ke [callback `canUseTool`](https://code.claude.com/docs/id/agent-sdk/user-input) Anda untuk konfirmasi, bahkan dalam mode `bypassPermissions`.
28 28
29Tool yang memerlukan interaksi pengguna berperilaku sama: `AskUserQuestion` dan tool MCP yang server-nya menetapkan [`_meta["anthropic/requiresUserInteraction"]`](/docs/id/mcp#require-approval-for-a-specific-tool) selalu diteruskan ke callback, bahkan ketika aturan allow cocok. Dalam mode `dontAsk`, kedua kasus tersebut justru ditolak, karena mode tersebut tidak pernah menampilkan permintaan izin. Anotasi MCP memerlukan Claude Code v2.1.199 atau yang lebih baru.29Tool yang memerlukan interaksi pengguna berperilaku sama: `AskUserQuestion` dan tool MCP yang server-nya menetapkan [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/id/mcp#require-approval-for-a-specific-tool) selalu diteruskan ke callback, bahkan ketika aturan allow cocok. Dalam mode `dontAsk`, kedua kasus tersebut justru ditolak, karena mode tersebut tidak pernah menampilkan permintaan izin. Anotasi MCP memerlukan Claude Code v2.1.199 atau yang lebih baru.
30 30
31Tool [konektor claude.ai](/docs/id/mcp.md#organization-controls-on-connector-tools) yang telah ditetapkan organisasi Anda ke `ask` juga keluar dari alur pada langkah ini. Setiap panggilan diteruskan ke callback, bahkan dalam mode `bypassPermissions` dan bahkan ketika aturan allow cocok. Callback menerima alasan `Your organization requires approval for this tool`. Dalam mode `dontAsk`, panggilan tersebut justru ditolak, karena mode tersebut tidak pernah menampilkan permintaan izin.31Tool [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#organization-controls-on-connector-tools) yang telah ditetapkan organisasi Anda ke `ask` juga keluar dari alur pada langkah ini. Setiap panggilan diteruskan ke callback, bahkan dalam mode `bypassPermissions` dan bahkan ketika aturan allow cocok. Callback menerima alasan `Your organization requires approval for this tool`. Dalam mode `dontAsk`, panggilan tersebut justru ditolak, karena mode tersebut tidak pernah menampilkan permintaan izin.
32 32
33**4. Permission mode**33**4. Permission mode**
34 34
35Terapkan [mode izin](#permission-modes) yang aktif:35Terapkan [mode izin](#permission-modes) yang aktif:
36 36
37* Dalam mode `bypassPermissions`, Claude Code menyetujui semua yang mencapai langkah ini kecuali [penghapusan jalur kritis](/docs/id/permission-modes.md#critical-paths) yang dikenali, yang justru diteruskan ke langkah berikutnya.37* Dalam mode `bypassPermissions`, Claude Code menyetujui semua yang mencapai langkah ini kecuali [penghapusan jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-paths) yang dikenali, yang justru diteruskan ke langkah berikutnya.
38* Dalam mode `acceptEdits`, Claude Code menyetujui operasi file yang tercantum di bawah [Mode accept edits](#accept-edits-mode-acceptedits).38* Dalam mode `acceptEdits`, Claude Code menyetujui operasi file yang tercantum di bawah [Mode accept edits](#accept-edits-mode-acceptedits).
39* Dalam mode `plan`, Claude Code mengirimkan tool pengeditan file dan tool penulisan shell ke callback `canUseTool` Anda terlepas dari aturan allow, sehingga operasi tulis tidak dapat disetujui secara otomatis selama perencanaan.39* Dalam mode `plan`, Claude Code mengirimkan tool pengeditan file dan tool penulisan shell ke callback `canUseTool` Anda terlepas dari aturan allow, sehingga operasi tulis tidak dapat disetujui secara otomatis selama perencanaan.
40* Dalam mode lain, permintaan diteruskan ke langkah berikutnya.40* Dalam mode lain, permintaan diteruskan ke langkah berikutnya.
41 41
42**5. Allow rules**42**5. Allow rules**
43 43
44Periksa aturan `allow` (dari `allowed_tools` dan settings.json). Jika aturan cocok, tool tersebut disetujui. Panggilan yang disetujui oleh tool itu sendiri juga diselesaikan pada langkah ini, tanpa memerlukan aturan: misalnya pembacaan file di dalam direktori kerja Anda atau [perintah Bash read-only](/docs/id/permissions.md#read-only-commands).44Periksa aturan `allow` (dari `allowed_tools` dan settings.json). Jika aturan cocok, tool tersebut disetujui. Panggilan yang disetujui oleh tool itu sendiri juga diselesaikan pada langkah ini, tanpa memerlukan aturan: misalnya pembacaan file di dalam direktori kerja Anda atau [perintah Bash read-only](https://code.claude.com/docs/id/permissions.md#read-only-commands).
45 45
46[Penghapusan jalur kritis](/docs/id/permission-modes.md#critical-paths) yang dikenali tidak disetujui oleh aturan allow. Apakah penghapusan tersebut kemudian mencapai callback Anda bergantung pada mode izin: dalam sesi Agent SDK dalam mode `auto`, misalnya, Claude Code menolaknya secara default tanpa memanggil callback. [Tabel mode jalur kritis](/docs/id/permission-modes.md#critical-path-removals-in-each-permission-mode) mencantumkan apa yang dilakukan setiap mode terhadapnya.46[Penghapusan jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-paths) yang dikenali tidak disetujui oleh aturan allow. Apakah penghapusan tersebut kemudian mencapai callback Anda bergantung pada mode izin: dalam sesi Agent SDK dalam mode `auto`, misalnya, Claude Code menolaknya secara default tanpa memanggil callback. [Tabel mode jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-path-removals-in-each-permission-mode) mencantumkan apa yang dilakukan setiap mode terhadapnya.
47 47
48Aturan allow tidak menyetujui pembacaan dari [jalur jaringan](/docs/id/permissions.md#network-paths).48Aturan allow tidak menyetujui pembacaan dari [jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths).
49 49
50**6. canUseTool callback**50**6. canUseTool callback**
51 51
52Jika tidak diselesaikan oleh langkah-langkah di atas, panggil [callback `canUseTool`](/docs/id/agent-sdk/user-input) Anda untuk mendapatkan keputusan. Dalam mode `dontAsk`, langkah ini dilewati dan tool ditolak, meskipun [mod](/docs/id/plugins/mods/overview.md) yang Anda instal masih dapat menyetujui [beberapa panggilan semacam itu](/docs/id/permissions.md#precedence-among-rules-hooks-and-mods).52Jika tidak diselesaikan oleh langkah-langkah di atas, panggil [callback `canUseTool`](https://code.claude.com/docs/id/agent-sdk/user-input) Anda untuk mendapatkan keputusan. Dalam mode `dontAsk`, langkah ini dilewati dan tool ditolak, meskipun [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal masih dapat menyetujui [beberapa panggilan semacam itu](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods).
53 53
54Di TypeScript SDK, jika Anda menetapkan [`permissionPrompts: 'none'`](/docs/id/agent-sdk/typescript#options), callback Anda tidak dipanggil pada langkah ini. [Hook `PermissionRequest`](/docs/id/hooks#permissionrequest) masih mendapat kesempatan untuk memutuskan, dan jika hook tersebut tidak memutuskan, Claude Code menolak panggilan tersebut. Opsi ini memerlukan Claude Code v2.1.259 atau yang lebih baru.54Di TypeScript SDK, jika Anda menetapkan [`permissionPrompts: 'none'`](https://code.claude.com/docs/id/agent-sdk/typescript#options), callback Anda tidak dipanggil pada langkah ini. [Hook `PermissionRequest`](https://code.claude.com/docs/id/hooks#permissionrequest) masih mendapat kesempatan untuk memutuskan, dan jika hook tersebut tidak memutuskan, Claude Code menolak panggilan tersebut. Opsi ini memerlukan Claude Code v2.1.259 atau yang lebih baru.
55 55
5656
57 57
58Jika Anda meneruskan callback `canUseTool` dalam konfigurasi di mana TypeScript SDK memperkirakan urutan evaluasi akan menyetujui panggilan secara otomatis sebelum callback dikonsultasikan, SDK mengeluarkan peringatan proses Node.js satu kali saat query dibuat. Kode peringatan tersebut adalah `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Dua konfigurasi memicunya:58Jika Anda meneruskan callback `canUseTool` dalam konfigurasi di mana TypeScript SDK memperkirakan urutan evaluasi akan menyetujui panggilan secara otomatis sebelum callback dikonsultasikan, SDK mengeluarkan peringatan proses Node.js satu kali saat query dibuat. Kode peringatan tersebut adalah `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Dua konfigurasi memicunya:
59 59
60* `permissionMode: 'bypassPermissions'`, yang secara otomatis menyetujui setiap panggilan yang mencapai langkah mode izin, kecuali [tindakan yang tidak disetujui otomatis oleh mode mana pun](/docs/id/permission-modes.md#actions-no-mode-auto-approves)60* `permissionMode: 'bypassPermissions'`, yang secara otomatis menyetujui setiap panggilan yang mencapai langkah mode izin, kecuali [tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves)
61* Setiap entri `allowedTools` dengan nama saja seperti `"Read"`, yang secara otomatis menyetujui seluruh tool tersebut sebelum callback dikonsultasikan, kecuali [tindakan yang tidak disetujui otomatis oleh mode mana pun](/docs/id/permission-modes.md#actions-no-mode-auto-approves) dan [pembacaan dari jalur jaringan](/docs/id/permissions.md#network-paths)61* Setiap entri `allowedTools` dengan nama saja seperti `"Read"`, yang secara otomatis menyetujui seluruh tool tersebut sebelum callback dikonsultasikan, kecuali [tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) dan [pembacaan dari jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths)
62 62
63Entri dengan penentu seperti `Bash(ls *)` dan mode `acceptEdits` tidak memicunya, dan aturan allow yang berasal dari file pengaturan tidak terlihat oleh pemeriksaan ini.63Entri dengan penentu seperti `Bash(ls *)` dan mode `acceptEdits` tidak memicunya, dan aturan allow yang berasal dari file pengaturan tidak terlihat oleh pemeriksaan ini.
64 64
65Dengarkan dengan `process.on('warning', ...)` dan cocokkan kodenya untuk menulisnya ke log atau menekannya. Untuk membatasi setiap panggilan tool terlepas dari mode dan aturan, gunakan [hook `PreToolUse`](/docs/id/agent-sdk/hooks) sebagai gantinya.65Dengarkan dengan `process.on('warning', ...)` dan cocokkan kodenya untuk menulisnya ke log atau menekannya. Untuk membatasi setiap panggilan tool terlepas dari mode dan aturan, gunakan [hook `PreToolUse`](https://code.claude.com/docs/id/agent-sdk/hooks) sebagai gantinya.
66 66
67Halaman ini berfokus pada **aturan allow dan deny** serta **mode izin**. Untuk langkah-langkah lainnya:67Halaman ini berfokus pada **aturan allow dan deny** serta **mode izin**. Untuk langkah-langkah lainnya:
68 68
69* **Hook:** jalankan kode kustom untuk mengizinkan, menolak, atau memodifikasi permintaan tool. Lihat [Mengontrol eksekusi dengan hook](/docs/id/agent-sdk/hooks.md).69* **Hook:** jalankan kode kustom untuk mengizinkan, menolak, atau memodifikasi permintaan tool. Lihat [Mengontrol eksekusi dengan hook](https://code.claude.com/docs/id/agent-sdk/hooks.md).
70* **Callback canUseTool:** minta persetujuan pengguna saat runtime, ketika tidak ada langkah sebelumnya yang menyelesaikan panggilan tersebut. Lihat [Menangani persetujuan dan input pengguna](/docs/id/agent-sdk/user-input.md).70* **Callback canUseTool:** minta persetujuan pengguna saat runtime, ketika tidak ada langkah sebelumnya yang menyelesaikan panggilan tersebut. Lihat [Menangani persetujuan dan input pengguna](https://code.claude.com/docs/id/agent-sdk/user-input.md).
71 71
72## Aturan izin dan penolakan72## Aturan izin dan penolakan
73 73
74`allowed_tools` dan `disallowed_tools` (TypeScript: `allowedTools` / `disallowedTools`) menambahkan entri ke daftar aturan izin dan penolakan dalam alur evaluasi di atas. Jika Anda menyebutkan salah satu dari [alat pelacakan tugas](/docs/id/agent-sdk/todo-tracking.md#model-availability) dalam `allowed_tools`, Claude Code juga mengikutsertakan sesi tersebut. Alat lain apa pun yang tidak tercantum dalam `allowed_tools` masih tersedia untuk Claude, dan panggilan ke alat tersebut yang memerlukan persetujuan jatuh melalui mode izin. Aturan penolakan berperilaku berbeda tergantung pada apakah mereka menyebutkan alat atau membatasi pola dalam satu.74`allowed_tools` dan `disallowed_tools` (TypeScript: `allowedTools` / `disallowedTools`) menambahkan entri ke daftar aturan izin dan penolakan dalam alur evaluasi di atas. Jika Anda menyebutkan salah satu dari [alat pelacakan tugas](https://code.claude.com/docs/id/agent-sdk/todo-tracking.md#model-availability) dalam `allowed_tools`, Claude Code juga mengikutsertakan sesi tersebut. Alat lain apa pun yang tidak tercantum dalam `allowed_tools` masih tersedia untuk Claude, dan panggilan ke alat tersebut yang memerlukan persetujuan jatuh melalui mode izin. Aturan penolakan berperilaku berbeda tergantung pada apakah mereka menyebutkan alat atau membatasi pola dalam satu.
75 75
76| Opsi | Efek |76| Opsi | Efek |
77| :- | :- |77| :- | :- |
78| `allowed_tools=["Read", "Grep"]` | `Read` dan `Grep` disetujui secara otomatis, kecuali [pembacaan dari jalur jaringan](/docs/id/permissions.md#network-paths). Tool lain yang tidak tercantum di sini masih ada, dan panggilan ke tool tersebut yang memerlukan persetujuan diteruskan ke mode izin dan `canUseTool`. |78| `allowed_tools=["Read", "Grep"]` | `Read` dan `Grep` disetujui secara otomatis, kecuali [pembacaan dari jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths). Tool lain yang tidak tercantum di sini masih ada, dan panggilan ke tool tersebut yang memerlukan persetujuan diteruskan ke mode izin dan `canUseTool`. |
79| `disallowed_tools=["Bash"]` | Definisi alat `Bash` dihapus dari permintaan. Claude tidak melihat alat dan tidak dapat mencobanya. |79| `disallowed_tools=["Bash"]` | Definisi alat `Bash` dihapus dari permintaan. Claude tidak melihat alat dan tidak dapat mencobanya. |
80| `disallowed_tools=["Bash(rm *)"]` | `Bash` tetap tersedia. Panggilan yang cocok dengan `rm *` [seperti yang ditulis](/docs/id/permissions.md#bash-rule-limits) ditolak dalam setiap mode izin, termasuk `bypassPermissions`. Panggilan `Bash` lainnya, termasuk `/bin/rm`, jatuh melalui mode izin. |80| `disallowed_tools=["Bash(rm *)"]` | `Bash` tetap tersedia. Panggilan yang cocok dengan `rm *` [seperti yang ditulis](https://code.claude.com/docs/id/permissions.md#bash-rule-limits) ditolak dalam setiap mode izin, termasuk `bypassPermissions`. Panggilan `Bash` lainnya, termasuk `/bin/rm`, jatuh melalui mode izin. |
81| `disallowed_tools=["*"]` | Setiap definisi alat dihapus dari permintaan. Glob nama alat didukung dalam aturan penolakan: `"*"` cocok dengan setiap alat dan `"mcp__*"` cocok dengan setiap alat MCP di semua server. |81| `disallowed_tools=["*"]` | Setiap definisi alat dihapus dari permintaan. Glob nama alat didukung dalam aturan penolakan: `"*"` cocok dengan setiap alat dan `"mcp__*"` cocok dengan setiap alat MCP di semua server. |
82 82
83Aturan izin menerima glob nama tool hanya setelah awalan `mcp__<server>__` literal. Segmen server harus bebas glob sehingga aturan menyebutkan server spesifik yang Anda konfigurasi: `mcp__puppeteer__*` cocok dengan setiap tool dari server `puppeteer`, dan `mcp__github__get_*` cocok dengan tool `get_` miliknya. Entri yang tidak berlabuh seperti `allowed_tools=["*"]` atau `allowed_tools=["mcp__*"]` diabaikan dan tidak menyetujui apa pun secara otomatis.83Aturan izin menerima glob nama tool hanya setelah awalan `mcp__<server>__` literal. Segmen server harus bebas glob sehingga aturan menyebutkan server spesifik yang Anda konfigurasi: `mcp__puppeteer__*` cocok dengan setiap tool dari server `puppeteer`, dan `mcp__github__get_*` cocok dengan tool `get_` miliknya. Entri yang tidak berlabuh seperti `allowed_tools=["*"]` atau `allowed_tools=["mcp__*"]` diabaikan dan tidak menyetujui apa pun secara otomatis.
84 84
85Aturan berskop untuk `Read` dan `Edit` mengambil pola jalur. Aturan `Edit(path)` mengatur semua alat bawaan yang menulis file, termasuk `Write` dan `NotebookEdit`; aturan `Write(path)` tidak pernah cocok dengan pemeriksaan izin file.85Aturan berskop untuk `Read` dan `Edit` mengambil pola jalur. Aturan `Edit(path)` mengatur semua alat bawaan yang menulis file, termasuk `Write` dan `NotebookEdit`; aturan `Write(path)` tidak pernah cocok dengan pemeriksaan izin file.
86 86
87Gunakan `//path` untuk jalur sistem file absolut: aturan penolakan `Edit(//secrets/**)` memblokir penulisan di mana pun di bawah `/secrets` di disk. Dengan garis miring tunggal di depan, `Edit(/secrets/**)` berlabuh di sumber aturan sebagai gantinya. Untuk aturan yang dilewatkan melalui `allowed_tools` atau `disallowed_tools`, itu berarti direktori kerja sesi, sehingga aturan tidak memblokir `/secrets` di disk. Lihat [Aturan Read dan Edit](/docs/id/permissions.md#read-and-edit) untuk empat bentuk jangkar dan bagaimana aturan dari file pengaturan diselesaikan.87Gunakan `//path` untuk jalur sistem file absolut: aturan penolakan `Edit(//secrets/**)` memblokir penulisan di mana pun di bawah `/secrets` di disk. Dengan garis miring tunggal di depan, `Edit(/secrets/**)` berlabuh di sumber aturan sebagai gantinya. Untuk aturan yang dilewatkan melalui `allowed_tools` atau `disallowed_tools`, itu berarti direktori kerja sesi, sehingga aturan tidak memblokir `/secrets` di disk. Lihat [Aturan Read dan Edit](https://code.claude.com/docs/id/permissions.md#read-and-edit) untuk empat bentuk jangkar dan bagaimana aturan dari file pengaturan diselesaikan.
88 88
89> [!WARNING]89> [!WARNING]
90>90>
91> **Alat yang disetujui secara otomatis tidak pernah mencapai `canUseTool`.** Panggilan alat yang disetujui pada langkah sebelumnya apa pun, oleh `acceptEdits` atau `bypassPermissions`, atau oleh aturan izin, melewati callback `canUseTool` Anda, sehingga pemeriksaan izin yang Anda letakkan di sana diam-diam dilewati untuk alat tersebut.91> **Alat yang disetujui secara otomatis tidak pernah mencapai `canUseTool`.** Panggilan alat yang disetujui pada langkah sebelumnya apa pun, oleh `acceptEdits` atau `bypassPermissions`, atau oleh aturan izin, melewati callback `canUseTool` Anda, sehingga pemeriksaan izin yang Anda letakkan di sana diam-diam dilewati untuk alat tersebut.
92>92>
93> Tidak ada aturan izin yang menyetujui secara otomatis `AskUserQuestion`, tool MCP yang ditandai [`_meta["anthropic/requiresUserInteraction"]`](/docs/id/mcp#require-approval-for-a-specific-tool), tool konektor yang [diatur organisasi Anda ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools), atau [penghapusan jalur kritis](/docs/id/permission-modes.md#critical-paths) `rm` dan `rmdir` yang dikenali. Dalam mode `dontAsk` Claude Code menolak panggilan ini tanpa memanggil callback. Dalam mode lain tiga yang pertama mencapai callback. [Tabel mode jalur kritis](/docs/id/permission-modes.md#critical-path-removals-in-each-permission-mode) mencantumkan apa yang dilakukan setiap mode terhadap penghapusan jalur kritis. Pemeriksaan yang mengenali penghapusan ini [dapat melewatkan beberapa perintah](/docs/id/permission-modes.md#critical-paths).93> Tidak ada aturan izin yang menyetujui secara otomatis `AskUserQuestion`, tool MCP yang ditandai [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/id/mcp#require-approval-for-a-specific-tool), tool konektor yang [diatur organisasi Anda ke `ask`](https://code.claude.com/docs/id/mcp#organization-controls-on-connector-tools), atau [penghapusan jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-paths) `rm` dan `rmdir` yang dikenali. Dalam mode `dontAsk` Claude Code menolak panggilan ini tanpa memanggil callback. Dalam mode lain tiga yang pertama mencapai callback. [Tabel mode jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-path-removals-in-each-permission-mode) mencantumkan apa yang dilakukan setiap mode terhadap penghapusan jalur kritis. Pemeriksaan yang mengenali penghapusan ini [dapat melewatkan beberapa perintah](https://code.claude.com/docs/id/permission-modes.md#critical-paths).
94>94>
95> Cakupan tergantung pada bentuk entri: nama polos seperti `Read` atau `mcp__github__get_issue` menyetujui secara otomatis setiap panggilan ke tool tersebut kecuali pengecualian di atas dan [pembacaan dari jalur jaringan](/docs/id/permissions.md#network-paths), sementara aturan bercakupan seperti `Bash(npm test *)` hanya menyetujui secara otomatis panggilan yang cocok, dan panggilan `Bash` lainnya yang memerlukan persetujuan tetap diteruskan ke callback. Untuk pemeriksaan yang harus berjalan pada setiap panggilan tool, gunakan [hook `PreToolUse`](/docs/id/agent-sdk/hooks): hook berjalan sebelum setiap langkah lainnya, dan penolakan hook tetap berlaku bahkan dalam mode `bypassPermissions`.95> Cakupan tergantung pada bentuk entri: nama polos seperti `Read` atau `mcp__github__get_issue` menyetujui secara otomatis setiap panggilan ke tool tersebut kecuali pengecualian di atas dan [pembacaan dari jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths), sementara aturan bercakupan seperti `Bash(npm test *)` hanya menyetujui secara otomatis panggilan yang cocok, dan panggilan `Bash` lainnya yang memerlukan persetujuan tetap diteruskan ke callback. Untuk pemeriksaan yang harus berjalan pada setiap panggilan tool, gunakan [hook `PreToolUse`](https://code.claude.com/docs/id/agent-sdk/hooks): hook berjalan sebelum setiap langkah lainnya, dan penolakan hook tetap berlaku bahkan dalam mode `bypassPermissions`.
96 96
97Untuk agen yang terkunci, pasangkan `allowedTools` dengan `permissionMode: "dontAsk"`:97Untuk agen yang terkunci, pasangkan `allowedTools` dengan `permissionMode: "dontAsk"`:
98 98
103};103};
104```104```
105 105
106Tool yang tercantum disetujui, kecuali [tindakan yang tidak disetujui otomatis oleh mode mana pun](/docs/id/permission-modes.md#actions-no-mode-auto-approves) dan [pembacaan dari jalur jaringan](/docs/id/permissions.md#network-paths). Setiap panggilan lain yang akan memunculkan permintaan izin justru ditolak, meskipun [mod](/docs/id/plugins/mods/overview.md) yang Anda instal masih dapat menyetujui [sebagian dari panggilan tersebut](/docs/id/permissions.md#precedence-among-rules-hooks-and-mods).106Tool yang tercantum disetujui, kecuali [tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) dan [pembacaan dari jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths). Setiap panggilan lain yang akan memunculkan permintaan izin justru ditolak, meskipun [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal masih dapat menyetujui [sebagian dari panggilan tersebut](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods).
107 107
108Panggilan yang tidak memerlukan persetujuan dalam mode `default` tetap berjalan baik Anda mencantumkannya atau tidak. Panggilan tersebut mencakup [perintah Bash read-only](/docs/id/permissions.md#read-only-commands), tool seperti `Agent` yang tidak meminta persetujuan sebelum berjalan, dan pembacaan file di dalam direktori kerja Anda. Untuk menghapus tool sepenuhnya dari permintaan, tambahkan nama polosnya ke `disallowedTools`.108Panggilan yang tidak memerlukan persetujuan dalam mode `default` tetap berjalan baik Anda mencantumkannya atau tidak. Panggilan tersebut mencakup [perintah Bash read-only](https://code.claude.com/docs/id/permissions.md#read-only-commands), tool seperti `Agent` yang tidak meminta persetujuan sebelum berjalan, dan pembacaan file di dalam direktori kerja Anda. Untuk menghapus tool sepenuhnya dari permintaan, tambahkan nama polosnya ke `disallowedTools`.
109 109
110> [!WARNING]110> [!WARNING]
111>111>
112> **`allowed_tools` tidak membatasi `bypassPermissions`.** `allowed_tools` pra-menyetujui alat yang Anda cantumkan. Alat unlisted lainnya tidak cocok dengan aturan izin apa pun dan jatuh melalui mode izin, di mana `bypassPermissions` menyetujuinya. Mengatur `allowed_tools=["Read"]` bersama dengan `permission_mode="bypassPermissions"` masih menyetujui setiap alat, termasuk `Bash`, `Write`, dan `Edit`. Jika Anda memerlukan `bypassPermissions` tetapi menginginkan alat spesifik diblokir, gunakan `disallowed_tools`.112> **`allowed_tools` tidak membatasi `bypassPermissions`.** `allowed_tools` pra-menyetujui alat yang Anda cantumkan. Alat unlisted lainnya tidak cocok dengan aturan izin apa pun dan jatuh melalui mode izin, di mana `bypassPermissions` menyetujuinya. Mengatur `allowed_tools=["Read"]` bersama dengan `permission_mode="bypassPermissions"` masih menyetujui setiap alat, termasuk `Bash`, `Write`, dan `Edit`. Jika Anda memerlukan `bypassPermissions` tetapi menginginkan alat spesifik diblokir, gunakan `disallowed_tools`.
113 113
114Anda juga dapat mengonfigurasi aturan izin, penolakan, dan tanya secara deklaratif dalam `.claude/settings.json`. Aturan ini dibaca ketika sumber pengaturan `project` diaktifkan, yang mana untuk opsi `query()` default. Jika Anda mengatur `setting_sources` (TypeScript: `settingSources`) secara eksplisit, sertakan `"project"` agar aturan diterapkan. Lihat [Pengaturan Izin](/docs/id/settings-reference.md#permission-settings) untuk sintaks aturan.114Anda juga dapat mengonfigurasi aturan izin, penolakan, dan tanya secara deklaratif dalam `.claude/settings.json`. Aturan ini dibaca ketika sumber pengaturan `project` diaktifkan, yang mana untuk opsi `query()` default. Jika Anda mengatur `setting_sources` (TypeScript: `settingSources`) secara eksplisit, sertakan `"project"` agar aturan diterapkan. Lihat [Pengaturan Izin](https://code.claude.com/docs/id/settings-reference.md#permission-settings) untuk sintaks aturan.
115 115
116## Mode izin116## Mode izin
117 117
118Mode izin memberikan kontrol global atas cara Claude menggunakan tools. Anda dapat mengatur mode izin saat memanggil `query()` atau mengubahnya secara dinamis selama sesi streaming.118Mode izin memberikan kontrol global atas cara Claude menggunakan tools. Anda dapat mengatur mode izin saat memanggil `query()` atau mengubahnya secara dinamis selama sesi streaming.
119 119
120Dengan Claude Code v2.1.302 atau lebih baru, aplikasi Anda dimulai dalam mode `default` kecuali Anda mengatur mode izin atau aplikasi mendapatkannya dari [`permissions.defaultMode`](/docs/id/settings-reference#permissions-defaultmode) dalam file pengaturannya. Dalam mode `default`, Claude Code menolak setiap panggilan tool yang memerlukan persetujuan kecuali Anda menyetujuinya melalui aturan allow, hook, callback `canUseTool`, atau tool prompt izin. Jika panggilan tool ditolak, lihat [Panggilan tool ditolak dalam run `claude -p` dan Agent SDK](/docs/id/permission-modes#which-mode-a-non-interactive-run-starts-in).120Dengan Claude Code v2.1.302 atau lebih baru, aplikasi Anda dimulai dalam mode `default` kecuali Anda mengatur mode izin atau aplikasi mendapatkannya dari [`permissions.defaultMode`](https://code.claude.com/docs/id/settings-reference#permissions-defaultmode) dalam file pengaturannya. Dalam mode `default`, Claude Code menolak setiap panggilan tool yang memerlukan persetujuan kecuali Anda menyetujuinya melalui aturan allow, hook, callback `canUseTool`, atau tool prompt izin. Jika panggilan tool ditolak, lihat [Panggilan tool ditolak dalam run `claude -p` dan Agent SDK](https://code.claude.com/docs/id/permission-modes#which-mode-a-non-interactive-run-starts-in).
121 121
122### Mode yang tersedia122### Mode yang tersedia
123 123
126| Mode | Deskripsi | Perilaku Tool |126| Mode | Deskripsi | Perilaku Tool |
127| :- | :- | :- |127| :- | :- | :- |
128| `default` | Perilaku izin standar | Tidak ada persetujuan otomatis berbasis mode; panggilan yang memerlukan persetujuan dan tidak cocok dengan aturan izin memicu callback `canUseTool` Anda |128| `default` | Perilaku izin standar | Tidak ada persetujuan otomatis berbasis mode; panggilan yang memerlukan persetujuan dan tidak cocok dengan aturan izin memicu callback `canUseTool` Anda |
129| `dontAsk` | Tolak alih-alih meminta | Setiap panggilan yang sebaliknya akan meminta ditolak tanpa memanggil `canUseTool`, meskipun [mod](/docs/id/plugins/mods/overview.md) yang Anda instal masih dapat menyetujui [sebagian panggilan tersebut](/docs/id/permissions.md#precedence-among-rules-hooks-and-mods). Panggilan yang disetujui oleh `allowed_tools` atau aturan allow `settings.json` berjalan, begitu juga panggilan yang tidak memerlukan persetujuan dalam mode `default`. Beberapa panggilan, seperti [pembacaan dari jalur jaringan](/docs/id/permissions.md#network-paths), ditolak bahkan ketika `allowed_tools` atau aturan allow cocok dengannya. Untuk daftarnya, lihat [Mode jangan tanya](#don’t-ask-mode-dontask) |129| `dontAsk` | Tolak alih-alih meminta | Setiap panggilan yang sebaliknya akan meminta ditolak tanpa memanggil `canUseTool`, meskipun [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal masih dapat menyetujui [sebagian panggilan tersebut](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods). Panggilan yang disetujui oleh `allowed_tools` atau aturan allow `settings.json` berjalan, begitu juga panggilan yang tidak memerlukan persetujuan dalam mode `default`. Beberapa panggilan, seperti [pembacaan dari jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths), ditolak bahkan ketika `allowed_tools` atau aturan allow cocok dengannya. Untuk daftarnya, lihat [Mode jangan tanya](#don’t-ask-mode-dontask) |
130| `acceptEdits` | Terima otomatis pengeditan file | Pengeditan file dan [operasi sistem file](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, dll.) secara otomatis disetujui |130| `acceptEdits` | Terima otomatis pengeditan file | Pengeditan file dan [operasi sistem file](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, dll.) secara otomatis disetujui |
131| `bypassPermissions` | Lewati pemeriksaan izin | Tools berjalan tanpa prompt izin, kecuali untuk [tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes.md#actions-no-mode-auto-approves). Gunakan dengan hati-hati |131| `bypassPermissions` | Lewati pemeriksaan izin | Tools berjalan tanpa prompt izin, kecuali untuk [tindakan yang tidak ada mode auto-approve](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves). Gunakan dengan hati-hati |
132| `plan` | Mode perencanaan | Claude menjelajahi dan merencanakan tanpa mengedit file sumber Anda; pengeditan file tidak pernah auto-approved dan meminta melalui callback `canUseTool` Anda |132| `plan` | Mode perencanaan | Claude menjelajahi dan merencanakan tanpa mengedit file sumber Anda; pengeditan file tidak pernah auto-approved dan meminta melalui callback `canUseTool` Anda |
133| `auto` | Persetujuan yang diklasifikasikan model | Pengklasifikasi model meninjau tindakan seperti perintah shell dan permintaan jaringan, memungkinkan atau memblokir masing-masing yang ditinjau. Lihat [Mode Auto](/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) untuk ketersediaan dan urutan keputusan |133| `auto` | Persetujuan yang diklasifikasikan model | Pengklasifikasi model meninjau tindakan seperti perintah shell dan permintaan jaringan, memungkinkan atau memblokir masing-masing yang ditinjau. Lihat [Mode Auto](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) untuk ketersediaan dan urutan keputusan |
134 134
135> [!WARNING]135> [!WARNING]
136>136>
137> **Pewarisan subagent:** Subagent berjalan dalam mode izin sesi induk kecuali Anda mengatur `permissionMode` pada [`AgentDefinition`](/docs/id/agent-sdk/typescript#agentdefinition) dan sesi induk berada dalam mode `default`, `dontAsk`, atau `plan`. Bahkan kemudian, Claude Code tidak pernah menerapkan nilai `"bypassPermissions"`, dan menerapkan nilai `"auto"` hanya ketika [auto mode tersedia](/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) untuk subagent tersebut. Subagent berjalan dalam mode `bypassPermissions` hanya ketika sesi induk itu sendiri melakukannya. Pengecualian `bypassPermissions` memerlukan Claude Code v2.1.267 atau lebih baru.137> **Pewarisan subagent:** Jika sesi utama Anda berada dalam [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode), subagent yang [`AgentDefinition`](https://code.claude.com/docs/id/agent-sdk/typescript#agentdefinition)-nya mengatur `permissionMode: "acceptEdits"` tetap berjalan dalam plan mode. Panggilan `Edit` dan `Write` subagent tersebut pada file sumber Anda tetap diteruskan ke callback `canUseTool` Anda. Plan mode juga berlaku untuk subagent yang Anda definisikan, sehingga menyerahkan pekerjaan ke salah satunya tidak melewati peninjauan rencana terlebih dahulu.
138>138>
139> Subagent mungkin memiliki prompt sistem yang berbeda dan perilaku yang kurang terbatas daripada agen utama Anda, jadi mewarisi `bypassPermissions` memberi mereka akses sistem penuh dan otonom. [Tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes.md#actions-no-mode-auto-approves) masih berlaku.139> Subagent mewarisi `plan`, `acceptEdits`, `auto`, atau `bypassPermissions` dari sesi utama, dan di bawah sesi utama dalam mode `default` atau `dontAsk`, subagent berjalan dalam mode yang Anda atur. Bahkan kemudian, Claude Code tidak pernah menerapkan nilai `"bypassPermissions"`, dan menerapkan nilai `"auto"` hanya ketika [auto mode tersedia](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) untuk subagent tersebut. Pengecualian `bypassPermissions` memerlukan Claude Code v2.1.267 atau lebih baru.
140>
141> Subagent mungkin memiliki prompt sistem yang berbeda dan perilaku yang kurang terbatas daripada agen utama Anda, jadi mewarisi `bypassPermissions` memberi mereka akses sistem penuh dan otonom. [Tindakan yang tidak ada mode auto-approve](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) masih berlaku.
140 142
141### Atur mode izin143### Atur mode izin
142 144
253 255
254* Bekerja pada jalur di luar cakupan itu256* Bekerja pada jalur di luar cakupan itu
255* Menulis ke jalur yang dilindungi257* Menulis ke jalur yang dilindungi
256* Menghapus jalur yang dikenali Claude Code sebagai [jalur kritis](/docs/id/permission-modes.md#critical-paths) dengan `rm` atau `rmdir`258* Menghapus jalur yang dikenali Claude Code sebagai [jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-paths) dengan `rm` atau `rmdir`
257 259
258**Gunakan ketika:** Anda mempercayai pengeditan Claude dan menginginkan iterasi yang lebih cepat, seperti selama prototyping atau saat bekerja di direktori terisolasi.260**Gunakan ketika:** Anda mempercayai pengeditan Claude dan menginginkan iterasi yang lebih cepat, seperti selama prototyping atau saat bekerja di direktori terisolasi.
259 261
260#### Mode jangan tanya (`dontAsk`)262#### Mode jangan tanya (`dontAsk`)
261 263
262Mengonversi prompt izin apa pun menjadi penolakan, tanpa memanggil `canUseTool`, meskipun [mod](/docs/id/plugins/mods/overview.md) yang Anda instal masih dapat menyetujui [sebagian panggilan tersebut](/docs/id/permissions.md#precedence-among-rules-hooks-and-mods). Tools yang disetujui sebelumnya oleh `allowed_tools`, aturan allow `settings.json`, atau hook berjalan seperti biasa. Panggilan yang tidak memerlukan persetujuan dalam mode `default` juga berjalan, seperti pembacaan file di dalam direktori kerja Anda dan panggilan ke `Agent`.264Mengonversi prompt izin apa pun menjadi penolakan, tanpa memanggil `canUseTool`, meskipun [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal masih dapat menyetujui [sebagian panggilan tersebut](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods). Tools yang disetujui sebelumnya oleh `allowed_tools`, aturan allow `settings.json`, atau hook berjalan seperti biasa. Panggilan yang tidak memerlukan persetujuan dalam mode `default` juga berjalan, seperti pembacaan file di dalam direktori kerja Anda dan panggilan ke `Agent`.
263 265
264Tool konektor [yang diatur organisasi Anda ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools), tools yang memerlukan interaksi pengguna, [pembacaan dari jalur jaringan](/docs/id/permissions.md#network-paths), dan [penghapusan jalur kritis](/docs/id/permission-modes.md#critical-paths) yang dikenali ditolak bahkan ketika aturan allow cocok. Hook allow `PreToolUse` juga tidak meloloskan penghapusan jalur kritis yang dikenali maupun pembacaan dari jalur jaringan. Pemeriksaan yang mengenali penghapusan ini [dapat melewatkan beberapa perintah](/docs/id/permission-modes.md#critical-paths).266Tool konektor [yang diatur organisasi Anda ke `ask`](https://code.claude.com/docs/id/mcp#organization-controls-on-connector-tools), tools yang memerlukan interaksi pengguna, [pembacaan dari jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths), dan [penghapusan jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-paths) yang dikenali ditolak bahkan ketika aturan allow cocok. Hook allow `PreToolUse` juga tidak meloloskan penghapusan jalur kritis yang dikenali maupun pembacaan dari jalur jaringan. Pemeriksaan yang mengenali penghapusan ini [dapat melewatkan beberapa perintah](https://code.claude.com/docs/id/permission-modes.md#critical-paths).
265 267
266**Gunakan ketika:** Anda menginginkan permukaan tool yang tetap dan eksplisit untuk agen headless dan lebih suka penolakan keras daripada ketergantungan diam pada `canUseTool` yang tidak ada.268**Gunakan ketika:** Anda menginginkan permukaan tool yang tetap dan eksplisit untuk agen headless dan lebih suka penolakan keras daripada ketergantungan diam pada `canUseTool` yang tidak ada.
267 269
268#### Mode lewati izin (`bypassPermissions`)270#### Mode lewati izin (`bypassPermissions`)
269 271
270Auto-approve penggunaan tool tanpa meminta, kecuali kasus yang tercantum dalam peringatan di bawah. Hook masih dijalankan dan dapat memblokir operasi jika diperlukan. Pada Linux dan macOS, Claude Code menolak untuk memulai dalam mode ini sebagai root atau di bawah `sudo` di luar [sandbox yang diakui](/docs/id/permission-modes.md#skip-all-checks-with-bypasspermissions-mode), dan query gagal sebelum giliran pertama.272Auto-approve penggunaan tool tanpa meminta, kecuali kasus yang tercantum dalam peringatan di bawah. Hook masih dijalankan dan dapat memblokir operasi jika diperlukan. Pada Linux dan macOS, Claude Code menolak untuk memulai dalam mode ini sebagai root atau di bawah `sudo` di luar [sandbox yang diakui](https://code.claude.com/docs/id/permission-modes.md#skip-all-checks-with-bypasspermissions-mode), dan query gagal sebelum giliran pertama.
271 273
272> [!WARNING]274> [!WARNING]
273>275>
276> `allowed_tools` tidak membatasi mode ini. Setiap tool disetujui, bukan hanya yang Anda daftarkan. Kontrol ini masih berlaku:278> `allowed_tools` tidak membatasi mode ini. Setiap tool disetujui, bukan hanya yang Anda daftarkan. Kontrol ini masih berlaku:
277>279>
278> * Aturan penolakan, aturan `ask` eksplisit, dan hook dievaluasi sebelum pemeriksaan mode dan masih dapat memblokir tool.280> * Aturan penolakan, aturan `ask` eksplisit, dan hook dievaluasi sebelum pemeriksaan mode dan masih dapat memblokir tool.
279> * Tool konektor [yang diatur organisasi Anda ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools), tools yang memerlukan interaksi pengguna, dan [penghapusan jalur kritis](/docs/id/permission-modes.md#critical-paths) yang dikenali masih jatuh ke callback `canUseTool` Anda. Pemeriksaan yang mengenali penghapusan ini [dapat melewatkan beberapa perintah](/docs/id/permission-modes.md#critical-paths).281> * Tool konektor [yang diatur organisasi Anda ke `ask`](https://code.claude.com/docs/id/mcp#organization-controls-on-connector-tools), tools yang memerlukan interaksi pengguna, dan [penghapusan jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-paths) yang dikenali masih jatuh ke callback `canUseTool` Anda. Pemeriksaan yang mengenali penghapusan ini [dapat melewatkan beberapa perintah](https://code.claude.com/docs/id/permission-modes.md#critical-paths).
280> * [Perlindungan pesan lintas sesi](/docs/id/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) masih berlaku.282> * [Perlindungan pesan lintas sesi](https://code.claude.com/docs/id/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) masih berlaku.
281 283
282#### Mode rencana (`plan`)284#### Mode rencana (`plan`)
283 285
287 289
288Dalam SDK TypeScript, jika Anda mengatur `allowDangerouslySkipPermissions: true` bersama dengan `permissionMode: 'plan'`, pengeditan file dan perintah shell yang memodifikasi file masih mencapai callback `canUseTool` Anda. Opsi ini memungkinkan Anda untuk beralih ke `bypassPermissions` nanti dengan `setPermissionMode()`.290Dalam SDK TypeScript, jika Anda mengatur `allowDangerouslySkipPermissions: true` bersama dengan `permissionMode: 'plan'`, pengeditan file dan perintah shell yang memodifikasi file masih mencapai callback `canUseTool` Anda. Opsi ini memungkinkan Anda untuk beralih ke `bypassPermissions` nanti dengan `setPermissionMode()`.
289 291
290Claude dapat menggunakan `AskUserQuestion` untuk mengklarifikasi persyaratan sebelum menyelesaikan rencana. Lihat [Tangani persetujuan dan input pengguna](/docs/id/agent-sdk/user-input.md#handle-clarifying-questions) untuk menangani prompt ini.292Claude dapat menggunakan `AskUserQuestion` untuk mengklarifikasi persyaratan sebelum menyelesaikan rencana. Lihat [Tangani persetujuan dan input pengguna](https://code.claude.com/docs/id/agent-sdk/user-input.md#handle-clarifying-questions) untuk menangani prompt ini.
291 293
292**Gunakan ketika:** Anda ingin Claude mengusulkan perubahan tanpa menjalankannya, seperti selama tinjauan kode atau ketika Anda perlu menyetujui perubahan sebelum dibuat.294**Gunakan ketika:** Anda ingin Claude mengusulkan perubahan tanpa menjalankannya, seperti selama tinjauan kode atau ketika Anda perlu menyetujui perubahan sebelum dibuat.
293 295
294#### Auto mode (`auto`)296#### Auto mode (`auto`)
295 297
296Model pengklasifikasi meninjau tindakan seperti perintah shell dan permintaan jaringan sebelum dijalankan, serta mengizinkan atau memblokir masing-masing yang ditinjaunya. Untuk model dan penyedia yang diperlukan auto mode serta urutan evaluasi tindakannya, lihat [Hilangkan prompt izin dengan auto mode](/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode).298Model pengklasifikasi meninjau tindakan seperti perintah shell dan permintaan jaringan sebelum dijalankan, serta mengizinkan atau memblokir masing-masing yang ditinjaunya. Untuk model dan penyedia yang diperlukan auto mode serta urutan evaluasi tindakannya, lihat [Hilangkan prompt izin dengan auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode).
297 299
298Jika Anda mengalihkan sesi yang berada dalam auto mode ke model yang tidak didukung auto mode, menggunakan [`set_model()`](/docs/id/agent-sdk/python#claudesdkclient), [`setModel()`](/docs/id/agent-sdk/typescript#query-object), atau [`applyFlagSettings()`](/docs/id/agent-sdk/typescript#applyflagsettings), sesi berubah ke mode `default`:300Jika Anda mengalihkan sesi yang berada dalam auto mode ke model yang tidak didukung auto mode, menggunakan [`set_model()`](https://code.claude.com/docs/id/agent-sdk/python#claudesdkclient), [`setModel()`](https://code.claude.com/docs/id/agent-sdk/typescript#query-object), atau [`applyFlagSettings()`](https://code.claude.com/docs/id/agent-sdk/typescript#applyflagsettings), sesi berubah ke mode `default`:
299 301
300* **Yang Anda lihat**: pesan `system` dengan subtype `status` dan `permissionMode` diatur ke `"default"`, yang diberi tipe oleh SDK TypeScript sebagai [`SDKStatusMessage`](/docs/id/agent-sdk/typescript#sdkstatusmessage). Sejak saat itu, panggilan yang memerlukan persetujuan dan tidak cocok dengan aturan allow mencapai callback `canUseTool` Anda.302* **Yang Anda lihat**: pesan `system` dengan subtype `status` dan `permissionMode` diatur ke `"default"`, yang diberi tipe oleh SDK TypeScript sebagai [`SDKStatusMessage`](https://code.claude.com/docs/id/agent-sdk/typescript#sdkstatusmessage). Sejak saat itu, panggilan yang memerlukan persetujuan dan tidak cocok dengan aturan allow mencapai callback `canUseTool` Anda.
301* **Untuk kembali ke auto mode**: beralih ke model yang didukung, lalu panggil `set_permission_mode("auto")` atau `setPermissionMode("auto")`. Jika Anda mengembalikan model tanpa melakukan panggilan tersebut, sesi tetap dalam mode `default`. Selama model yang tidak didukung aktif, panggilan tersebut gagal dengan `Cannot set permission mode to auto: auto mode unavailable for this model`.303* **Untuk kembali ke auto mode**: beralih ke model yang didukung, lalu panggil `set_permission_mode("auto")` atau `setPermissionMode("auto")`. Jika Anda mengembalikan model tanpa melakukan panggilan tersebut, sesi tetap dalam mode `default`. Selama model yang tidak didukung aktif, panggilan tersebut gagal dengan `Cannot set permission mode to auto: auto mode unavailable for this model`.
302 304
303Perubahan ke mode `default` setelah panggilan `set_model()`, `setModel()`, atau `applyFlagSettings()` memerlukan Claude Code v2.1.299 atau lebih baru.305Perubahan ke mode `default` setelah panggilan `set_model()`, `setModel()`, atau `applyFlagSettings()` memerlukan Claude Code v2.1.299 atau lebih baru.
306 308
307Untuk langkah-langkah lain dalam alur evaluasi izin:309Untuk langkah-langkah lain dalam alur evaluasi izin:
308 310
309* [Menangani persetujuan dan input pengguna](/docs/id/agent-sdk/user-input.md): prompt persetujuan interaktif dan pertanyaan klarifikasi311* [Menangani persetujuan dan input pengguna](https://code.claude.com/docs/id/agent-sdk/user-input.md): prompt persetujuan interaktif dan pertanyaan klarifikasi
310* [Panduan hooks](/docs/id/agent-sdk/hooks.md): jalankan kode khusus pada titik-titik kunci dalam siklus hidup agen312* [Panduan hooks](https://code.claude.com/docs/id/agent-sdk/hooks.md): jalankan kode khusus pada titik-titik kunci dalam siklus hidup agen
311* [Aturan izin](/docs/id/settings-reference.md#permission-settings): aturan allow/deny deklaratif dalam `settings.json`313* [Aturan izin](https://code.claude.com/docs/id/settings-reference.md#permission-settings): aturan allow/deny deklaratif dalam `settings.json`