SpyBara
Go Premium

permission-modes.md 2026-11-12 23:02 UTC to 2026-11-13 02:58 UTC

This page contains 1 addition and 1 deletion.

2026
Mon 2 23:57 Tue 3 23:58 Wed 4 23:59 Fri 6 23:01 Tue 10 21:57 Wed 11 22:59 Fri 13 02:58

Pilih mode izin

Kontrol apakah Claude meminta izin sebelum bertindak. Alihkan mode izin dengan Shift+Tab di CLI, indikator mode di VS Code, atau pemilih mode di Desktop.

Mode izin menetapkan tindakan mana yang dapat dilakukan Claude dalam sesi tanpa meminta Anda terlebih dahulu. Dalam mode Manual, Claude Code berhenti dan meminta Anda sebelum sebagian besar tindakan yang mengedit file, menjalankan perintah shell, atau menjangkau jaringan. Dalam mode auto, model kedua, pengklasifikasi, meninjau tindakan sebagai gantinya Anda; bagaimana pengklasifikasi mengevaluasi tindakan mencantumkan tindakan mana yang ditinjau dan mana yang melewatinya.

Dengan Claude Code v2.1.283 atau lebih baru, auto mode adalah mode izin awal bawaan untuk sesi terminal interaktif dan VS Code. Pada versi sebelumnya, ini adalah mode izin awal bawaan hanya pada paket Pro, Max, Ultra, dan Team. Mode mana yang dimulai sesi mencakup surface dan pengaturan yang mengubah mode izin awal. Anda juga dapat mengubah mode izin sesi yang sedang berjalan kapan saja.

Mode yang tersedia

Setiap mode membuat pertukaran yang berbeda antara kenyamanan dan pengawasan. Tabel di bawah menunjukkan apa yang dapat dilakukan Claude tanpa permintaan izin di setiap mode. Mode Manual muncul di bawah nilai konfignya, default.

Mode Apa yang berjalan tanpa bertanya Terbaik untuk
default Hanya membaca Meninjau setiap tindakan sendiri, pekerjaan sensitif
acceptEdits Membaca, pengeditan file, dan perintah sistem file umum (mkdir, touch, mv, cp, dll.) Iterasi pada kode yang Anda tinjau
plan Membaca, plus perintah yang disetujui pengklasifikasi ketika mode auto tersedia Menjelajahi basis kode sebelum mengubahnya
auto Segalanya, dengan pemeriksaan keamanan latar belakang Tugas panjang, mengurangi kelelahan prompt
dontAsk Pembacaan file di dalam direktori kerja Anda dan tool yang telah disetujui sebelumnya; apa pun yang akan meminta izin ditolak, meskipun mod yang Anda instal masih dapat menyetujui sebagian dari panggilan tersebut CI dan skrip terkunci
bypassPermissions Segalanya Hanya kontainer dan VM terisolasi

Mode yang meninjau setiap tindakan dinamai Manual di CLI, di claude --help, di ekstensi VS Code dan JetBrains, dan di aplikasi desktop. Nilai konfignya adalah default, yang digunakan oleh hook dan integrasi SDK. CLI menerima manual sebagai alias di mana pun Anda mengetik nilainya, misalnya claude --permission-mode manual atau "defaultMode": "manual".

Setiap mode memiliki aturannya sendiri untuk penulisan ke jalur yang dilindungi.

Mode menetapkan garis dasar. Lapisi aturan izin di atas untuk menyetujui sebelumnya atau memblokir alat tertentu. Aturan Deny memblokir di setiap mode, termasuk bypassPermissions. Aturan Deny dan ask tidak berlaku untuk EndConversation selama Claude masih memiliki setidaknya satu alat lain yang dapat dipanggilnya. Aturan Allow tidak berpengaruh dalam bypassPermissions.

Tindakan yang tidak disetujui otomatis oleh mode mana pun

Claude Code tidak secara otomatis menyetujui hal-hal berikut di mode apa pun, termasuk bypassPermissions, meskipun Anda dapat mematikan permintaan izin untuk perintah rm yang berbahaya dalam mode bypassPermissions. Setiap poin menghubungkan ke bagian yang mengatakan apa yang terjadi sebagai gantinya di setiap mode:

  • Alat yang cocok dengan aturan ask eksplisit

  • Alat konektor yang organisasi Anda atur ke ask, dalam sesi di mana pengaturan itu mencapai Claude Code

  • Alat yang memerlukan interaksi pengguna: alat AskUserQuestion bawaan dan alat MCP yang ditandai requiresUserInteraction

  • Penghapusan jalur kritis oleh rm dan rmdir yang dikenali, yang tidak dapat disetujui oleh aturan allow mana pun maupun "allow" dari hook PreToolUse, serta perintah Bash yang ditandai Dangerous rm operation not ruled out

  • Penjaga pesan lintas sesi

  • Membaca di luar direktori kerja sementara permissions.blockReadsOutsideWorkingDirectories aktif: perintah Bash pembaca file yang dikenali meminta bahkan dalam mode auto dan mode bypassPermissions, dan begitu juga dengan retry tanpa sandbox apa pun yang memerlukan persetujuan untuk berjalan di luar sandbox. Memerlukan Claude Code v2.1.257 atau lebih baru.

    Perintah yang parser shell tidak dapat lacak, seperti yang mengubah direktori lebih dari sekali atau menjalankan subshell, meminta dengan cara yang sama bahkan ketika tidak menamai jalur luar apa pun. Permintaan ini tidak berlaku ketika perintah berjalan di sandbox dan sandbox memberlakukan blokir.

  • Menulis di luar direktori kerja sementara permissions.blockWritesOutsideWorkingDirectories aktif: Claude Code menolak panggilan Write, Edit, dan NotebookEdit di sana, kecuali untuk beberapa file miliknya sendiri. Kunci ini tidak membatasi perintah shell, tool MCP, atau program yang dijalankan hook, jadi gunakan sandboxing untuk membatasi lokasi penulisan perintah shell. Memerlukan Claude Code v2.1.314 atau lebih baru.

Pengaturan umum

Mode izin memutuskan apakah Claude meminta sebelum tindakan, dan sandbox Bash dan batas isolasi luar memutuskan apa yang dapat dijangkau tindakan setelah berjalan. Setiap baris di bawah memasangkan tujuan dengan flag atau pengaturan yang membawanya ke sana dan isolasi yang dibutuhkan, sebagai titik awal. Mode yang tersedia mencantumkan apa yang berjalan tanpa prompt di setiap mode.

Anda ingin Mulai dengan Isolasi yang diperlukan Catatan
Tinjau setiap tindakan sendiri Mode Manual: claude --permission-mode default Tidak ada Pekerjaan sensitif, kode yang tidak familiar
Iterasi lokal dengan lebih sedikit prompt, tanpa pengklasifikasi Mode Manual ditambah sandbox Bash dalam mode auto-allow: claude --permission-mode default, kemudian jalankan /sandbox dan pilih auto-allow Sandbox Bash bawaan, di macOS, Linux, dan WSL2 Aturan deny masih berlaku, dan aturan ask yang menyebutkan perintah, seperti Bash(git push *), masih meminta. Mode auto-allow mencakup perintah lain yang dapat meminta. Untuk mengaktifkan sandbox dari file pengaturan sebagai gantinya, atur sandbox.enabled ke true
Jelajahi sebelum mengubah apa pun claude --permission-mode plan Tidak ada Claude Code memblokir pengeditan sampai Anda menyetujui rencana
Bekerja hands-off dalam mode auto claude --permission-mode auto, mode izin awal bawaan dengan v2.1.283 atau lebih baru Tidak ada; sandbox atau kontainer menambah pertahanan berlapis Memerlukan model yang didukung, dan organisasi Anda dapat mematikan mode auto
Jalankan di CI dengan allowlist yang tepat claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read" Tidak ada di luar apa yang disediakan runner CI Anda Cloud sessions mengabaikan dontAsk dari file pengaturan
Jalankan sepenuhnya tanpa pengawasan di dalam kontainer claude -p "<prompt>" --dangerously-skip-permissions Diperlukan: kontainer, VM, atau runtime sandbox; di Linux dan macOS, jalankan sebagai pengguna non-root Cloud sessions mengabaikan mode ini dari file pengaturan. Dalam jalankan -p ini, beberapa panggilan yang masih akan meminta ditolak sebagai gantinya

Sandbox Bash dan mode auto bekerja secara independen dan menggabungkan, dengan pengecualian yang tercantum di bawah Sandbox modes. Untuk interaksi penuh, lihat Bagaimana sandboxing berhubungan dengan izin dan mode izin dan Bagaimana isolasi berhubungan dengan mode izin.

Mode yang digunakan saat sesi dimulai

Saat Anda memulai sesi baru di terminal, Claude Code mengambil mode izin dari yang pertama berlaku di antara berikut ini:

  1. Flag --permission-mode, atau --dangerously-skip-permissions

  2. permissions.defaultMode dalam file pengaturan

    Jika Anda menetapkan "auto" di .claude/settings.json atau .claude/settings.local.json, nilai tersebut tidak berlaku, dan Claude Code kemudian menggunakan default bawaan alih-alih defaultMode dari ~/.claude/settings.json. Jika Anda menetapkan "bypassPermissions" di kedua file tersebut, nilai itu juga tidak berlaku, dan sesi dimulai dalam mode Manual. Nilai lainnya berlaku dari file pengaturan mana pun.

  3. Default bawaan

Percakapan yang dimulai oleh ekstensi VS Code mengikuti daftar milik ekstensi itu sendiri di Beralih mode izin. Untuk mode izin yang digunakan Claude Code saat memulai sesi yang dilanjutkan, lihat mode izin saat melanjutkan.

Default auto bawaan memerlukan Claude Code v2.1.228 atau yang lebih baru di macOS, Linux, dan WSL, serta v2.1.233 atau yang lebih baru di Windows native. Pada versi sebelumnya, default bawaannya adalah Manual.

Default bawaan bergantung pada cara Anda menjalankan Claude Code. Baris pertama yang cocok dengan sesi Anda yang berlaku. Tabel ini mencakup sesi yang Anda mulai di terminal atau melalui ekstensi VS Code; untuk aplikasi desktop dan claude.ai, lihat tab Desktop dan Web di Beralih mode izin.

Cara Anda menjalankan Claude Code Mode izin awal bawaan
File pengaturan mana pun menetapkan disableAutoMode ke "disable" default
claude -p atau Agent SDK default
Organisasi Anda telah menerapkan konfigurasi HIPAA dan sesi tersebut memenuhi syarat untuknya default dengan Claude Code v2.1.285 atau yang lebih baru; auto mode tetap tersedia untuk dipilih
Di terminal atau melalui ekstensi VS Code auto dengan Claude Code v2.1.283 atau yang lebih baru; pada versi sebelumnya, auto pada paket Pro, Max, Ultra, atau Team dalam sesi yang mengambil feature flag, dan default jika tidak

Ketika flag, file pengaturan, atau default bawaan memilih auto tetapi auto mode tidak tersedia untuk sesi tersebut, Claude Code memulai sesi dalam mode Manual sebagai gantinya. Auto mode tidak tersedia ketika sesi tidak memenuhi persyaratan ketersediaan, misalnya file pengaturan yang menonaktifkannya atau model yang tidak mendukungnya, atau ketika Anthropic untuk sementara menonaktifkannya di sisi server.

Pertama kali default bawaan memulai salah satu sesi Anda dalam auto mode, Claude Code menampilkan pemberitahuan yang menautkan ke halaman ini:

  • Di terminal, satu kali, di bagian atas sesi
  • Di ekstensi VS Code, sebagai kartu pada layar percakapan baru yang tetap ada hingga Anda menutupnya

Jika ~/.claude/settings.json Anda menetapkan defaultMode selain auto dan tidak ada file pengaturan lain yang menetapkannya, sesi Anda tetap dimulai dalam mode tersebut.

Pada paket Pro, Max, Ultra, dan Team, serta dalam sesi yang tidak mengambil feature flag, Claude Code bertanya satu kali apakah pengaturan akan diubah ke auto mode. Pertanyaan tersebut muncul di terminal atau di ekstensi VS Code, dan jika Anda menolak, pengaturan Anda tetap seperti semula.

Panggilan tool yang ditolak dalam claude -p dan eksekusi Agent SDK

Di Claude Code v2.1.302 atau yang lebih baru, eksekusi claude -p dan Agent SDK yang tidak menetapkan mode izin dimulai dalam mode Manual. Mode ini muncul sebagai default dalam opsi SDK dan pengaturan. Panggilan yang memerlukan persetujuan ditolak kecuali Anda menyetujuinya dengan aturan allow, hook, callback canUseTool, atau --permission-prompt-tool.

Agar panggilan ini disetujui, tambahkan aturan allow atau mulai dalam auto mode:

Contoh berikut menunjukkan bentuk auto mode untuk CLI dan setiap SDK:

[tab] CLI

claude -p "Run the test suite and fix any failures" --permission-mode auto

[tab] TypeScript

const options = {
  permissionMode: "auto"
};

[tab] Python

from claude_agent_sdk import ClaudeAgentOptions

options = ClaudeAgentOptions(permission_mode="auto")

Sebelum v2.1.302, eksekusi ini dapat dimulai dalam auto mode jika tidak mengambil feature flag, misalnya pada penyedia pihak ketiga atau dengan DISABLE_TELEMETRY.

Memulai dalam mode izin yang berbeda

Anda dapat menetapkan mode izin awal untuk satu sesi, atau sebagai default untuk setiap sesi di sebuah mesin, dalam sebuah proyek, atau dalam sebuah organisasi. Ketika lebih dari satu file pengaturan menetapkan permissions.defaultMode, prioritas pengaturan yang menentukan, sehingga nilai proyek atau nilai terkelola memiliki prioritas lebih tinggi daripada ~/.claude/settings.json. Untuk mengubah mode izin sesi yang sudah berjalan, lihat Beralih mode izin.

Untuk menetapkan mode izin awal bagi Lakukan ini
Satu sesi yang akan Anda mulai Berikan mode izin sebagai flag, misalnya claude --permission-mode default
Setiap sesi terminal yang Anda mulai di mesin ini Tetapkan permissions.defaultMode di ~/.claude/settings.json. Untuk apa yang dibaca oleh ekstensi VS Code, lihat Beralih mode izin
Setiap sesi terminal yang Anda mulai dalam satu proyek Tetapkan permissions.defaultMode di .claude/settings.json proyek tersebut. Sesi yang Anda mulai di terminal mematuhi setiap nilai kecuali auto dan bypassPermissions; sesi yang dimulai oleh ekstensi VS Code tidak membaca pengaturan proyek untuk mode izin awal
Setiap sesi terminal di organisasi Anda Tetapkan permissions.defaultMode di pengaturan terkelola. Sesi terminal dimulai dalam mode tersebut dan pengguna tetap dapat beralih ke auto mode; untuk apa yang dibaca oleh ekstensi VS Code, lihat Beralih mode izin. Untuk menghapus auto mode sehingga tidak ada yang dapat memilihnya, tetapkan permissions.disableAutoMode ke "disable" sebagai gantinya

Contoh ini membuat setiap sesi terminal di mesin Anda dimulai dalam mode Manual, yang nilai konfigurasinya adalah default. Simpan di ~/.claude/settings.json:

{
  "permissions": {
    "defaultMode": "default"
  }
}

Sesi berikutnya yang Anda mulai menampilkan ⏸ manual mode on di bilah status.

Mode izin dengan konfigurasi HIPAA

Dalam organisasi yang telah menerapkan konfigurasi HIPAA, default auto bawaan tidak berlaku. Sesi terminal atau VS Code dimulai dalam mode Manual ketika tidak ada hal lain yang memilih mode izin awalnya. Sesi terminal juga menampilkan Auto mode isn't the default for your organization · Shift+Tab to switch, dan ekstensi VS Code tidak menampilkan pemberitahuan apa pun. Periksa cara developer masuk dan terhubung mencantumkan sesi yang terkena ketentuan ini.

Auto mode dan bypassPermissions tetap tersedia:

Alihkan mode izin

Setiap antarmuka memiliki kontrol sendiri untuk beralih mode izin selama sesi dan cara sendiri untuk memilih mode izin yang dimulai sesi baru. Pilih antarmuka Anda untuk melihat kontrolnya.

[tab] CLI

Selama sesi: tekan Shift+Tab untuk siklus mode izin. Dari auto, tekan pertama beralih ke default, dan siklus kemudian berjalan default → acceptEdits → plan. Mode opsional masuk setelah plan. Bilah status menunjukkan mode aktif sebagai ⏸ manual mode on abu-abu untuk default, atau sebagai ⏵⏵ accept edits on, ⏸ plan mode on, ⏵⏵ auto mode on, ⏵⏵ don't ask on, atau ⏵⏵ bypass permissions on.

Perhatikan bilah status dalam klip sesi yang dimulai dalam auto mode ini. Setiap kali Anda menekan Shift+Tab, bilah status berubah dari auto mode on ke manual mode on, accept edits on, plan mode on, lalu kembali ke auto mode on.

[tab] VS Code

Selama sesi: klik indikator mode di bagian bawah kotak prompt. Ini menggunakan label ini untuk mode di halaman ini:

Label UI Mode
Manual default
Edit secara otomatis acceptEdits
Plan plan
Auto auto
Bypass permissions bypassPermissions

Sebagai default: untuk menyematkan mode izin yang dimulai percakapan, atur claudeCode.initialPermissionMode dalam pengaturan pengguna VS Code Anda ke default, manual, acceptEdits, plan, atau bypassPermissions. Pengaturan tidak menerima auto; untuk memulai dalam Auto, biarkan tidak diatur dan pilih Auto dari indikator mode sekali, sebagai item 2 di bawah menjelaskan. Ekstensi memulai setiap percakapan baru dalam yang pertama dari ini yang berlaku:

  1. claudeCode.initialPermissionMode
  2. Mode yang terakhir Anda pilih dari indikator mode, jika itu Manual, Edit secara otomatis, atau Auto. Memilih Plan atau Bypass permissions berlaku hanya untuk percakapan itu
  3. permissions.defaultMode dari pengaturan terkelola atau ~/.claude/settings.json
  4. Default bawaan untuk paket, penyedia, dan pengaturan organisasi Anda

Ekstensi tidak pernah membaca .claude/settings.json atau .claude/settings.local.json proyek untuk mode izin awal. Ketika claudeCode.claudeProcessWrapper diatur, item 3 dan 4 tidak berlaku: percakapan itu dimulai dalam Manual kecuali item 1 atau item 2 menetapkan mode izin.

Sebelum v2.1.283, item 3 berlaku hanya pada paket Pro, Max, Ultra, dan Team dalam sesi yang mengambil flag fitur.

Auto muncul di indikator mode ketika mode auto tersedia.

Bypass permissions memerlukan toggle Allow dangerously skip permissions dalam pengaturan ekstensi. Tanpanya, mode izin tidak muncul di indikator, dan nilai bypassPermissions dari item 1 atau item 3 memulai percakapan dalam Manual sebagai gantinya. Auto dari item apa pun demikian pula memulai percakapan dalam Manual ketika mode auto tidak tersedia.

Lihat panduan VS Code untuk detail khusus ekstensi.

[tab] JetBrains

Plugin JetBrains menjalankan Claude Code di terminal IDE, jadi beralih mode izin berfungsi sama seperti di CLI: tekan Shift+Tab untuk bersiklus, atau lewatkan --permission-mode saat meluncurkan.

[tab] Desktop

Selama sesi: di tab Code, gunakan pemilih mode di baris di bawah kotak prompt. Tidak setiap mode muncul di pemilih:

  • Auto: muncul ketika auto mode tersedia
  • Bypass permissions: memerlukan toggle Allow bypass permissions mode dalam pengaturan Desktop pada paket Pro, Max, dan Ultra; pada paket Team dan Enterprise, kebijakan organisasi mengontrolnya sebagai gantinya

Cowork tidak menggunakan mode ini. Cowork memiliki mode izinnya sendiri, diaktifkan secara terpisah, dan tidak menampilkan pemilih mode sama sekali sampai mode di luar defaultnya diaktifkan untuk akun Anda. Lihat dokumen Cowork.

Untuk detail khusus desktop, lihat Pilih mode izin dalam panduan Desktop.

Sebagai default: atur defaultMode dalam pengaturan. Aplikasi desktop membaca file pengaturan yang sama seperti CLI dan menerapkan mode izin ke sesi lokal baru.

Mode yang Anda pilih di pemilih mode dalam sesi lokal diingat per folder dan mengambil alih defaultMode dalam pengaturan .claude/ proyek. Sesi lokal baru masih dapat dimulai dalam defaultMode dari ~/.claude/settings.json atau pengaturan terkelola, jadi periksa pemilih sebelum pesan pertama Anda. Jika Anda memilih Plan, pilihan itu berlaku hanya untuk sesi ini.

Untuk di mana defaultMode ditempatkan dalam file pengaturan, lihat contoh di bawah Mulai dalam mode izin yang berbeda.

[tab] Web dan mobile

Di claude.ai/code, gunakan dropdown mode di baris di bawah kotak prompt. Di aplikasi mobile, ketuk tombol + di kotak prompt, lalu Permission. Sesi cloud dan sesi Remote Control menawarkan mode izin yang berbeda:

  • Sesi cloud: Accept edits, Plan, dan Auto. Accept edits sesuai dengan mode default: sesi cloud pra-menyetujui pengeditan file terlepas dari mode, jadi dropdown menampilkan Accept edits alih-alih Manual. Sesi cloud masih menghormati defaultMode: "acceptEdits" dari pengaturan. Auto mode muncul kecuali organisasi Anda mematikannya, dan di claude.ai/code opsi ini berwarna abu-abu jika model yang dipilih tidak mendukungnya. Bypass permissions tidak tersedia.
  • Sesi Remote Control di mesin lokal Anda: Manual, Accept edits, Plan, dan Auto untuk sesi yang Anda mulai sendiri, dan Anda tidak dapat memilih Bypass permissions dari aplikasi. Untuk menggunakan Auto, sesi harus memenuhi persyaratan ketersediaan auto mode. Untuk thread proyek yang berjalan di komputer Anda, lihat Jalankan thread di komputer Anda sendiri.
    • Kecuali untuk Bypass permissions, dropdown menampilkan mode izin yang sesi lokal gunakan, termasuk yang diatur dari terminal. Itu diperbarui ketika mode izin berubah di aplikasi atau di terminal.
    • Sesi yang dihosting oleh aplikasi desktop atau ekstensi VS Code melaporkan perubahan mode izin ke claude.ai saat terjadi, sama seperti sesi yang dihosting di terminal.

Untuk Remote Control, mesin lokal yang menjalankan sesi harus masuk dengan akun claude.ai Anda; kunci API tidak didukung. Anda juga dapat menetapkan mode izin awal saat meluncurkan sesi lokal itu:

claude remote-control --permission-mode acceptEdits

Auto-approve pengeditan file dengan mode acceptEdits

Mode acceptEdits memungkinkan Claude membuat dan mengedit file di direktori kerja Anda tanpa meminta. Bilah status menunjukkan ⏵⏵ accept edits on saat mode ini aktif.

Selain pengeditan file, mode acceptEdits auto-approve perintah Bash filesystem umum: mkdir, touch, rm, rmdir, mv, cp, dan sed. Kecuali untuk touch, perintah ini juga auto-approved ketika diawali dengan environment variable aman seperti LANG=C atau NO_COLOR=1, atau pembungkus proses seperti timeout, nice, atau nohup. Seperti pengeditan file, auto-approval hanya berlaku untuk jalur di dalam direktori kerja Anda atau additionalDirectories.

Hal-hal berikut masih meminta:

Setiap jalur juga melalui pemeriksaan symlink, jadi penulisan yang diselesaikan di luar cakupan itu tidak auto-approved juga.

Ketika alat PowerShell diaktifkan, mode acceptEdits juga auto-approve Set-Content, Add-Content, Clear-Content, dan Remove-Item pada jalur dalam cakupan, bersama dengan alias umum mereka. Aturan cakupan dan jalur yang dilindungi yang sama berlaku, dan Remove-Item mendapat pemeriksaannya sendiri. Argumen posisional yang berisi karakter kutip, seperti apostrof dalam Set-Content .\notes.txt "It's done", masih meminta bahkan pada jalur dalam cakupan, karena Claude Code tidak dapat secara statis memvalidasi argumen yang pembacaan kutip dan tidak dikutipnya berbeda. Lewatkan konten melalui parameter bernama seperti -Value untuk menghindari prompt.

Gunakan acceptEdits ketika Anda ingin meninjau perubahan di editor Anda atau melalui git diff setelahnya daripada menyetujui setiap pengeditan inline.

Tekan Shift+Tab sekali dari mode Manual untuk memasukkannya, atau mulai dengannya langsung:

claude --permission-mode acceptEdits

Analisis sebelum mengedit dengan plan mode

Plan mode memberi tahu Claude untuk meneliti dan mengusulkan perubahan tanpa menerapkannya. Claude membaca file, menjalankan perintah shell untuk menjelajah, dan menulis rencana, tetapi tidak mengedit kode sumber Anda. Kecuali dalam sesi terminal interaktif dengan bypass permissions tersedia, pengeditan tetap diblokir sampai Anda menyetujui rencana tersebut.

Apa yang terjadi pada perintah shell selama perencanaan bergantung pada sesi, dan kasus pertama berikut yang cocok akan berlaku:

  • Sesi terminal interaktif dengan bypass permissions tersedia: baik pengklasifikasi maupun permintaan izin tidak berlaku untuk perintah perencanaan. Lewati semua pemeriksaan dengan mode bypassPermissions membahas beberapa hal yang masih memunculkan permintaan izin di sana.
  • Auto mode tersedia dan pengaturan useAutoModeDuringPlan aktif, yang merupakan default: pengklasifikasi meninjau perintah shell selain penghapusan jalur kritis alih-alih meminta persetujuan Anda. Perintah yang disetujui dijalankan, dan yang ditolak diblokir.
  • Auto mode tidak tersedia, atau useAutoModeDuringPlan nonaktif: perintah di luar kumpulan read-only bawaan memunculkan permintaan persetujuan, termasuk ketika mode auto-allow sandbox diaktifkan.

Masuk ke plan mode dengan menekan Shift+Tab atau memberi awalan /plan pada satu prompt. Anda juga dapat memulai dalam plan mode dari CLI:

claude --permission-mode plan

Saat tidak ada permintaan persetujuan yang terbuka, tekan Shift+Tab lagi untuk keluar dari plan mode. Pada permintaan persetujuan, tekan Esc terlebih dahulu, karena menekan Shift+Tab di sana akan menyetujui rencana.

Meninjau dan menyetujui rencana

Ketika rencana sudah siap, Claude menyajikannya dan menanyakan cara melanjutkan. Dari permintaan tersebut Anda dapat memilih:

  • Yes, and use auto mode: menyetujui dan memulai dalam auto mode. Jika auto mode tidak tersedia untuk sesi Anda, misalnya karena organisasi Anda menonaktifkannya, opsi ini bertuliskan Yes, auto-accept edits. Jika Anda memulai sesi dengan bypass permissions diaktifkan, opsi ini bertuliskan Yes, and switch to BYPASS PERMISSIONS (no further prompts) for this session sebagai gantinya.
  • Yes, manually approve edits: menyetujui dan meninjau setiap pengeditan satu per satu.
  • No, keep planning: tetap dalam plan mode dan memberi tahu Claude apa yang perlu diubah.

Menyetujui rencana akan keluar dari plan mode dan mengalihkan sesi ke mode izin yang dijelaskan oleh setiap opsi persetujuan, sehingga Claude mulai mengedit. Untuk merencanakan lagi, kembali ke plan mode dengan Shift+Tab, atau beri awalan /plan pada prompt Anda berikutnya.

Tekan Ctrl+G untuk membuka rencana yang diusulkan di editor teks default Anda dan mengeditnya secara langsung sebelum Claude melanjutkan. Ketika showClearContextOnPlanAccept diaktifkan, daftar tersebut mendapatkan opsi pertama yang menyetujui rencana dan menghapus konteks perencanaan.

Menerima rencana juga memberi sesi sebuah judul yang dihasilkan berdasarkan rencana tersebut, kecuali Anda sudah memberi nama sesi.

Menetapkan plan mode sebagai default

Untuk menjadikan plan mode sebagai default untuk sesi terminal suatu proyek, atur defaultMode ke plan di .claude/settings.json, ditempatkan seperti yang ditunjukkan contoh di bagian Memulai dalam mode izin yang berbeda. Percakapan yang dimulai oleh ekstensi VS Code tidak membaca pengaturan proyek untuk mode izin awal. Di sana, atur claudeCode.initialPermissionMode ke plan di pengaturan pengguna VS Code Anda sebagai gantinya.

Menghilangkan permintaan izin dengan auto mode

Auto mode memungkinkan Claude mengeksekusi tanpa permintaan izin rutin. Model pengklasifikasi terpisah meninjau tindakan sebelum dijalankan, memblokir apa pun yang melampaui permintaan Anda, menargetkan infrastruktur yang tidak dikenali, atau tampak didorong oleh konten berbahaya yang dibaca Claude. Aturan ask eksplisit tetap memaksa munculnya permintaan izin.

Dengan Claude Code v2.1.283 atau yang lebih baru, auto mode adalah mode izin awal bawaan untuk sesi terminal interaktif dan VS Code di setiap paket dan penyedia. Pada versi sebelumnya, auto mode menjadi mode izin awal bawaan hanya pada paket Pro, Max, Ultra, dan Team.

Pengklasifikasi juga meninjau setiap pesan yang dikirim Claude ke agent lain dengan SendMessage, baik teks biasa maupun pesan tim agent terstruktur, sebelum Claude Code mengirimkannya, baik dalam auto mode maupun dalam plan mode saat pengklasifikasi meninjau perintah; peninjauan pengiriman ini memerlukan Claude Code v2.1.222 atau yang lebih baru.

Secara default, pengklasifikasi tidak meninjau penghapusan jalur kritis rm dan rmdir yang dikenali, seperti rm -rf / atau rm -rf ~. Jalur kritis menjelaskan apa yang terjadi pada penghapusan tersebut di setiap mode izin.

Auto mode juga mendorong Claude untuk terus bekerja tanpa berhenti untuk mengajukan pertanyaan klarifikasi, meskipun Claude tetap bertanya ketika prompt Anda atau sebuah skill secara eksplisit mengandalkannya. Untuk perilaku otonom yang lebih kuat dalam mode yang tetap meminta izin kepada Anda, atur gaya output Proactive sebagai gantinya.

[!WARNING]

Auto mode mengurangi permintaan izin tetapi tidak menjamin keamanan. Gunakan untuk tugas yang arah umumnya Anda percayai, bukan sebagai pengganti peninjauan pada operasi sensitif.

Auto mode hanya tersedia jika akun Anda memenuhi semua persyaratan berikut:

  • Paket: Semua paket.
  • Organisasi: pada Team dan Enterprise, auto mode tersedia secara default. Administrator dapat menonaktifkannya untuk organisasi dengan mengatur permissions.disableAutoMode ke "disable" di pengaturan terkelola.
  • Model: pada Anthropic API dan Claude Platform on AWS, Claude Opus 4.6 atau yang lebih baru, Sonnet 4.6 atau yang lebih baru, Haiku 5.5, atau model Fable. Pada Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan sesi Claude apps gateway yang sudah masuk, hanya Claude Sonnet 5 atau yang lebih baru, Opus 4.7 atau yang lebih baru, Haiku 5.5, dan model Fable. Model yang lebih lama, termasuk Sonnet 4.5, Opus 4.5, Haiku 4.5, dan model claude-3, tidak didukung di penyedia mana pun.
  • Penyedia: tersedia secara default di Anthropic API, Claude Platform on AWS, Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan sesi Claude apps gateway yang sudah masuk.

Jika Claude Code melaporkan auto mode tidak tersedia, periksa terlebih dahulu persyaratan ini dan apakah ada file pengaturan yang mengatur disableAutoMode. Anthropic mungkin juga telah menonaktifkan auto mode di sisi server, atau server mungkin telah menolak auto mode untuk akun Anda. Sesi yang menerima salah satu jawaban tersebut membiarkan auto mode nonaktif hingga sesi berakhir, jadi mulailah sesi baru nanti.

Pesan terpisah yang menyebutkan sebuah model dan menyatakan bahwa auto mode "cannot determine the safety" dari suatu tindakan berarti permintaan pengklasifikasi gagal. Kegagalan tersebut biasanya bersifat sementara, tetapi di Amazon Bedrock kegagalan itu dapat berulang hingga akun Anda dapat memanggil model yang disebutkan. Lihat referensi error untuk penyebab dan apa yang harus dilakukan.

Jika Anda mengatur defaultMode: "auto" di pengaturan dan sesi terminal dimulai dalam mode Manual tanpa error, kemungkinan pengaturan tersebut berada di .claude/settings.json atau .claude/settings.local.json. auto tidak berlaku dari file-file tersebut. Pindahkan ke ~/.claude/settings.json. Untuk percakapan yang dimulai oleh ekstensi VS Code, periksa daftar milik ekstensi tersebut di Beralih mode izin sebagai gantinya.

Auto mode di Bedrock, Agent Platform, atau Foundry

Di Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan sesi Claude apps gateway yang sudah masuk, auto mode tersedia secara default. Jika Anda tidak mengatur mode izin di sana, sesi interaktif dimulai dalam auto mode, dan eksekusi claude -p atau Agent SDK dimulai dalam mode Manual, yang nilai konfigurasinya adalah default:

  • Sesi terminal interaktif dan VS Code: untuk memulainya dalam mode izin selain auto, atur permissions.defaultMode seperti yang dijelaskan di Mulai dalam mode izin yang berbeda, atau pilih salah satu dari indikator mode ekstensi VS Code. Mode awal sebuah sesi mencantumkan versi Claude Code yang memulainya dalam auto mode.
  • Eksekusi claude -p dan Agent SDK: untuk memulainya dalam auto mode, berikan --permission-mode auto ke claude -p, atau berikan permissionMode: "auto" di TypeScript atau permission_mode="auto" di Python. Jika Anda tidak memberikan mode izin, lihat Panggilan tool ditolak dalam eksekusi claude -p dan Agent SDK, yang juga membahas versi Claude Code sebelumnya.

Hanya Claude Sonnet 5 atau yang lebih baru, Opus 4.7 atau yang lebih baru, Haiku 5.5, dan model Fable yang didukung di penyedia ini. Pada model lain, sesi dimulai dalam mode Manual sebagai gantinya. Auto mode dengan Haiku 5.5 di penyedia ini memerlukan Claude Code v2.1.293 atau yang lebih baru.

Untuk mencegah developer menggunakan auto mode, atur disableAutoMode ke "disable" di pengaturan terkelola. Ini menghapus auto dari siklus Shift+Tab, dan sesi yang dimulai dengan --permission-mode auto dimulai dalam mode Manual sebagai gantinya. Sesi yang sudah berjalan dalam auto mode akan keluar dari mode tersebut ketika pengaturan mencapai sesi itu dari sumber yang di-deploy admin, dan menampilkan auto mode disabled by settings. Sebelum v2.1.251, sesi yang sedang berjalan mempertahankan auto mode hingga sesi berakhir.

Peninjauan pengklasifikasi di sisi server

Dalam auto mode, Claude Code dapat meminta server untuk memeriksa tindakan yang dikirim oleh urutan keputusan untuk ditinjau, sebagai bagian dari permintaan model sesi, alih-alih mengirim permintaan pengklasifikasinya sendiri. Sesi-sesi berikut meminta ke server:

  • Koneksi langsung ke Anthropic API: dalam sesi terminal interaktif dan dalam sesi -p, Agent SDK, ekstensi VS Code, dan aplikasi desktop, apa pun paket atau jenis akun Anda, seiring Anthropic meluncurkannya. Periksa jenis sesi Anda terhadap versi minimum Claude Code berikut:
    • Dalam sesi terminal interaktif, meminta ke server memerlukan Claude Code v2.1.271 atau yang lebih baru pada paket Pro, Max, Ultra, dan Team. Pada paket Enterprise dan akun Claude API, sesi tersebut memerlukan v2.1.278 atau yang lebih baru.
    • Dalam sesi -p dan ekstensi VS Code, meminta ke server memerlukan Claude Code v2.1.278 atau yang lebih baru
    • Dalam sesi Agent SDK dan aplikasi desktop, meminta ke server memerlukan Claude Code v2.1.281 atau yang lebih baru
    • Mulai v2.1.282, sesi yang tidak mengambil feature flag, misalnya karena Anda mematikan telemetri, meminta ke server secara default dalam jenis sesi apa pun
  • Penyedia cloud, atau LLM gateway atau proxy: di Claude Platform on AWS, Amazon Bedrock, Agent Platform Google Cloud, dan Microsoft Foundry, serta setiap kali Anda mengarahkan ANTHROPIC_BASE_URL ke LLM gateway atau proxy, apa pun paket Anda. Meminta secara default memerlukan Claude Code v2.1.278 atau yang lebih baru.
  • Sesi Claude apps gateway yang sudah masuk: memerlukan Claude Code v2.1.280 atau yang lebih baru
  • Sesi cloud di lingkungan yang di-host Anthropic: apa pun paket Anda, ketika Anda memulainya dari web, aplikasi seluler, atau aplikasi desktop dengan Cloud dipilih. Sesi yang dimulai oleh tugas terjadwal cloud meminta ke server seiring Anthropic meluncurkannya.

Jika server meninjau tindakan, putusan server yang menentukannya. Dua hasil lain mungkin terjadi:

  • Server tidak meninjau sesi: sebuah respons selesai tanpa hasil peninjauan, atau server menjawab bahwa ia tidak meninjau sesi ini. Penyebab paling umum adalah LLM gateway atau proxy yang membuang permintaan peninjauan atau hasilnya, serta platform, wilayah, atau kredensial yang belum memiliki pemeriksaan di sisi server. Claude Code melakukan fallback ke permintaan pengklasifikasinya sendiri. Setelah fallback tersebut berlaku untuk sisa sesi, Claude Code menampilkan pemberitahuan tentang biaya permintaan pengklasifikasi pada akun yang permintaan tersebut ditagihkan.

  • Server tidak memberikan putusan untuk suatu tindakan: Claude Code menolak tindakan tersebut alih-alih menjalankannya tanpa ditinjau. Pada koneksi apa pun, hal ini terjadi ketika respons berakhir sebelum hasil peninjauan tiba atau hasilnya tiba dalam bentuk yang tidak dapat dibaca Claude Code. LLM gateway atau proxy yang memotong respons atau menulis ulang hasilnya dapat menyebabkan keduanya. Pada koneksi langsung ke Anthropic API, hal ini juga terjadi ketika pemeriksaan server gagal untuk tindakan tersebut, misalnya karena timeout. Server tidak mengembalikan putusan keamanan membahas pesan penolakan, apa yang terjadi ketika penolakan berulang, dan apa yang harus dilakukan.

    Jika sebuah hook atau mod mengubah input suatu tindakan setelah peninjauan server, Claude Code dapat menolak tindakan tersebut tanpa putusan. Dalam sesi terminal interaktif dan VS Code pada koneksi langsung ke Anthropic API, teks penolakan tersebut menyertakan a hook changed this call's input after auto mode reviewed it. Entri error-nya membahas apa yang harus dilakukan.

Untuk melewati permintaan ke server dan selalu menggunakan permintaan pengklasifikasi milik Claude Code sendiri, atur CLAUDE_CODE_AUTO_MODE_SERVER=0. Pada koneksi langsung ke Anthropic API, variabel ini memerlukan Claude Code v2.1.281 atau yang lebih baru. Mengaturnya ke 1 di sana mengaktifkan peninjauan server dalam sesi yang belum memilikinya, kecuali jika Anda juga telah mengatur CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1. Jika Anda mengatur CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 dan membiarkan CLAUDE_CODE_AUTO_MODE_SERVER tidak diatur, Claude Code juga berhenti meminta ke server, kecuali sebagaimana dijelaskan di Nonaktifkan kemampuan pra-rilis.

Model pengklasifikasi default

Secara default, permintaan pengklasifikasi dikirim ke Claude Sonnet 5. Jika /status menampilkan Auto mode server sebagai Enabled, permintaan tersebut hanya dikirim untuk panggilan di luar peninjauan server.

Temukan baris pertama dalam tabel ini yang cocok dengan sesi Anda. Anda mendapatkan model pada baris tersebut sebagai pengganti Sonnet 5.

Sesi Anda Model pengklasifikasi
Memiliki model pengklasifikasi yang dikonfigurasi Anthropic Model yang dikonfigurasi. Periksa log debug untuk melihat yang mana
Berjalan di Claude Sonnet 4.6 Sonnet 4.6
Mengatur ANTHROPIC_DEFAULT_SONNET_MODEL Nilainya, atau Sonnet 5 jika nilainya adalah Claude Sonnet 5.5 atau Claude Opus 5.5

Jika Sonnet 5 atau model di ANTHROPIC_DEFAULT_SONNET_MODEL tidak tersedia dari penyedia Anda atau dikecualikan oleh kebijakan model organisasi Anda, Claude Code menggunakan model fallback. Model tersebut adalah model sesi Anda, atau model Opus dalam sesi Fable.

Memilih model pengklasifikasi

Dengan Claude Code v2.1.302 atau yang lebih baru, atur CLAUDE_CODE_AUTO_MODE_MODEL ke ID model lengkap untuk menjalankan pengklasifikasi pada model selain model default. ID model lengkap milik penyedia cloud Anda sendiri juga berfungsi. Contoh ~/.claude/settings.json ini mengatur Claude Sonnet 4.6:

{
  "env": {
    "CLAUDE_CODE_AUTO_MODE_MODEL": "claude-sonnet-4-6"
  }
}

Ketika model Anda tidak meninjau

Situasi Apa yang terjadi Apa yang perlu dilakukan
Log debug melaporkan model pengklasifikasi yang dikonfigurasi Anthropic Model tersebut yang meninjau Tidak ada yang perlu dilakukan
Anda mengatur Claude Opus 5, Sonnet 5.5, Opus 5.5, atau model yang dikecualikan oleh kebijakan model organisasi Anda Model pengklasifikasi default yang meninjau Atur model lain
Penyedia Anda tidak dapat melayani model tersebut Pemeriksaan pengklasifikasi gagal, sehingga Claude Code menolak setiap tindakan yang diperiksanya Atur model yang dilayaninya, atau hapus variabel tersebut
Dalam sesi, /status menampilkan Auto mode server sebagai Enabled Server meninjau tanpa model Anda Tidak ada yang perlu dilakukan

Jika beberapa situasi berlaku, ikuti yang tercantum pertama.

Memeriksa model yang digunakan pengklasifikasi

Dari shell Anda, mulai sesi auto mode dengan --debug-file:

claude --permission-mode auto --debug-file classifier-debug.log

Untuk memberi pengklasifikasi sebuah perintah untuk ditinjau, minta Claude menjalankan curl https://example.com, lalu cari classifier_request_started di log:

  • Model Anda setelah model=: variabel tersebut berlaku
  • Model lain setelah model=: cari ignoring CLAUDE_CODE_AUTO_MODE_MODEL di log, yang memberikan alasan dan langkah apa pun yang perlu diambil
  • Tidak ada baris seperti itu: baca Auto mode server di /status pada prompt Claude Code:
    • Enabled: server diatur untuk meninjau panggilan sesi ini.
    • Disabled: pemeriksaan ini belum menguji model Anda. Pastikan mode izin adalah auto dan tidak ada aturan izin yang cocok dengan curl, lalu jalankan pemeriksaan lagi dengan sandbox dinonaktifkan.

Apa yang diblokir pengklasifikasi secara default

Pengklasifikasi memercayai direktori kerja Anda dan remote yang dikonfigurasi untuknya saat sesi dimulai. Remote yang ditambahkan atau diarahkan ulang selama sesi dengan git remote add atau git remote set-url tidak dipercaya, dan semua hal lainnya diperlakukan sebagai eksternal hingga Anda mengonfigurasi infrastruktur tepercaya.

Diblokir secara default:

  • Mengunduh dan mengeksekusi kode, seperti curl | bash

  • Mengirim data sensitif ke endpoint eksternal

  • Deploy dan migrasi produksi

  • Penghapusan massal pada penyimpanan cloud

  • Memberikan izin IAM atau repo

  • Memodifikasi infrastruktur bersama

  • Menghancurkan secara permanen file yang sudah ada sebelum sesi

  • Force push

  • Melakukan commit atau push atas perubahan yang, saat dijalankan, akan mengirim rahasia atau data sensitif ke luar repositori, atau memperluas apa yang diekspos oleh deploy. Ini mencakup workflow CI atau konfigurasi deploy yang meneruskan rahasia ke tujuan yang belum menerimanya, skrip atau langkah penyiapan yang membaca penyimpanan rahasia dan mengirim datanya keluar, serta perubahan konfigurasi yang memperluas apa yang dipublikasikan oleh deploy, seperti pengaturan registry, visibilitas, artifact, atau sourcemap. Pemeriksaan ini berlaku di branch mana pun, berlaku bahkan ketika repositori bersifat publik, dan terpicu ketika perubahan di-commit atau di-push, terlepas dari apakah commit atau push tersebut memicu pipeline; untuk melewatinya, efek eksekusi harus disebutkan, bukan hanya commit atau push-nya

  • git reset --hard, git checkout -- ., git restore ., git clean -fd, git stash drop, atau git stash clear, yang dianggap pengklasifikasi akan membuang perubahan yang belum di-commit

  • git commit --amend ketika commit di HEAD tidak dibuat dalam sesi ini

  • Mulai v2.1.198, git commit --amend ketika commit di HEAD sudah di-push. Perubahan kata-kata yang hanya menyangkut pesan tidak diblokir: --amend -m tanpa ada yang baru di-stage, pada commit yang dibuat Claude selama sesi ini

  • terraform destroy, pulumi destroy, cdk destroy, atau terragrunt destroy, serta menerapkan plan yang menghancurkan resource

  • Menulis ke secret manager, atau mengubah record DNS atau sertifikat TLS

  • Melakukan merge atas pull request yang belum disetujui oleh manusia, menyetujui pull request milik Claude sendiri, atau menonaktifkan pemeriksaan CI

  • Memposting komentar yang merupakan perintah untuk otomatisasi, seperti atlantis apply atau /deploy atau /merge milik bot

  • Mengaktifkan/menonaktifkan, menaikkan bertahap, atau menghapus feature flag produksi

  • Menerapkan perubahan infrastruktur ke cakupan IaC yang dilindungi, atau mengosongkan dan menghapus node cluster

  • Penulisan ke cluster komputasi bersama yang menjangkau melampaui resource yang Anda sebutkan, seperti label selector atau --all yang ikut mengenai job milik pengguna lain

  • Membuat resource Kubernetes yang berjalan di setiap node atau mencegat lalu lintas cluster, seperti DaemonSet dan admission webhook

  • Shell interaktif atau port-forward ke target jarak jauh yang sensitif

  • Membuka tunnel atau reverse shell yang membuat layanan lokal dapat dijangkau dari internet publik

  • Mencetak kredensial atau token aktif ke dalam transkrip atau file

  • Mengakses lokasi yang tercantum sebagai lokasi data sensitif di environment Anda, menyalin data keluar dari lokasi tersebut, atau mengirim data dari lokasi tersebut ke audiens yang dikecualikan oleh entri tersebut

  • Mengalihkan instalasi paket dari registry paket internal Anda ke registry publik. Ini berlaku ketika registry atau mirror internal tercantum di environment Anda atau ketika Anda telah memberi tahu Claude dalam percakapan bahwa registry tersebut ada

  • Menjalankan perintah dengan flag yang melumpuhkan pengaman keselamatan, seperti --insecure

  • Meluncurkan loop agent otonom yang berjalan tanpa persetujuan manusia atau sandbox, seperti yang dimulai dengan --dangerously-skip-permissions atau --no-sandbox. Ini termasuk menjalankan agent pihak ketiga atau eval harness dengan isolasi dan persetujuan per tindakan dinonaktifkan, seperti runner yang dimulai dengan --yes-always

  • Tindakan browser Claude in Chrome yang dapat mengirim konten halaman, cookie, atau kredensial ke luar origin

  • Menghapus file di /tmp, $TMPDIR, atau direktori scratch atau cache bersama lainnya menggunakan wildcard, glob, atau filter usia alih-alih menggunakan jalur spesifik yang disebutkan namanya

  • Menyertakan detail sensitif dalam konten yang dikirim, diunggah, dipublikasikan, atau ditulis kepada orang lain atau sistem bersama, ketika pesan Anda sendiri tidak mengizinkan detail tersebut untuk penerima itu. Isi PR dan issue, pesan commit, dan komentar dihitung sebagai konten keluar semacam ini ketika repositori berada di luar batas kepercayaan atau bersifat publik, termasuk repositori publik milik organisasi Anda sendiri; jalur file internal, nama kode, data respons API aktif seperti email atau pengidentifikasi akun, dan pengidentifikasi infrastruktur dihitung sebagai detail sensitif. Data pribadi aktif dari respons API dalam isi PR atau issue, seperti alamat email, pengidentifikasi akun atau organisasi, atau metrik penggunaan, mengharuskan Anda menyebutkan detail tersebut dan penerimanya terlepas dari visibilitas atau batas kepercayaan repositori

  • Mengirim penekanan tombol ke panel tmux milik Claude Code sendiri untuk mengendalikan antarmukanya sendiri, yang diperlakukan pengklasifikasi sebagai Claude mengubah izin atau pengawasannya sendiri

  • Mengomentari, menghapus, atau memaksa lolos sebuah tes atau assertion yang menjaga perilaku keamanan, seperti autentikasi, kontrol akses, validasi input, atau sandboxing

  • Menghapus atau membongkar resource stateful yang tidak dibuat Claude dalam sesi, ketika tidak ada aturan penghapusan yang lebih spesifik yang berlaku dan Anda tidak menyebutkan resource tersebut

  • Mengarahkan ulang URL dasar API, endpoint proxy, penerima webhook, atau mirror registry ke host pihak ketiga yang tidak sesuai dengan tugas, termasuk di file contoh seperti .env.example

  • Mengubah tujuan push dengan git remote set-url atau git remote add, kecuali jika Anda menyebutkan remote baru tersebut

  • Melakukan push atas rahasia atau data pribadi maupun data titipan ke repositori yang diketahui bersifat publik, atau melakukan push atas materi rahasia ke sana yang bukan bagian dari pekerjaan repositori itu sendiri. Pokok bahasan repositori dotfiles itu sendiri adalah satu-satunya pengecualian untuk data pribadi atau data titipan, dan konten dari repositori privat yang mencapai surface publik mana pun diblokir dengan cara yang sama. Ketika visibilitas repositori belum dapat dipastikan, pengklasifikasi tidak memblokir hanya berdasarkan hal itu; pengklasifikasi menilai konten terhadap aturan lainnya sebagai gantinya

  • Membuka pull request ke repositori atau organisasi yang berbeda, melakukan fork dengan gh repo fork, atau melakukan push ke repositori pihak ketiga, kecuali jika Anda menyebutkan target eksternal tersebut

  • Konten dari penyimpanan lokal yang sensitif, atau dari file yang nama, jalur, atau jenisnya menandakannya sebagai sensitif, masuk ke dalam commit, push, teks PR atau issue, gist atau paste, atau publikasi paket, kecuali jika Anda menyebutkan sumber dan tujuannya. Transkrip sesi dan log percakapan, folder titik kredensial dan konfigurasi seperti kunci SSH, kredensial cloud, profil browser, dan riwayat shell, serta ekspor data pengguna semuanya dihitung, dan repositori yang bersifat privat tidak membebaskannya

  • Menulis ke transkrip sesi Claude Code, yaitu file riwayat .jsonl di bawah ~/.claude/projects/ atau direktori konfigurasi yang Anda konfigurasikan, baik secara langsung maupun melalui perintah shell. Aturan ini juga mencakup baris metadata yang ditambahkan Claude Code ke setiap entri transkrip untuk pemeriksaannya sendiri. Membaca transkrip tidak diblokir

  • Penghapusan paksa rekursif seperti rm -rf "$VAR" atau Remove-Item -Recurse -Force $dir yang targetnya adalah variabel shell yang tidak ditetapkan dalam percakapan yang dilihat pengklasifikasi, atau glob yang berakar pada variabel semacam itu. Tanpa penetapan tersebut, pengklasifikasi tidak dapat mengetahui apa yang akan dihapus oleh perintah tersebut.

    Pemblokiran dilewati ketika Anda menyebutkan jalur persis yang dihapus, atau ketika Claude menjalankan ulang penghapusan dengan jalur literal yang sudah di-resolve tertulis di dalam perintah. Penghapusan yang targetnya dapat di-resolve oleh pengklasifikasi tidak terpengaruh.

    Glob langsung di bawah variabel, seperti dalam rm -rf "$VAR"/*, merupakan jalur kritis sebagai gantinya. Untuk target Remove-Item yang berupa * saja atau diakhiri dengan /* atau \*, lihat Remove-Item di PowerShell: Claude Code langsung menolak perintah tersebut.

Beberapa kategori ini bergantung pada entri environment, seperti target jarak jauh yang sensitif dan cakupan IaC yang dilindungi, yang dapat Anda persempit menjadi nama-nama konkret.

Claude Code v2.1.257 dan yang lebih baru juga memblokir hal-hal berikut secara default:

  • Meminta kredensial dari endpoint metadata instance cloud, seperti 169.254.169.254, atau secara eksplisit mengautentikasi panggilan cloud, cluster, atau registry dengan identitas service account atau node milik mesin itu sendiri
  • Menjangkau host publik melalui rute selain permintaan langsung, seperti tunnel, reverse shell, atau konfigurasi resolver atau proxy yang ditulis ulang untuk mengarah ke luar
  • Membaca kredensial yang dimiliki host dan bukan milik tugas Anda, seperti sertifikat node atau autentikasi container registry milik node
  • Menghubungkan ke atau memindai container, pod, atau VM sejawat yang tidak dimulai oleh Claude, atau node di bawah container

Jika Claude Code berjalan di tempat yang dimaksudkan untuk mengizinkan salah satu dari hal ini, jelaskan penyiapan tersebut dalam entri Host containment di autoMode.environment.

Claude Code v2.1.261 dan yang lebih baru juga memblokir hal-hal berikut secara default:

  • Memposting atau menulis tautan ke layanan paste, diagram, atau berbagi data publik dalam pesan, teks PR atau issue, dokumen, atau di mana pun tautan tersebut akan dibuka atau diambil, ketika URL itu sendiri membawa konten yang dibagikan, kecuali jika Anda menyebutkan layanan tersebut

Diizinkan secara default:

  • Operasi file lokal di direktori kerja Anda

  • Menginstal dependensi yang dideklarasikan di lock file atau manifest Anda

  • Membaca .env dan mengirim kredensial ke API yang sesuai

  • Permintaan HTTP read-only

  • Melakukan push ke branch mana pun dari repositori tempat Anda bekerja, termasuk branch default. Branch non-default yang namanya menandakannya sebagai target deploy atau publikasi, seperti production atau gh-pages, tidak tercakup: pengklasifikasi menilai push ke sana berdasarkan ketentuannya sendiri.

    Konten push tetap diperiksa terhadap aturan lain pengklasifikasi, dan aturan permissions.deny tetap dapat memblokir perintah push sebagaimana ditulis di setiap mode. Proteksi branch milik remote itu sendiri tetap berlaku.

  • Menghapus job persis yang dibuat Claude sebelumnya dalam sesi yang sama

  • Membaca, meninjau, atau menulis kode, konfigurasi, dan threat model yang terkait keamanan sebagai bagian dari tugas Anda

  • Pesan antar agent yang bekerja bersama dalam sesi multi-agent yang sama

  • Mengirim data ke domain, bucket, dan layanan tepercaya yang Anda cantumkan di environment. Ini hanya mencakup aliran data, bukan operasi destruktif atau operasi kredensial pada infrastruktur yang sama

  • Navigasi Claude in Chrome ke domain internal tepercaya, localhost, atau URL yang Anda sebutkan

Perintah yang di-sandbox tidak mendapatkan akses jaringan secara default. Claude menyebutkan host yang dibutuhkan sebuah perintah pada perintah itu sendiri, pengklasifikasi meninjaunya bersama perintah tersebut, dan daftar yang disetujui membuka host tersebut hanya untuk satu perintah itu saja. Domain yang diizinkan per perintah membahas apa yang dapat dan tidak dapat dibuka oleh sebuah daftar dan apa yang terjadi ketika sebuah perintah mencoba menjangkau host yang tidak tercantum.

Jalankan claude auto-mode defaults untuk mencetak daftar aturan lengkap sebagai JSON. Jika tindakan rutin terblokir, administrator dapat menambahkan repo, bucket, dan layanan tepercaya melalui pengaturan autoMode.environment: lihat Konfigurasi auto mode.

Melakukan push ke branch mana pun dari repositori tempat Anda bekerja dan membuat pull request yang sesuai dengan permintaan Anda berjalan tanpa permintaan izin, kecuali jika push atau pull request tersebut termasuk dalam daftar yang diblokir, seperti rahasia atau data sensitif yang keluar dari repositori, atau pull request yang menargetkan repositori atau organisasi yang berbeda. Untuk mewajibkan checkpoint manusia sebelum perintah-perintah ini sambil tetap berada dalam auto mode, tambahkan aturan permissions.ask, yang mencocokkan perintah sebagaimana ditulis: lihat Batasan umum.

Pembacaan pertama di luar direktori kerja

Selama permissions.blockReadsOutsideWorkingDirectories nonaktif, pembacaan file selain pembacaan dari jalur jaringan berjalan tanpa permintaan izin dalam auto mode, termasuk pembacaan di luar direktori kerja. Pertama kali Claude menggunakan tool Read, Grep, atau Glob pada jalur di luar direktori tersebut, Claude Code menanyakan apakah pembacaan itu diizinkan.

Permintaan izin ini tidak muncul dalam eksekusi non-interaktif -p atau sesi latar belakang; pembacaan di sana berjalan seperti sebelumnya.

Apa pun jawaban Anda, Claude tetap bekerja:

  • Yes, and keep allowing any reads outside the working directories: pembacaan dijalankan, pembacaan berikutnya di luar direktori kerja berjalan seperti sebelumnya, dan Claude Code mencatat jawaban Anda sehingga permintaan izin tidak muncul lagi
  • No, and block reads outside the working directories from now on: pembacaan ditolak, dan Claude Code mengatur permissions.blockReadsOutsideWorkingDirectories ke true di pengaturan pengguna Anda, yang membuat tool file menolak pembacaan semacam itu dalam sesi ini dan setiap sesi berikutnya serta setiap mode izin. Untuk mencabut pemblokiran, hapus pengaturan tersebut dari setiap file pengaturan yang mengaturnya, lalu mulai ulang setiap sesi yang sedang berjalan. Untuk satu direktori dalam sesi ini, gunakan /add-dir.
  • No, and ask again next time: pembacaan ditolak, dan pembacaan berikutnya di luar direktori kerja akan meminta izin lagi
  • Yes, but ask again next time: pembacaan dijalankan, tidak ada yang disimpan, dan pembacaan berikutnya di luar direktori kerja akan meminta izin lagi

Batasan yang Anda nyatakan dalam percakapan

Pengklasifikasi memperlakukan batasan yang Anda nyatakan dalam percakapan sebagai sinyal pemblokiran. Jika Anda memberi tahu Claude "jangan push" atau "tunggu sampai saya meninjau sebelum melakukan deploy", pengklasifikasi memblokir tindakan yang cocok bahkan ketika aturan default akan mengizinkannya. Sebuah batasan tetap berlaku hingga Anda mencabutnya dalam pesan berikutnya. Penilaian Claude sendiri bahwa suatu kondisi telah terpenuhi tidak mencabutnya.

Batasan tidak disimpan sebagai aturan. Pengklasifikasi membacanya ulang dari transkrip pada setiap pemeriksaan, sehingga sebuah batasan dapat hilang jika context compaction menghapus pesan yang menyatakannya. Untuk jaminan yang pasti, tambahkan aturan deny sebagai gantinya.

Persetujuan yang Anda nyatakan dalam percakapan

Jika Anda memberi tahu Claude bahwa suatu tindakan yang diblokir diizinkan, pengklasifikasi membacanya sebagai persetujuan Anda dan dapat mencabut pemblokiran. Cara Anda menyusun kata-katanya menentukan apakah tindakan tersebut dijalankan, dan seberapa jauh persetujuan itu menjangkau:

  • Sebutkan tindakan dan detail spesifiknya: pesan Anda harus menyebutkan tindakan dan hal spesifik yang membuatnya berbahaya, seperti branch dari sebuah force push. Menyebutkan kata kerjanya saja tidak mencabut apa pun, jadi "kamu boleh force-push" membiarkan pemblokiran tetap berlaku.
  • Anggap persetujuan itu mencakup satu tindakan: persetujuan mencakup tindakan destruktif yang Anda sebutkan, sehingga tindakan berikutnya diblokir lagi kecuali jika Anda memberikan persetujuan tersebut sebagai persetujuan tetap. Agar tidak perlu menyetujui pola rutin satu tindakan demi satu tindakan, tambahkan pola tersebut ke autoMode.allow.
  • Beberapa pemblokiran tetap berlaku: urutan prioritas pengklasifikasi menetapkan pemblokiran mana yang dapat dijangkau oleh persetujuan Anda. Untuk menjalankan langkah yang tidak akan dicabut pemblokirannya, keluar dari auto mode dan jawab permintaan izin.

Ketika auto mode melakukan fallback

Ketika auto mode tidak dapat menyetujui tindakan sesi Anda, apa yang terjadi bergantung pada kasusnya:

  • Tindakan yang diblokir: Claude Code menampilkan notifikasi dan mencantumkan tindakan tersebut di /permissions pada tab Recently blocked, tempat Anda dapat menyetujui tindakan tersebut agar Claude dapat mencoba ulang.
  • Pemblokiran berulang: jika pengklasifikasi memblokir tindakan 3 kali berturut-turut atau total 20 kali, auto mode dijeda dan Claude Code kembali meminta izin. Menyetujui tindakan yang dimintakan izin akan melanjutkan auto mode. Lihat Ambang batas pemblokiran berulang untuk cara pemblokiran dihitung.
  • Tidak ada putusan dari pengklasifikasi: ketika pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan pengklasifikasi itu sendiri, atau respons pengklasifikasi tidak dapat di-parse, Claude Code memblokir tindakan tanpa notifikasi atau entri Recently blocked. Lihat Auto mode tidak dapat menentukan keamanan suatu tindakan untuk pesan yang ditampilkan setiap kasus dan apa yang harus dilakukan.
  • Tidak ada putusan dari server: dalam peninjauan pengklasifikasi di sisi server, Claude Code menolak tindakan yang tidak diberi putusan oleh server, dan dapat menghentikan giliran setelah sepuluh respons berturut-turut tanpa putusan. Lihat Server tidak mengembalikan putusan keamanan.
  • Pergantian mode selama pemeriksaan: jika Anda berganti mode izin saat pemeriksaan pengklasifikasi masih tertunda, Claude Code membuang putusan yang tidak akan diminta oleh mode baru. Anda akan dimintai persetujuan sebagai gantinya, atau tindakan tersebut otomatis ditolak dalam mode dontAsk.

Ambang batas pemblokiran berulang

Ambang batas 3 pemblokiran berturut-turut dan total 20 pemblokiran tidak dapat dikonfigurasi. Penghitung total bertahan selama sesi dan hanya di-reset ketika batasnya sendiri memicu fallback. Claude Code tidak menghitung penolakan ke dalam ambang batas mana pun ketika pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan pengklasifikasi itu sendiri.

Eksekusi -p non-interaktif tanpa --permission-prompt-tool tidak memiliki permintaan izin sebagai fallback. Ketika pemblokiran berulang mencapai ambang batas, tindakan tidak dijalankan dan Claude tetap bekerja. Claude Code tidak menghentikan eksekusi.

Pemblokiran berulang biasanya berarti pengklasifikasi kekurangan konteks tentang infrastruktur Anda. Gunakan /feedback untuk melaporkan false positive, atau minta administrator untuk mengonfigurasi infrastruktur tepercaya.

Cara auto mode mengevaluasi tindakan

Bagian berikut membahas urutan Claude Code mengevaluasi suatu tindakan, cara pengklasifikasi meninjau pekerjaan subagent, dan tambahan biaya serta latensi dari panggilan pengklasifikasi.

[accordion] Cara pengklasifikasi mengevaluasi tindakan

Setiap tindakan melewati urutan keputusan yang tetap. Langkah pertama yang cocok yang menentukan:

  1. Tindakan yang cocok dengan aturan allow, ask, atau deny Anda langsung diputuskan, dengan pengecualian berikut:
    • Penulisan ke jalur yang dilindungi diarahkan ke pengklasifikasi bahkan ketika aturan allow cocok. Ketika jalur yang dilindungi adalah file yang dituju oleh file pengaturan yang berupa symlink, penulisan tersebut dapat meminta izin kepada Anda sebagai gantinya, sebagaimana dijelaskan dalam daftar jalur yang dilindungi
    • Tidak ada aturan allow yang menyetujui penghapusan jalur kritis rm dan rmdir yang dikenali
    • Tool MCP yang ditandai requiresUserInteraction langsung meminta izin kepada Anda bahkan ketika aturan allow cocok, demikian pula tool konektor yang diatur organisasi Anda ke ask dalam sesi tempat pengaturan tersebut mencapai Claude Code
    • Perintah shell yang membawa domain yang diizinkan per perintah juga diarahkan ke pengklasifikasi bahkan ketika aturan allow cocok, karena aturan menyetujui perintahnya, bukan host-nya
    • Aturan ask yang mencocokkan konten perintah, seperti Bash(git push *), melakukan fallback ke permintaan izin
    • Penulisan yang oleh pemeriksaan symlink di-resolve ke jalur yang dilindungi akan meminta izin kepada Anda ketika jalur yang diminta Claude itu sendiri tidak dilindungi
    • Pembacaan dari jalur jaringan meminta izin kepada Anda bahkan ketika aturan allow cocok
  2. Tindakan read-only dan pengeditan file di direktori kerja Anda disetujui secara otomatis, kecuali penulisan ke jalur yang dilindungi dan pembacaan pertama di luar direktori kerja, yang meminta izin kepada Anda
  3. Semua hal lainnya diteruskan ke pengklasifikasi, kecuali penghapusan jalur kritis di bawah penanganan default-nya. Tool konektor dan tool MCP requiresUserInteraction yang langsung meminta izin kepada Anda pada langkah 1 juga tidak pernah mencapai pengklasifikasi, sehingga baik persetujuan yang diwajibkan organisasi maupun langkah persetujuan tidak disetujui secara otomatis
  4. Jika pengklasifikasi memblokir, Claude menerima alasannya. Di sebagian besar sesi, alasan tersebut menyebutkan aturan yang dicocokkan pengklasifikasi, seperti [Data Exfiltration], alih-alih memberikan penjelasan tertulis; lihat Tinjau penolakan

Mod yang Anda instal dan yang menangani tool.check juga dapat menyetujui suatu tindakan. Untuk kasus ketika persetujuannya tidak melewati aturan dan hook Anda, lihat Perluas izin dengan hook.

Untuk cara tindakan browser Claude in Chrome disetujui di ekstensi VS Code, lihat Permintaan izin dalam sesi VS Code.

Saat memasuki auto mode, aturan allow luas yang memberikan eksekusi kode arbitrer akan dihapus:

  • Bash(*) atau PowerShell(*) menyeluruh
  • Interpreter dengan wildcard seperti Bash(python*)
  • Perintah run milik package manager
  • Aturan allow Agent
  • Aturan allow Monitor, karena Claude Code menjalankan perintah Monitor melalui shell

Aturan sempit seperti Bash(npm test) tetap berlaku. Claude Code memulihkan aturan yang dihapus ketika Anda keluar dari auto mode. Sebelum v2.1.236, Claude Code membiarkan aturan allow Monitor tetap berlaku dalam auto mode, sehingga aturan yang mencocokkan seluruh tool menyetujui perintah Monitor tanpa peninjauan pengklasifikasi.

Claude Code juga menjalankan git status sendiri sebelum perintah yang akan membuang pekerjaan yang belum di-commit, seperti git reset --hard atau rm -rf, dan menunjukkan kepada pengklasifikasi apakah ada pekerjaan yang di-stage, dimodifikasi, atau belum dilacak. Claude Code melaporkan file yang belum dilacak dalam pemeriksaan tersebut bahkan ketika konfigurasi git repositori mengatur status.showUntrackedFiles=no.

Dalam permintaan pengklasifikasi yang dikirim oleh Claude Code sendiri, pengklasifikasi melihat pesan pengguna, panggilan tool selain pencarian read-only seperti pembacaan file dan pencarian, serta konten CLAUDE.md Anda. Hasil tool dihapus dari permintaan tersebut, sehingga konten berbahaya dalam file atau halaman web tidak dapat memanipulasi pengklasifikasi secara langsung.

Anda dapat memberi anotasi pada hasil panggilan dengan field classifierContext milik hook PostToolUse, yang dibaca pengklasifikasi sebagai konteks yang disediakan aplikasi. Field ini memerlukan Claude Code v2.1.236 atau yang lebih baru.

Probe terpisah di sisi server memindai hasil tool yang masuk dan menandai konten yang mencurigakan sebelum Claude membacanya. Untuk informasi lebih lanjut tentang cara lapisan-lapisan ini bekerja bersama, lihat pengumuman auto mode dan pembahasan mendalam engineering.

[accordion] Cara auto mode menangani subagent

Pengklasifikasi memeriksa pekerjaan subagent pada tiga titik:

  1. Sebelum subagent dimulai, deskripsi tugas yang didelegasikan dievaluasi, sehingga tugas yang tampak berbahaya diblokir saat pembuatan.
  2. Saat subagent berjalan, setiap tindakannya melewati urutan keputusan yang sama seperti di sesi induk, dengan aturan blokir dan izin yang sama. permissionMode apa pun di frontmatter subagent diabaikan.
  3. Ketika subagent selesai, pengklasifikasi meninjau pekerjaan dan laporan akhirnya sebelum induk membaca laporan tersebut. Ketika pengklasifikasi menandai pekerjaan atau laporan subagent, atau pemeriksaan keamanan API yang terpisah menolak peninjauan, laporan tetap dikirimkan, dengan peringatan keamanan di awalnya. Ketika pengklasifikasi tidak tersedia untuk peninjauan, laporan tiba dengan catatan untuk memverifikasi pekerjaan subagent sebelum menindaklanjutinya.

[accordion] Biaya dan latensi

Permintaan pengklasifikasi Claude Code dapat berjalan pada model selain pilihan /model Anda. Lihat model yang digunakannya.

Pada paket Enterprise dan pada akun yang menggunakan Claude API, Claude Platform on AWS, Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry, panggilan pengklasifikasi dihitung dalam penggunaan token Anda. Setiap pemeriksaan mengirimkan sebagian transkrip beserta tindakan yang tertunda, menambahkan satu round-trip sebelum eksekusi. Pembacaan dan pengeditan di direktori kerja di luar jalur yang dilindungi melewati pengklasifikasi, sehingga overhead terutama berasal dari perintah shell dan operasi jaringan. Jika server meninjau tindakan sebagai bagian dari permintaan model sesi, tidak ada panggilan pengklasifikasi terpisah yang dihitung; lihat Peninjauan pengklasifikasi di sisi server.

Akses jaringan yang di-sandbox tidak menambahkan permintaan pengklasifikasi per koneksi. Pengklasifikasi menilai host yang disebutkan sebuah perintah bersama dengan perintah tersebut dalam satu peninjauan, dan Claude Code memeriksa setiap koneksi terhadap daftar yang disetujui tanpa memanggil pengklasifikasi lagi.

Izinkan hanya alat yang telah disetujui sebelumnya dengan mode dontAsk

Jika Anda menetapkan mode dontAsk, Claude Code secara otomatis menolak setiap panggilan tool yang jika tidak demikian akan meminta persetujuan Anda, meskipun mod yang Anda instal masih dapat menyetujui sebagian panggilan tersebut. Untuk memeriksa panggilan mana yang dapat disetujui oleh mod, lihat Perluas izin dengan hook.

Claude masih menjalankan tindakan yang tidak memerlukan persetujuan dalam mode Manual, seperti pembacaan file di dalam direktori kerja Anda dan perintah Bash read-only. Tindakan yang cocok dengan aturan permissions.allow Anda dan panggilan yang disetujui oleh hook PreToolUse juga dijalankan. Gunakan mode ini untuk pipeline CI atau lingkungan terbatas di mana Anda menentukan sebelumnya apa yang boleh dilakukan Claude; sesi tidak pernah menunggu input. Bilah status menunjukkan ⏵⏵ don't ask on saat mode ini aktif.

Claude Code menolak panggilan yang cocok dengan aturan ask eksplisit Anda daripada meminta persetujuan. Ini juga menolak tool AskUserQuestion bawaan bahkan jika aturan allow Anda cocok dengannya, dan melakukan hal yang sama untuk tool konektor yang diatur organisasi Anda ke ask dalam sesi di mana pengaturan itu mencapai Claude Code. Ini menolak tool MCP yang ditandai _meta["anthropic/requiresUserInteraction"] dengan cara yang sama, karena kartu persetujuan mereka memerlukan jawaban yang tidak pernah dikumpulkan oleh mode ini.

Aturan allow atau hook PreToolUse tidak dapat menyetujui hal-hal berikut:

Sesi cloud di Claude Code di web mengabaikan defaultMode: "dontAsk"; lihat bypassPermissions untuk detail.

Atur saat startup dengan flag:

claude --permission-mode dontAsk

Lewati semua pemeriksaan dengan mode bypassPermissions

Mode bypassPermissions menonaktifkan prompt izin dan pemeriksaan keamanan sehingga panggilan alat dijalankan segera, termasuk penulisan ke jalur yang dilindungi.

Bahkan dalam mode bypassPermissions, setiap tindakan yang tidak disetujui otomatis oleh mode mana pun akan memunculkan permintaan izin atau penolakan, meskipun Anda dapat mematikan permintaan izin untuk perintah rm yang berbahaya. Membaca artifact publik organisasi lain memerlukan persetujuan Anda, dan mode ini tidak memintanya, sehingga Claude tidak dapat membacanya. Penolakan Remove-Item di PowerShell juga berlaku dalam mode ini.

Dua perlindungan pesan lintas sesi masih berlaku dalam mode ini, dan dalam sesi mode rencana terminal interaktif di mana bypass permissions tersedia:

  • Prompt persetujuan isolatePeerMachines untuk pesan ke sesi Anda di luar mesin ini masih muncul.
  • Ketika tidak ada nilai crossSessionInbound berlaku, Claude Code menahan pesan masuk dari sesi lain Anda untuk persetujuan Anda, dan mengirimkan tanpa bertanya hanya ketika sesi pengirim mengidentifikasi dirinya sebagai juga melewati prompt izin. Jika Anda meninggalkan mode izin saat pesan ditahan, Claude Code menerapkan kembali aturan masuk dan mengirimkan pesan yang ditahan apa pun yang sekarang diterima.

Dalam sesi terminal interaktif dengan bypass permissions tersedia, Claude Code juga tidak memberlakukan blokir plan mode. Claude masih diinstruksikan untuk merencanakan tanpa mengedit, tetapi pengeditan file atau perintah shell yang dicoba selama perencanaan berjalan tanpa meminta. Aturan ask eksplisit dan penghapusan jalur kritis rm dan rmdir yang dikenali masih meminta.

Mode rencana menjaga blokir di mana pun Claude Code berjalan tanpa terminal interaktif, termasuk run non-interaktif dengan -p, sesi Agent SDK, dan percakapan di panel chat VS Code extension. Di sana, --allow-dangerously-skip-permissions membuat bypassPermissions dapat dipilih nanti.

[!WARNING]

Hanya gunakan mode ini di lingkungan terisolasi seperti kontainer, VM, atau dev container tanpa akses internet, di mana Claude Code tidak dapat merusak sistem host Anda.

Anda tidak dapat memasukkan bypassPermissions dari sesi yang dimulai tanpa itu diaktifkan. Aktifkan saat peluncuran dengan permissions.defaultMode: "bypassPermissions" atau dengan flag yang mengaktifkan:

claude --permission-mode bypassPermissions

Flag --dangerously-skip-permissions setara.

Claude Code menolak bypassPermissions dalam sesi yang Anda mulai dengan --restricted. --restricted memerlukan Claude Code v2.1.248 atau lebih baru.

Pertama kali Anda memulai sesi interaktif dengan mode ini diaktifkan, Claude Code menampilkan dialog peringatan yang meminta Anda menerima tanggung jawab untuk tindakan yang diambil tanpa pemeriksaan izin:

  • Jika Anda menerima: Claude Code menetapkan skipDangerousModePermissionPrompt ke true dalam ~/.claude/settings.json, sehingga sesi berikutnya melewati dialog. Untuk melihat dialog lagi, hapus kunci dari file tersebut atau atur ke false. Referensi skipDangerousModePermissionPrompt mencantumkan file pengaturan lainnya di mana Anda atau organisasi Anda dapat mengaturnya.
  • Jika Anda menolak: Claude Code keluar.

Jika Anda meneruskan --setting-sources tanpa user, dialog dapat muncul lagi meskipun Anda telah menerimanya sebelumnya. Untuk melewatinya, tambahkan user, seperti pada --setting-sources user,project.

Dalam mode non-interaktif tidak ada dialog yang ditampilkan.

Sesi latar belakang menghormati penerimaan Anda ketika penerimaan tersebut tercatat dalam pengaturan pengguna atau pengaturan terkelola:

  • Tanpa penerimaan yang tercatat, claude --bg --permission-mode bypassPermissions ditolak. Terima dialog dalam sesi interaktif terlebih dahulu.

  • Dengan skipDangerousModePermissionPrompt yang hanya diatur dalam .claude/settings.local.json, sesi latar belakang dimulai dengan permintaan bypass diabaikan:

    • Jika --allow-dangerously-skip-permissions diabaikan, bypassPermissions tidak disertakan dalam siklus Shift+Tab-nya.
    • Jika --permission-mode bypassPermissions atau --dangerously-skip-permissions diabaikan, sesi dimulai dalam mode Manual sebagai gantinya.

    Tambahkan "skipDangerousModePermissionPrompt": true ke ~/.claude/settings.json, lalu mulai sesi latar belakang baru.

Di Linux dan macOS, Claude Code menolak untuk memulai dalam mode bypassPermissions saat berjalan sebagai root atau di bawah sudo:

--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons

Pemeriksaan dilewati secara otomatis di dalam sandbox yang dikenali. Untuk menjalankan secara otonom dalam kontainer, gunakan konfigurasi dev container, yang menjalankan Claude Code sebagai pengguna non-root.

Sesi cloud tidak menghormati defaultMode: "bypassPermissions" atau "dontAsk" dari file pengaturan Anda, jadi pengaturan yang diperiksa dalam repositori tidak dapat memulai sesi cloud dalam mode bypass-permissions. Pengaturan diabaikan secara diam-diam dan sesi dimulai dalam mode izin yang ditampilkan di dropdown mode sebagai gantinya. Lihat Alihkan mode izin untuk mode mana yang ditawarkan sesi cloud.

[!WARNING]

bypassPermissions tidak menawarkan perlindungan terhadap injeksi prompt atau tindakan yang tidak diinginkan. Untuk pemeriksaan keamanan latar belakang dengan jauh lebih sedikit prompt, gunakan mode auto sebagai gantinya. Administrator dapat memblokir mode ini dengan mengatur permissions.disableBypassPermissionsMode ke "disable" dalam pengaturan terkelola.

Bypass permissions diabaikan dalam sesi latar belakang

Pemberitahuan ini berarti sesi latar belakang tidak menemukan penerimaan Anda atas peringatan bypass permissions dalam pengaturan pengguna atau pengaturan terkelola, sehingga sesi tersebut mengabaikan permintaan bypass yang dibuat saat peluncuran:

Bypass permissions was requested at launch and ignored · if that was you, ~/.claude/settings.json needs "skipDangerousModePermissionPrompt": true

Tambahkan "skipDangerousModePermissionPrompt": true ke ~/.claude/settings.json, lalu mulai sesi latar belakang baru.

claude agents menampilkan peringatan bypass permissions yang dilewati sesi interaktif

Jika claude agents menampilkan peringatan bypass permissions meskipun sesi interaktif Anda melewatinya, periksa apakah skipDangerousModePermissionPrompt diatur dalam .claude/settings.local.json atau file --settings. Sesi interaktif menganggap kunci di sana sebagai penerimaan Anda atas peringatan tersebut, sedangkan claude agents tidak. Terlepas dari apakah Anda menemukannya di sana atau tidak, terima peringatan tersebut untuk menambahkan kunci ke ~/.claude/settings.json, tempat claude agents mencarinya.

Jalur yang dilindungi

Serangkaian kecil jalur menyimpan status repositori dan konfigurasi Claude sendiri, sehingga setiap mode memiliki aturannya sendiri untuk penulisan ke jalur tersebut:

Mode Penulisan jalur yang dilindungi
default, acceptEdits Diminta
plan Diizinkan dalam sesi terminal interaktif dengan bypass permissions tersedia. Jika tidak, dirutekan ke pengklasifikasi ketika mode auto tersedia selama perencanaan, dan diminta ketika tidak
auto Dirutekan ke pengklasifikasi, yang memutuskan
dontAsk Ditolak
bypassPermissions Diizinkan

Dalam sesi yang dimulai dengan --restricted, yang memerlukan Claude Code v2.1.248 atau lebih baru, pengklasifikasi tidak dapat menyetujui penulisan jalur yang dilindungi.

Selama permissions.blockWritesOutsideWorkingDirectories aktif, Claude Code menolak penulisan Write, Edit, dan NotebookEdit ke file pengaturan di setiap mode izin.

Dalam mode yang merutekan penulisan jalur yang dilindungi ke pengklasifikasi, penulisan yang pemeriksaan symlink selesaikan ke jalur yang dilindungi meminta Anda sebagai gantinya ketika jalur yang diminta Claude bukan sendiri dilindungi.

Aturan permissions.allow dalam file pengaturan tidak pra-menyetujui penulisan jalur yang dilindungi. Pemeriksaan keamanan berjalan sebelum Claude Code mengevaluasi aturan allow dari pengaturan, jadi entri seperti Edit(.claude/**) dalam ~/.claude/settings.json atau .claude/settings.json tidak mengubah hasil per-mode dalam tabel di atas. Dalam mode permisi yang meminta, prompt untuk penulisan ke folder .claude/ proyek atau ke ~/.claude/ dapat menawarkan salah satu opsi yang dibatasi sesi ini:

  • Untuk folder .claude/ proyek: Ya, dan izinkan Claude untuk mengedit file di folder .claude proyek ini untuk sesi ini
  • Untuk ~/.claude/: Ya, dan izinkan Claude untuk mengedit file di folder ~/.claude-nya untuk sesi ini

Direktori yang dilindungi:

  • .git
  • .config/git
  • .vscode
  • .idea
  • .husky
  • .cargo
  • .devcontainer
  • .yarn
  • .mvn
  • .claude, dengan beberapa pengecualian, seperti:
    • Git worktree milik Claude sendiri di bawah .claude/worktrees/
    • File rencana milik sesi saat ini di ~/.claude/plans/, atau di plansDirectory yang Anda tetapkan
    • Direktori scratch milik sesi latar belakang itu sendiri di ~/.claude/jobs/<id>/tmp/
    • File markdown di direktori auto memory proyek, seperti ~/.claude/projects/<project>/memory/, dalam sesi yang dimulai tanpa --restricted
    • File markdown di direktori memori subagent, seperti .claude/agent-memory/, dalam sesi yang dimulai tanpa --restricted
  • Direktori yang Anda muat dengan --plugin-dir, karena Claude Code memuat ulang dan menjalankan kode mod dari sana ketika file berubah
  • ~/.claude/dev-mods/, atau dev-mods/ di direktori yang ditunjuk oleh CLAUDE_CONFIG_DIR, tempat Claude menyimpan mod yang ditulisnya untuk Anda

File yang dilindungi:

  • .gitconfig, .gitmodules
  • .bashrc, .bash_profile, .bash_login, .bash_aliases, .bash_logout, .zshrc, .zprofile, .zshenv, .zlogin, .zlogout, .profile, .envrc
  • .npmrc, .yarnrc, .yarnrc.yml, .pnp.cjs, .pnp.loader.mjs, .pnpmfile.cjs, bunfig.toml, .bunfig.toml
  • .bazelrc, .bazelversion, .bazeliskrc
  • .pre-commit-config.yaml, lefthook.yml, lefthook.yaml, .lefthook.yml, .lefthook.yaml
  • gradle-wrapper.properties, maven-wrapper.properties
  • .devcontainer.json
  • .ripgreprc, pyrightconfig.json
  • .mcp.json, .claude.json
  • remote-settings.json, salinan tersimpan dari pengaturan yang dikelola server organisasi Anda, serta file tanda tangan, sinkronisasi, dan persetujuan yang disimpan Claude Code bersamanya, di ~/.claude atau di direktori yang ditunjuk oleh CLAUDE_CONFIG_DIR
  • File yang Anda berikan ke --settings, --mcp-config, atau --agents saat Anda memulai sesi
  • File yang ditunjuk oleh file pengaturan pengguna, proyek, atau lokal Anda ketika file pengaturan itu sendiri merupakan tautan simbolis, misalnya ke repositori dotfiles. Dalam mode yang merutekan penulisan jalur yang dilindungi ke pengklasifikasi, penulisan ke file ini meminta Anda sebagai gantinya, bahkan ketika aturan allow cocok. Jika jalur file itu sendiri juga merupakan jalur file pengaturan, seperti .claude/settings.json di folder lain, penulisan tersebut dirutekan ke pengklasifikasi seperti penulisan jalur yang dilindungi lainnya

Jalur kritis

Jalur kritis adalah direktori yang Claude Code lindungi dari perintah rm dan rmdir, seperti akar filesystem, direktori home Anda, dan direktori kerja Anda. Claude Code memeriksa perintah-perintah ini sebelum dijalankan, dan tidak ada aturan allow yang dapat menyetujui perintah yang targetnya dikenali sebagai jalur kritis. Pemeriksaan ini dapat melewatkan beberapa perintah, sehingga tidak menggantikan kontrol sistem operasi seperti sandboxing.

Penghapusan jalur kritis adalah perintah rm atau rmdir yang targetnya dikenali Claude Code sebagai jalur kritis. Hook PreToolUse yang mengembalikan "allow" juga tidak dapat menyetujuinya. Aturan allow atau hook PreToolUse tidak dapat menyetujuinya bahkan dalam mode izin yang melewati prompt lain.

[!WARNING]

Perintah yang terlewat oleh pemeriksaan tidak mendapat penanganan khusus, sehingga apa pun yang menyetujui perintah Bash dalam sesi Anda dapat menyetujuinya tanpa prompt. Itu termasuk aturan allow, mode bypassPermissions, dan mode auto-allow milik sandbox. Pemeriksaan ini berlaku untuk rm dan rmdir, sehingga perintah lain yang disetujui juga dapat menghapus jalur kritis.

Kontrol berikut berlaku terlepas dari apakah pemeriksaan mengenali suatu perintah atau tidak:

  • Aturan deny: aturan deny yang cocok dengan perintah akan memblokirnya, meskipun mod yang Anda instal masih dapat menyetujui beberapa panggilan tersebut
  • Sandboxing: sandboxing membuat sistem operasi membatasi jalur mana yang dapat ditulisi oleh perintah Bash. Perintah yang berjalan di sandbox masih dapat menghapus direktori kerja Anda
  • Mode sandbox ketat: secara default, perintah yang berjalan di sandbox dapat dicoba ulang di luar sandbox, dan aturan allow atau mode bypassPermissions dapat menyetujui retry tersebut tanpa prompt. Mode sandbox ketat mematikan retry tersebut

Apa yang terjadi pada penghapusan yang dikenali Claude Code bergantung pada mode izin Anda. Remove-Item dan built-in penghapusan cmd memiliki pemeriksaan mereka sendiri, yang tercakup dalam Remove-Item dalam PowerShell.

Jalur mana yang kritis

Claude Code memperlakukan target rm atau rmdir sebagai jalur kritis ketika itu adalah salah satu dari yang berikut:

  • Akar filesystem
  • Direktori tingkat atas, artinya anak langsung apa pun dari akar, seperti /usr, /etc, atau /data
  • Direktori home Anda. Di Windows, nama pendek 8.3-nya juga dihitung, seperti C:\Users\LONGNA~1
  • Akar drive Windows dan direktori tingkat atas mereka, seperti C:\ dan C:\Windows. Penulisan seperti \\?\C:\ dan \\localhost\C$ dihitung sebagai C:\
  • Direktori kerja Anda dan induknya
  • Direktori kerja tambahan Anda dan induk mereka, tetapi hanya ketika penghapusan adalah glob di bawah salah satu dari mereka, seperti rm -rf <dir>/*. rm -rf <dir> pada direktori itu sendiri tidak memicu pemeriksaan ini

Untuk jalur drive yang di-mount seperti /mnt/c atau /Volumes/USB, lihat Prompt drive yang di-mount.

Pemeriksaan pada nama pendek 8.3 direktori home dan pada penulisan \\?\C:\ dan \\localhost\C$ memerlukan Claude Code v2.1.292 atau lebih baru.

Target lain yang dihitung sebagai jalur kritis

Claude Code juga memperlakukan target rm dan rmdir berikut sebagai jalur kritis. Kolom terakhir mengatakan mengapa masing-masing dihitung.

Target Contoh Mengapa dihitung
Glob atau garis miring di bawah variabel shell rm -rf "$DIR"/* Perintah menjadi penghapusan dari akar filesystem ketika variabel kosong
Bentuk yang sama di bawah parameter posisional seperti $1 atau $@, ketika tidak ada dalam perintah yang memberikannya nilai rm -rf "$1"/* Perintah berkembang menjadi penghapusan dari akar
Variabel shell diikuti oleh satu nama direktori tingkat atas umum, seperti mnt, tmp, usr, atau Users rm -rf "$TMPDIR/mnt" Ketika variabel berkembang kosong, perintah menghapus /mnt
Variabel yang perintah yang sama tetapkan dari substitusi pencetakan direktori, seperti $(pwd) atau $(git rev-parse --show-toplevel) D=$(pwd); rm -rf "$D" Nilainya dapat menamai direktori kerja atau akar repositori Anda
Target yang hanya output dari substitusi perintah, ketika rm bersifat rekursif rm -rf "$(pwd)" Claude Code tidak dapat memeriksa target sebelum perintah berjalan
Substitusi perintah di akhir setelah jalur kritis rm -rf ~/$(cmd) Claude Code memeriksa jalur yang akan tetap jika substitusi berkembang kosong, di sini direktori home Anda
Target yang hanya garis miring terbalik rm -rf "\\" Git Bash di Windows membaca garis miring terbalik tunggal sebagai akar drive saat ini, jadi pemeriksaan berlaku di setiap platform
Jalur Windows yang menamai volume dengan GUID alih-alih huruf drive rm -rf '\\?\Volume{GUID}\work\build' Jalur tersebut tidak menyebutkan drive mana tempatnya berada, sehingga bisa jadi merupakan jalur kritis. Memerlukan Claude Code v2.1.292 atau lebih baru
Beberapa target yang berakhir dengan /* atau /*/ rm -rf logs/*/*, rm -rf logs/*/, cd logs && rm -rf a/* Claude Code tidak dapat mengetahui sebelum perintah berjalan direktori mana yang dijangkaunya

Untuk mematikan pemeriksaan pada target yang hanya output substitusi perintah, atur CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1 dalam lingkungan yang meluncurkan Claude Code.

Penghapusan di dalam perintah bersarang dan skrip inline

Claude Code juga melihat ke dalam konstruksi ini:

  • Perintah bersarang: subshell dengan (...), grup brace dengan { ...; }, substitusi perintah dengan $(...) atau backtick, atau substitusi proses dengan <(...). Claude Code menemukan penghapusan jalur kritis apakah itu berada di dalam bentuk bersarang, seperti dalam (rm -rf ~) atau echo "$(rm -rf ~)", atau di tempat lain dalam perintah yang sama.
  • Skrip inline: skrip yang dilewatkan ke sh, bash, zsh, atau shell POSIX serupa dengan -c, seperti dalam bash -c 'rm -rf ~'.
    • Ketika skrip dikutip ganda, shell yang memanggil berkembang variabelnya sebelum shell dalam menerima skrip. Dalam find . -name '*.tmp' -exec sh -c "rm -rf \"$1\"/*" _ {} \;, perintah berkembang menjadi penghapusan dari akar filesystem sekali per kecocokan, dan Claude Code memperlakukannya sebagai penghapusan jalur kritis.
    • Skrip yang dikutip tunggal yang mengikat $1 ke nilai nyata, seperti sh -c 'rm -rf "$1"/*' _ {} lakukan, tidak ditandai.

Untuk mematikan pemeriksaan pada jalur kritis yang diketik langsung dalam skrip -c, seperti ~, atur CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT=1 dalam lingkungan yang meluncurkan Claude Code.

Tulis ulang perintah yang ditandai

Cara menulis ulang perintah sehingga lulus pemeriksaan bergantung pada mana dari target lain yang digunakannya:

  • Glob atau garis miring di bawah variabel seperti $DIR: lindungi setiap ekspansi sehingga shell berhenti dengan kesalahan ketika variabel tidak diatur atau kosong, seperti dalam rm -rf "${DIR:?}"/*, atau gunakan jalur literal. Penghapusan yang ekspansinya semuanya dilindungi dengan cara itu lulus pemeriksaan ini, jadi dalam mode bypassPermissions itu berjalan tanpa prompt kecuali pemeriksaan jalur kritis lain menandainya.
  • Glob atau garis miring di bawah variabel yang biasanya diatur, seperti $HOME: gunakan jalur literal.
  • Variabel yang ditetapkan dari substitusi pencetakan direktori: gunakan jalur literal. Penjaga "${D:?}" tidak menghapus pemeriksaan ini, karena variabel tidak kosong.
  • Target yang hanya output substitusi perintah: jalankan substitusi sendiri terlebih dahulu, kemudian hapus jalur literal yang dicetak. Prompt memberi tahu Claude untuk melakukan hal yang sama.

Untuk glob atau garis miring di bawah variabel, prompt menamai rm yang ditandai dan mengatakan cara menulis ulangnya sehingga pemeriksaan lulus.

Prompt Dangerous rm operation not ruled out

Alasan lengkapnya berbunyi:

Dangerous rm operation not ruled out — the shell may read this command differently than it was parsed

Alasan ini berarti shell mungkin membaca perintah secara berbeda dari cara Claude Code membacanya, sehingga penghapusan bisa berada di bagian yang tidak diperiksa, bahkan tanpa adanya rm. Dalam mode auto atau bypassPermissions, penolakan dengan kalimat ini berasal dari pemeriksaan yang sama:

This command could not be checked for dangerous rm operations: the shell may read it differently than it was parsed.

Anda mendapatkan prompt atau penolakan yang sama dengan yang didapat penghapusan jalur kritis dalam mode izin Anda, termasuk bypassPermissions, meskipun Anda dapat mematikan prompt tersebut dalam mode bypassPermissions. Anda tidak dapat menyetujui perintah tersebut dengan aturan allow Bash atau Bash(*), mode auto-allow sandbox, atau hook PreToolUse yang mengembalikan "allow". Baca perintahnya, lalu setujui prompt tersebut atau, setelah penolakan, jalankan di shell Anda.

Prompt drive yang di-mount

Prompt drive yang di-mount muncul di macOS, Linux, dan WSL ketika rm rekursif menargetkan jalur drive yang di-mount yang terdaftar, seperti /mnt/c atau /Volumes/USB/build. Alasannya berbunyi Dangerous rm operation on mounted drive path: <path>. Target /* mendapatkan prompt tanpa flag rekursif, karena Claude Code membaca rm /Volumes/USB/build/* sebagai penghapusan /Volumes/USB/build.

Bahkan dengan aturan allow untuk rm, Claude Code menangani perintah tersebut sebagai penghapusan jalur kritis: prompt atau penolakan bergantung pada mode izin Anda. Setujui prompt untuk membiarkan rm berjalan, atau matikan prompt tersebut.

Jalur yang mendapatkan prompt drive yang di-mount

Cocokkan target rm rekursif atau penghapusan /* Anda dengan bentuk jalur berikut, di mana setiap placeholder seperti <drive> atau <name> mewakili tepat satu segmen jalur:

Di bawah Bentuk jalur yang mendapatkan prompt Contoh
/Volumes /Volumes/<drive>, /Volumes/<drive>/<name> /Volumes/USB, /Volumes/USB/build
/System/Volumes /System/Volumes, /System/Volumes/<volume>, /System/Volumes/<volume>/<name> /System/Volumes/Data
/media /media/<user>, /media/<user>/<drive>, /media/<user>/<drive>/<name> /media/alex
/run/media /run/media, /run/media/<user>, /run/media/<user>/<drive>, /run/media/<user>/<drive>/<name> /run/media/alex/USB/build
/mnt /mnt/<name>, dan /mnt/<letter>/<name> di bawah mount satu huruf seperti /mnt/c milik WSL /mnt/data, /mnt/c/Users

Untuk rm rekursif atau non-rekursif pada /Volumes, /media, atau /mnt itu sendiri, Anda melihat alasan jalur kritis Dangerous rm operation on critical path: <path> sebagai gantinya.

Target relatif dihitung dari direktori kerja Anda, jadi rm -rf build saat Anda bekerja di /Volumes/USB menargetkan /Volumes/USB/build dan mendapatkan prompt.

Matikan prompt drive yang di-mount

Untuk berhenti mendapatkan prompt drive yang di-mount sementara prompt dari penyebab lain tetap ada, mulai Claude Code dengan CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT=1 di lingkungannya. Misalnya, atur variabel tersebut di shell Anda dan mulai claude dari sana:

export CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT=1
claude

Dalam sesi yang dimulai dengan cara itu, prompt drive yang di-mount berhenti untuk seluruh drive seperti /Volumes/USB dan untuk jalur terdaftar lainnya. Jika Anda mengizinkan Bash(rm *), menggunakan mode Manual, dan bekerja di /Volumes/USB, maka rm -rf build berjalan tanpa prompt.

Prompt yang masih menampilkan Dangerous rm operation on mounted drive path berarti variabel tersebut tidak mencapai sesi:

  • Variabel dalam file pengaturan: Claude Code mengabaikan variabel tersebut dalam blok env file pengaturan, apa pun jenis file pengaturannya, jadi atur variabel tersebut di tempat Anda memulai claude sebagai gantinya
  • Sesi dimulai tanpa variabel: mulai claude lagi dari lingkungan tempat variabel tersebut diatur, karena sesi yang sedang berjalan tidak mengambilnya

Penghapusan yang masih memunculkan prompt saat prompt drive yang di-mount dimatikan

Dalam mode Manual dengan aturan allow untuk rm, rm pada jalur drive yang di-mount masih dapat memunculkan prompt, tanpa alasan Dangerous rm operation on mounted drive path:

  • Target di luar direktori kerja Anda: rm -rf /Volumes/USB/other saat Anda bekerja di /Volumes/USB/project mendapatkan prompt. Untuk menghentikan prompt tersebut, tambahkan direktori yang berisi target ke sesi
  • Target dengan *: rm -rf build/* mendapatkan prompt. Setujui prompt tersebut untuk menjalankan perintah, atau minta Claude untuk menamai setiap target tanpa *
  • Target yang merupakan jalur kritis: /mnt itu sendiri dan direktori kerja Anda itu sendiri tetap menjadi jalur kritis, jadi rm -rf pada salah satunya mendapatkan prompt. Setujui prompt tersebut untuk membiarkan rm berjalan

Penghapusan jalur kritis di setiap mode izin

Apa yang Claude Code lakukan dengan penghapusan jalur kritis bergantung pada mode izin Anda:

Mode Hasil
default, acceptEdits Meminta Anda untuk menyetujuinya
plan Meminta Anda untuk menyetujuinya. Ketika pengklasifikasi meninjau perintah selama perencanaan dan tidak ada bypass permissions tersedia, menanganinya seperti dalam mode auto
auto Meminta Anda untuk menyetujuinya di terminal, dengan batas waktu. Di tempat lain, menolaknya
dontAsk Menolaknya
bypassPermissions Di terminal, meminta Anda untuk menyetujuinya sebelum batas waktu habis. Di tempat lain, lihat apa yang terjadi di setiap tempat

Jika aturan ask eksplisit cocok dengan perintah, Claude Code meminta Anda sebagai gantinya, bahkan dalam mode auto dan tanpa batas waktu. Dalam mode yang meminta, hook PermissionRequest dapat menjawab prompt.

Untuk menjalankan penghapusan ini tanpa prompt dalam mode bypassPermissions, lihat Matikan prompt penghapusan jalur kritis.

Batas waktu dan penolakan dalam mode auto dan bypassPermissions

Dalam mode auto dan bypassPermissions, prompt terminal untuk penghapusan jalur kritis menampilkan hitungan mundur dua menit:

  • Jika hitungan mundur habis sebelum Anda menjawab, Claude Code menolak perintah dan memberi tahu Claude apa yang harus dilakukan sebagai gantinya, sehingga sesi tanpa pengawasan terus bekerja.
  • Tekan tombol apa pun saat prompt terbuka untuk menghentikan hitungan mundur dan membuat prompt tetap menunggu jawaban Anda.
  • Setelah tiga prompt ini habis tanpa jawaban dalam sesi, Claude Code berhenti menampilkannya dan menolak penghapusan jalur kritis lebih lanjut segera. Mengirim pesan baru memulai hitungan ulang.

Batas waktu berlaku di Claude Code v2.1.281 dan yang lebih baru, begitu pula penolakan mode auto di luar terminal.

Di luar terminal, Anda tidak mendapatkan prompt tersebut:

Tempat auto bypassPermissions
Panel chat ekstensi VS Code Menolaknya Menolaknya kecuali hook PermissionRequest mengizinkannya
Aplikasi Desktop Menolaknya Menolaknya kecuali hook PermissionRequest mengizinkannya
Run -p atau sesi Agent SDK Menolaknya --permission-prompt-tool atau callback canUseTool Anda yang memutuskan. Tanpa keduanya, atau di bawah --permission-prompts none, menolaknya kecuali hook PermissionRequest mengizinkannya. Untuk menjalankan penghapusan ini tanpa prompt sebagai gantinya, lihat Matikan prompt penghapusan jalur kritis

Di mana pun penghapusan ditolak, Anda dapat membaca seluruh perintah dan menjalankannya di shell Anda.

Untuk mengubah apa yang Anda dapatkan di setiap mode, atur CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT ke 1:

  • bypassPermissions: prompt terminal tidak memiliki batas waktu, dan panel chat VS Code meminta persetujuan Anda
  • auto: pengklasifikasi yang memutuskan, di terminal, panel chat VS Code, run -p, dan sesi Agent SDK

Atur variabel ini di lingkungan yang memulai Claude Code, seperti shell Anda atau opsi env milik SDK, bukan di file pengaturan Claude Code. Untuk panel chat, tambahkan ke claudeCode.environmentVariables di settings.json pengguna milik VS Code sendiri, lalu mulai percakapan baru:

{
  "claudeCode.environmentVariables": [
    { "name": "CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT", "value": "1" }
  ]
}

Matikan prompt penghapusan jalur kritis dalam mode bypassPermissions

Untuk menjalankan perintah Bash rm dan rmdir yang menargetkan jalur kritis tanpa prompt dalam mode bypassPermissions, mulai Claude Code dengan CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1 di lingkungannya. Ini memerlukan Claude Code v2.1.311 atau lebih baru. Claude Code hanya membaca variabel tersebut dari lingkungan peluncuran dan mengabaikannya dalam blok env file pengaturan. Misalnya, atur variabel tersebut di shell Anda dan mulai claude dari sana:

[tab] macOS, Linux, WSL

export CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1
claude --permission-mode bypassPermissions

[tab] Windows PowerShell

$env:CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS = "1"
claude --permission-mode bypassPermissions

[tab] Windows CMD

set CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1
claude --permission-mode bypassPermissions

[!WARNING]

Dengan variabel ini diatur, Anda kehilangan prompt keamanan untuk penghapusan destruktif: perintah seperti rm -rf ~ dapat berjalan tanpa bertanya kepada Anda. Atur variabel ini hanya di lingkungan terisolasi yang isinya boleh hilang.

Penghapusan berjalan tanpa prompt hanya dalam mode bypassPermissions itu sendiri, bukan dalam plan mode, dan hanya untuk apa yang ditandai oleh pemeriksaan jalur kritis dalam tool Bash dan Monitor. Itu termasuk perintah yang tidak dapat diurai sepenuhnya oleh Claude Code, yang juga berjalan tanpa prompt.

Pemberitahuan saat startup tentang prompt penghapusan jalur kritis

Untuk memeriksa apakah CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS berfungsi, baca baris yang dicetak Claude Code saat startup. Dalam run -p, baris tersebut ada di stderr. Dalam aplikasi Agent SDK, teruskan opsi stderr untuk membacanya. Baris tersebut menyatakan salah satu dari berikut:

  • is set, so dangerous rm commands can run without a prompt: penghapusan dapat berjalan tanpa prompt setelah pengaturan terkelola dan hook plugin dimuat. Jika penghapusan terus mendapatkan prompt atau penolakan, lihat Mengapa prompt penghapusan jalur kritis tetap aktif
  • has no effect in this session: penghapusan tetap mendapatkan prompt atau penolakan seperti biasa selama seluruh sesi. Untuk mengubahnya, temukan kasus Anda di Mengapa prompt penghapusan jalur kritis tetap aktif
  • has no effect while the Windows registry cannot be read for managed settings: penghapusan tetap mendapatkan prompt atau penolakan seperti biasa, dan variabel tersebut berlaku tanpa restart jika pembacaan registry berikutnya berhasil. Jika penghapusan terus mendapatkan prompt atau penolakan, lihat Mengapa prompt penghapusan jalur kritis tetap aktif

Tidak adanya baris tersebut tidak berarti prompt aktif: aplikasi Agent SDK tanpa opsi stderr tidak melihat baris apa pun, dan penghapusan masih dapat berjalan tanpa prompt. Selain itu, periksa bahwa Anda mengatur variabel di lingkungan peluncuran, bahwa sesi dapat memasuki mode bypassPermissions, dan bahwa claude tidak berada di dalam sesi lain. Beberapa sesi dimulai tanpa variabel tersebut.

Jika Anda melihat salah satu baris ini padahal tidak mengatur variabel tersebut, temukan tempat variabel itu diatur, seperti profil shell Anda, lalu hapus.

Mengapa prompt penghapusan jalur kritis tetap aktif

Jika CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS tidak berpengaruh dan penghapusan tetap mendapatkan prompt atau penolakan seperti biasa, periksa penyebab seperti berikut:

  • Sesuatu yang lain menangani prompt izin: --permission-prompt-tool atau callback canUseTool Agent SDK tanpa --permission-prompts none, hook PermissionRequest dengan matcher apa pun, atau mod yang menangani event tersebut. Hapus hook, mod, tool, atau callback tersebut dan mulai ulang claude
  • Panel chat ekstensi VS Code atau aplikasi Desktop yang menjalankan sesi: mulai claude di terminal sebagai gantinya, seperti terminal terintegrasi IDE
  • Aturan mencakup Bash, Edit, atau Read: aturan deny atau ask yang menargetkan salah satu tool ini, saat peluncuran atau begitu Claude Code membacanya selama sesi, bahkan jika Anda menghapusnya kemudian. Hapus aturan tersebut dan mulai ulang claude. Untuk mengecualikan suatu tool, gunakan --tools alih-alih aturan deny
  • permissions.blockReadsOutsideWorkingDirectories aktif: hapus pengaturan tersebut dari setiap file pengaturan yang mengaturnya ke true, lalu mulai ulang claude
  • claude berjalan di dalam sesi lain: claude yang dimulai dari tool Bash milik suatu sesi atau dari hook, bahkan dengan variabel tersebut di baris perintahnya. Mulai claude dari shell Anda sendiri. Jangan mengandalkan batasan sesi bersarang ini sebagai batas keamanan
  • Hook PreToolUse menjawab ask untuk suatu penghapusan: ubah apa yang dikembalikan hook tersebut
  • Claude Code memulai sesi untuk Anda: sesi latar belakang, rekan tim agent di panel terpisah, dan sesi yang dibuat server Remote Control dimulai tanpa variabel tersebut. Mulai claude dari shell Anda sendiri
  • Pengaturan terkelola tidak dapat dibaca: Claude Code belum berhasil membaca sumber pengaturan terkelola Anda. Jika pengaturan terkelola server terus gagal dimuat, lihat Remote managed settings failed to load. Untuk kegagalan lain yang bukan kueri registry, minta pihak yang mengelola sumber tersebut untuk memperbaikinya
  • Windows registry tidak dapat dikueri: di Windows dan di WSL, variabel tersebut memerlukan jawaban dari registry, bahkan ketika WSL tidak menggunakannya untuk pengaturan. Kueri dapat gagal sepanjang sesi di Windows non-Inggris, di WSL dengan interop dimatikan, atau di container pada kernel WSL2. Jika interop dimatikan, aktifkan. Jika tidak, jalankan penghapusan tersebut sendiri

Remove-Item dalam PowerShell

Ketika Anda mengaktifkan alat PowerShell, Claude Code memberikan Remove-Item dan built-in cmd rd, rmdir, del, dan erase pemeriksaan mereka sendiri, terpisah dari daftar jalur kritis rm. Untuk Remove-Item, hasilnya bergantung pada target, dan kasus pertama yang cocok berlaku:

  • Jalur sistem: akar filesystem dan direktori tingkat atasnya, akar drive dan direktori tingkat atas mereka, dan direktori home Anda. Claude Code menolak perintah di setiap mode, tanpa bertanya kepada Anda.
  • Wildcard: bare *, atau target apa pun yang berakhir dalam /* atau \*, termasuk glob di bawah variabel shell seperti $dir/*. Claude Code menolak perintah di setiap mode, tanpa bertanya kepada Anda, sebelum pengklasifikasi melihatnya.
  • Direktori kerja Anda atau salah satu induknya, dengan -Recurse: Claude Code memperlakukan perintah seperti apa pun yang memerlukan persetujuan dalam mode izin Anda, jadi itu meminta Anda dalam mode yang meminta, mengirimkannya ke pengklasifikasi dalam mode auto, dan menolaknya dalam mode dontAsk. Mode bypassPermissions melewati pemeriksaan ini.

Kasus jalur sistem juga berlaku untuk rd, rmdir, del, dan erase ketika Claude menjalankannya melalui cmd, seperti dalam cmd /c rd /s /q C:\Users. Secara default, Claude Code menolak perintah seperti itu di setiap mode, tanpa bertanya kepada Anda. Pemeriksaan cmd ini memerlukan Claude Code v2.1.283 atau lebih baru.

Saat menilai target cmd, Claude Code memperlakukan variabel PowerShell yang mengikuti teks literal sebagai kosong. Itu membuat cmd /c rd /s /q "C:\$name" penghapusan C:\, jadi itu juga ditolak. Wildcard di akhir dihitung sebagai folder yang dikosongkannya, jadi cmd /c del /q C:\* ditolak dan cmd /c del /q dist\* dalam proyek Anda tidak.

Untuk mematikan pemeriksaan cmd, atur CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY=1 dalam lingkungan yang meluncurkan Claude Code. Claude Code mengabaikan variabel ini dalam blok env file pengaturan. Remove-Item pada jalur sistem tetap ditolak bagaimanapun juga.

Lihat juga

  • Permissions: aturan allow, ask, dan deny; kebijakan terkelola
  • Konfigurasi mode auto: beri tahu pengklasifikasi infrastruktur mana yang dipercaya organisasi Anda
  • Hooks: logika izin kustom melalui hook PreToolUse dan PermissionRequest
  • Security: perlindungan dan praktik terbaik
  • Sandboxing: isolasi filesystem dan jaringan untuk perintah Bash
  • Mode non-interaktif: jalankan Claude Code dengan flag -p