SpyBara
Go Premium

permission-modes.md 2026-10-31 23:02 UTC to 2026-11-01 23:57 UTC

No changes for this document in this history range.

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 01:02

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".

Penulisan ke jalur yang dilindungi tidak pernah disetujui otomatis kecuali dalam mode bypassPermissions dan dalam sesi mode plan di mana izin bypass tersedia, artinya sesi terminal interaktif yang dimulai dengan cara yang menempatkan bypassPermissions dalam siklus mode.

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.

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 mana yang dimulai sesi

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

  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, nilainya tidak berlaku, dan Claude Code kemudian menggunakan default bawaan daripada defaultMode dari ~/.claude/settings.json. Jika Anda menetapkan "bypassPermissions" di dua file itu, itu juga tidak berlaku, dan sesi dimulai dalam mode Manual. Nilai lainnya berlaku dari file pengaturan apa pun.

  3. Default bawaan

Percakapan yang dimulai ekstensi VS Code mengikuti daftar ekstensi sendiri dalam Alihkan mode izin. Untuk mode izin yang dimulai Claude Code dalam sesi yang dilanjutkan, lihat mode izin pada resume.

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

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

Cara Anda menjalankan Claude Code Mode izin awal bawaan
File pengaturan apa 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 lebih baru; auto mode tetap tersedia untuk dialihkan
Di terminal atau melalui ekstensi VS Code auto dengan Claude Code v2.1.283 atau lebih baru; pada versi sebelumnya, auto pada paket Pro, Max, Ultra, atau Team dalam sesi yang mengambil flag fitur, dan default sebaliknya

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

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

  • Di terminal, sekali, di bagian atas sesi
  • Di ekstensi VS Code, sebagai kartu di layar percakapan baru yang tetap sampai Anda menutupnya

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

Pada paket Pro, Max, Ultra, dan Team, dan dalam sesi yang tidak mengambil flag fitur, Claude Code menanyakan sekali apakah akan mengubah pengaturan ke auto mode. Pertanyaan tersebut muncul di terminal atau di ekstensi VS Code, dan jika Anda menolak, pengaturan Anda tetap seperti adanya.

Panggilan tool ditolak dalam eksekusi claude -p dan Agent SDK

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

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

Contoh-contoh ini 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 flag fitur, misalnya pada penyedia pihak ketiga atau dengan DISABLE_TELEMETRY.

Mulai dalam mode izin yang berbeda

Anda dapat menetapkan mode izin awal untuk satu sesi, atau sebagai default untuk setiap sesi di mesin, proyek, atau organisasi. Ketika lebih dari satu file pengaturan menetapkan permissions.defaultMode, prioritas pengaturan memutuskan, jadi nilai proyek atau terkelola mengalahkan ~/.claude/settings.json. Untuk mengubah mode izin sesi yang sudah berjalan, lihat Alihkan mode izin.

Untuk menetapkan mode izin awal untuk Lakukan ini
Satu sesi yang akan Anda mulai Lewatkan mode izin sebagai flag, misalnya claude --permission-mode default
Setiap sesi terminal yang Anda mulai di mesin ini Atur permissions.defaultMode di ~/.claude/settings.json. Untuk apa yang dibaca ekstensi VS Code, lihat Alihkan mode izin
Setiap sesi terminal yang Anda mulai dalam satu proyek Atur permissions.defaultMode di .claude/settings.json proyek. Sesi yang Anda mulai di terminal menghormati setiap nilai kecuali auto dan bypassPermissions; sesi yang dimulai ekstensi VS Code tidak membaca pengaturan proyek untuk mode izin awal
Setiap sesi terminal di organisasi Anda Atur permissions.defaultMode dalam pengaturan terkelola. Sesi terminal dimulai dalam mode itu dan orang masih dapat beralih ke auto mode; untuk apa yang dibaca ekstensi VS Code, lihat Alihkan mode izin. Untuk menghapus auto mode sehingga tidak ada yang dapat memilihnya, atur permissions.disableAutoMode ke "disable" sebagai gantinya

Contoh ini membuat setiap sesi terminal di mesin Anda dimulai dalam mode Manual, yang nilai konfignya 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. Periksa cara developer masuk dan terhubung mencantumkan sesi yang terkena ketentuan ini.

Auto mode dan bypassPermissions tetap tersedia:

Memerlukan Claude Code v2.1.285 atau lebih baru, versi minimum untuk konfigurasi HIPAA.

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 diingat per folder dan mengambil alih defaultMode untuk folder itu. Plan adalah pengecualian: memilihnya berlaku hanya untuk sesi saat 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 hanya ketika organisasi Anda mengizinkannya dan model yang dipilih 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

Tekan Shift+Tab lagi untuk keluar dari plan mode tanpa 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.

Hilangkan permintaan izin dengan auto mode

Auto mode memungkinkan Claude untuk bekerja 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 bermusuhan yang dibaca Claude. Aturan ask eksplisit tetap memaksa munculnya permintaan izin.

Dengan Claude Code v2.1.283 atau lebih baru, auto mode adalah mode izin awal bawaan untuk sesi terminal interaktif dan VS Code di setiap paket dan penyedia. Pada versi sebelumnya, ini adalah 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; tinjauan pengiriman memerlukan Claude Code v2.1.222 atau 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 pertanyaan klarifikasi, meskipun Claude tetap bertanya ketika prompt Anda atau skill secara eksplisit bergantung padanya. Untuk perilaku otonom yang lebih kuat dalam mode yang masih meminta persetujuan Anda, atur gaya output Proaktif sebagai gantinya.

[!WARNING]

Auto mode mengurangi permintaan izin tetapi tidak menjamin keamanan. Gunakan untuk tugas di mana Anda mempercayai arah umumnya, bukan sebagai pengganti tinjauan pada operasi sensitif.

Auto mode tersedia hanya ketika akun Anda memenuhi semua persyaratan ini:

  • Paket: Semua paket.
  • Organisasi: pada Team dan Enterprise, auto mode tersedia secara default. Administrator dapat mematikannya untuk organisasi dengan menetapkan permissions.disableAutoMode ke "disable" dalam pengaturan terkelola.
  • Model: pada Anthropic API dan Claude Platform on AWS, Claude Opus 4.6 atau lebih baru, Sonnet 4.6 atau lebih baru, Haiku 5.5, atau model Fable. Pada Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan sesi gateway aplikasi Claude yang masuk, hanya Claude Sonnet 5 atau lebih baru, Opus 4.7 atau 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 pada Anthropic API, Claude Platform on AWS, Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan sesi gateway aplikasi Claude yang masuk.

Jika Claude Code melaporkan auto mode sebagai tidak tersedia, pertama periksa persyaratan ini dan apakah ada file pengaturan yang menetapkan disableAutoMode. Anthropic juga dapat mematikan auto mode di sisi server, atau server dapat menolak auto mode untuk akun Anda. Sesi yang menerima salah satu jawaban tersebut menjaga auto mode tetap mati sampai sesi berakhir, jadi mulai sesi baru nanti.

Pesan terpisah yang menyebutkan model dan mengatakan auto mode "tidak dapat menentukan keamanan" suatu tindakan berarti permintaan pengklasifikasi gagal. Kegagalan itu biasanya bersifat sementara, tetapi pada Amazon Bedrock dapat berulang sampai akun Anda dapat memanggil model yang disebutkan. Lihat referensi kesalahan untuk penyebab dan apa yang harus dilakukan.

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

Auto mode pada Bedrock, Agent Platform, atau Foundry

Pada Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan sesi gateway aplikasi Claude yang masuk, auto mode tersedia secara default. Jika Anda tidak menetapkan 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:

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

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

Tinjauan pengklasifikasi di sisi server

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

  • 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 server memerlukan Claude Code v2.1.271 atau lebih baru pada paket Pro, Max, Ultra, dan Team. Pada paket Enterprise dan akun Claude API, sesi tersebut memerlukan v2.1.278 atau lebih baru.
    • Dalam sesi -p, Agent SDK, ekstensi VS Code, dan aplikasi desktop, meminta server memerlukan Claude Code v2.1.281 atau lebih baru
    • Mulai v2.1.282, sesi yang tidak mengambil feature flag, misalnya karena Anda mematikan telemetri, meminta server secara default dalam jenis sesi apa pun
  • Penyedia cloud, atau gateway LLM atau proxy: pada Claude Platform on AWS, Amazon Bedrock, Agent Platform Google Cloud, dan Microsoft Foundry, dan kapan pun Anda mengarahkan ANTHROPIC_BASE_URL ke gateway LLM atau proxy, apa pun paket Anda. Meminta secara default memerlukan Claude Code v2.1.278 atau lebih baru.
  • Sesi gateway aplikasi Claude yang masuk: memerlukan Claude Code v2.1.280 atau lebih baru
  • Sesi cloud di lingkungan yang di-hosting 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 server seiring Anthropic meluncurkannya.

Ketika server meninjau tindakan, vonisnya yang memutuskan tindakan tersebut. Dua hasil lain dimungkinkan:

  • Server tidak meninjau sesi: respons selesai tanpa hasil tinjauan, atau server menjawab bahwa server tidak meninjau sesi ini. Penyebab paling umum adalah gateway LLM atau proxy yang menghilangkan permintaan tinjauan atau hasilnya, dan platform, wilayah, atau kredensial yang belum memiliki pemeriksaan di sisi server. Claude Code beralih ke permintaan pengklasifikasinya sendiri. Setelah fallback itu berlaku untuk sisa sesi, Claude Code menampilkan pemberitahuan tentang biaya permintaan pengklasifikasi pada akun di mana permintaan tersebut ditagih.
  • Server tidak memberikan vonis untuk suatu tindakan: Claude Code menolak tindakan tersebut alih-alih menjalankannya tanpa tinjauan. Pada koneksi apa pun, ini terjadi ketika respons berakhir sebelum hasil tinjauan tiba atau hasil tiba dalam bentuk yang tidak dapat dibaca Claude Code. Gateway LLM atau proxy yang memotong respons atau menulis ulang hasilnya dapat menyebabkan keduanya. Pada koneksi langsung ke Anthropic API, ini juga terjadi ketika pemeriksaan server gagal untuk tindakan tersebut, misalnya karena waktu habis. Server tidak mengembalikan vonis keamanan menjelaskan pesan penolakan, apa yang terjadi ketika penolakan berulang, dan apa yang harus dilakukan.

Untuk melewati permintaan ke server dan selalu menggunakan permintaan pengklasifikasi 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 lebih baru. Menetapkannya ke 1 di sana mengaktifkan tinjauan server dalam sesi yang belum memilikinya, kecuali Anda juga menetapkan CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1. Jika Anda menetapkan CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 dan membiarkan CLAUDE_CODE_AUTO_MODE_SERVER tidak ditetapkan, Claude Code juga berhenti meminta server, kecuali seperti yang dijelaskan 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 dikirim hanya untuk panggilan di luar tinjauan server.

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

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

Jika Sonnet 5 atau model dalam 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.

Pilih model pengklasifikasi

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

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

Ketika model Anda bukan yang meninjau

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

Jika beberapa situasi berlaku, ikuti yang tercantum pertama.

Periksa model mana yang digunakan pengklasifikasi

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

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

Minta Claude menjalankan perintah shell yang tidak read-only, 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 alasannya 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: pastikan mode izin adalah auto, lalu minta Claude menjalankan perintah lain yang tidak read-only.

Apa yang diblokir pengklasifikasi secara default

Pengklasifikasi mempercayai direktori kerja Anda dan remote yang dikonfigurasi untuknya ketika sesi dimulai. Remote yang ditambahkan atau diarahkan ulang selama sesi dengan git remote add atau git remote set-url tidak dipercaya, dan semua hal lain diperlakukan sebagai eksternal sampai Anda mengonfigurasi infrastruktur terpercaya.

Diblokir secara default:

  • Mengunduh dan menjalankan 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 perubahan yang akan mengirim rahasia atau data sensitif ke luar repositori saat dijalankan, 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, dan perubahan konfigurasi yang memperluas apa yang dipublikasikan deploy, seperti pengaturan registri, visibilitas, artefak, atau sourcemap. Pemeriksaan ini berlaku di branch apa pun, berlaku bahkan ketika repositori bersifat publik, dan terpicu ketika perubahan di-commit atau di-push, terlepas dari apakah commit atau push itu memicu pipeline; untuk melewatinya diperlukan penyebutan efek eksekusinya, bukan hanya commit atau push-nya

  • git reset --hard, git checkout -- ., git restore ., git clean -fd, git stash drop, atau git stash clear, yang diasumsikan 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. Mengubah pesan saja 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, dan menerapkan rencana yang menghancurkan sumber daya

  • Menulis ke pengelola rahasia, atau mengubah catatan DNS atau sertifikat TLS

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

  • Memposting komentar yang itu sendiri merupakan perintah untuk otomasi, 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

  • Menulis ke cluster komputasi bersama yang menjangkau melampaui sumber daya yang Anda sebutkan, seperti pemilih label atau --all yang ikut mengenai pekerjaan pengguna lain

  • Membuat sumber daya Kubernetes yang berjalan di setiap node atau mencegat lalu lintas cluster, seperti DaemonSets 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 transkrip atau file

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

  • Mengarahkan instalasi paket melewati registri paket internal Anda ke registri publik. Ini berlaku ketika registri internal atau mirror tercantum dalam environment Anda atau ketika Anda telah memberi tahu Claude dalam percakapan bahwa registri tersebut ada

  • Menjalankan perintah dengan flag yang menonaktifkan pengaman keamanan, seperti --insecure

  • Meluncurkan loop agent otonom yang berjalan tanpa persetujuan manusia atau sandbox, seperti yang dimulai dengan --dangerously-skip-permissions atau --no-sandbox. Ini juga mencakup menjalankan agent pihak ketiga atau harness eval 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 jalur bernama yang spesifik

  • Menyertakan detail sensitif dalam konten yang dikirim, diunggah, dipublikasikan, atau ditulis untuk orang lain atau sistem bersama, ketika pesan Anda sendiri tidak mengotorisasi detail tersebut untuk penerima itu. Isi PR dan issue, pesan commit, dan komentar dihitung sebagai jenis konten keluar 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 repositori atau batas kepercayaan

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

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

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

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

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

  • Melakukan push rahasia atau data pribadi atau data yang dipercayakan ke repositori yang diketahui bersifat publik, atau melakukan push 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 yang dipercayakan, dan konten dari repositori privat yang mencapai surface publik apa pun diblokir dengan cara yang sama. Ketika visibilitas repositori tidak diketahui, pengklasifikasi tidak memblokir berdasarkan hal itu saja; pengklasifikasi menilai kontennya berdasarkan aturan lain sebagai gantinya

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

  • Konten dari penyimpanan lokal yang sensitif, atau dari file yang nama, jalur, atau jenisnya menandainya sebagai sensitif, masuk ke commit, push, teks PR atau issue, gist atau paste, atau publikasi paket, kecuali Anda menyebutkan sumber dan tujuannya. Transkrip sesi dan log percakapan, folder dot kredensial dan konfigurasi seperti kunci SSH, kredensial cloud, profil browser, dan riwayat shell, serta ekspor data pengguna semuanya termasuk, 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 di mana pun dalam percakapan yang dilihat pengklasifikasi, atau glob yang berakar pada variabel tersebut. Nilainya hanya berasal dari output perintah sebelumnya, yang tidak pernah diterima pengklasifikasi, sehingga pengklasifikasi tidak dapat memverifikasi target penghapusan terhadap aturan penghapusan lainnya. Blok ini hilang ketika Anda menyebutkan jalur persis yang dihapus, atau ketika Claude menjalankan ulang penghapusan dengan jalur literal yang sudah di-resolve ditulis ke dalam perintah. Penghapusan yang targetnya dapat di-resolve oleh pengklasifikasi tidak terpengaruh.

    Glob langsung di bawah variabel, seperti dalam rm -rf "$VAR"/*, termasuk jalur kritis sebagai gantinya. Target Remove-Item yang berupa * saja atau berakhiran /* atau \* tidak pernah mencapai pengklasifikasi: Claude Code langsung menolaknya.

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

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

  • Meminta kredensial dari endpoint metadata instans cloud, seperti 169.254.169.254, atau secara eksplisit mengautentikasi panggilan cloud, cluster, atau registri dengan identitas akun layanan 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 alih-alih tugas Anda, seperti sertifikat node atau auth registri kontainer milik node
  • Terhubung ke atau memindai kontainer, pod, atau VM lain yang tidak dimulai oleh Claude, atau node di bawah kontainer

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

Claude Code v2.1.261 dan lebih baru juga memblokir 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 Anda menyebutkan layanan itu

Diizinkan secara default:

  • Operasi file lokal di direktori kerja Anda

  • Menginstal dependensi yang dideklarasikan dalam file lock atau manifes Anda

  • Membaca .env dan mengirim kredensial ke API yang sesuai

  • Permintaan HTTP read-only

  • Melakukan push ke branch mana pun dari repositori yang sedang Anda kerjakan, termasuk branch default. Branch non-default yang namanya menandainya sebagai target deploy atau publikasi, seperti production atau gh-pages, tidak tercakup: pengklasifikasi menilai push ke sana secara tersendiri.

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

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

  • Membaca, meninjau, atau menulis kode, konfigurasi, dan model ancaman 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 terpercaya yang Anda daftarkan dalam environment. Ini hanya mencakup aliran data, bukan operasi destruktif atau operasi kredensial pada infrastruktur yang sama

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

Perintah yang di-sandbox tidak mendapatkan akses jaringan secara default. Claude menyebutkan host yang dibutuhkan perintah pada perintah itu sendiri, pengklasifikasi meninjaunya bersama perintah tersebut, dan daftar yang disetujui membuka host tersebut hanya untuk perintah itu saja. Domain yang diizinkan per perintah menjelaskan apa yang dapat dan tidak dapat dibuka oleh daftar tersebut dan apa yang terjadi ketika 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 terpercaya melalui pengaturan autoMode.environment: lihat Konfigurasi auto mode.

Melakukan push ke branch mana pun dari repositori yang sedang Anda kerjakan dan membuat pull request yang sesuai dengan permintaan Anda berjalan tanpa permintaan izin, kecuali 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 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 -p non-interaktif atau sesi latar belakang; pembacaan di sana berjalan seperti sebelumnya.

Apa pun jawaban Anda, Claude terus bekerja:

  • Ya, dan terus izinkan pembacaan apa pun di luar direktori kerja: pembacaan berjalan, pembacaan berikutnya di luar direktori kerja berjalan seperti sebelumnya, dan Claude Code mencatat jawaban Anda sehingga permintaan izin tidak muncul lagi
  • Tidak, dan blokir pembacaan di luar direktori kerja mulai sekarang: pembacaan ditolak, dan Claude Code menetapkan permissions.blockReadsOutsideWorkingDirectories ke true dalam pengaturan pengguna Anda, yang membuat tool file menolak pembacaan semacam itu di setiap sesi berikutnya dan setiap mode izin. Untuk mengizinkan Claude membaca jalur tersebut nanti, tambahkan direktorinya dengan /add-dir atau hapus pengaturan tersebut.
  • Tidak, dan tanyakan lagi lain kali: pembacaan ditolak, dan pembacaan berikutnya di luar direktori kerja akan memunculkan permintaan izin lagi
  • Ya, tetapi tanyakan lagi lain kali: pembacaan berjalan, tidak ada yang disimpan, dan pembacaan berikutnya di luar direktori kerja akan memunculkan permintaan izin lagi

Batasan yang Anda nyatakan dalam percakapan

Pengklasifikasi memperlakukan batasan yang Anda nyatakan dalam percakapan sebagai sinyal blok. Jika Anda memberi tahu Claude "jangan push" atau "tunggu sampai saya meninjau sebelum deploy", pengklasifikasi memblokir tindakan yang cocok bahkan ketika aturan default akan mengizinkannya. Batasan tetap berlaku sampai 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 batasan dapat hilang jika compaction konteks 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 tindakan yang diblokir diizinkan, pengklasifikasi membacanya sebagai persetujuan Anda dan dapat mencabut blok tersebut. Cara Anda merumuskannya menentukan apakah tindakan berjalan, dan seberapa jauh persetujuan tersebut berlaku:

  • Sebutkan tindakan dan detailnya: pesan Anda harus menyebutkan tindakan dan hal spesifik yang membuatnya berbahaya, seperti branch dari force push. Menyebutkan kata kerjanya saja tidak mencabut apa pun, jadi "Anda boleh force-push" membiarkan blok tetap ada.
  • Anggap persetujuan hanya mencakup satu tindakan: persetujuan mencakup tindakan destruktif yang Anda sebutkan, sehingga tindakan berikutnya diblokir lagi kecuali Anda memberikan persetujuan sebagai persetujuan tetap. Agar tidak perlu menyetujui pola rutin satu per satu, tambahkan ke autoMode.allow.
  • Beberapa blok tetap ada: urutan prioritas pengklasifikasi menetapkan blok mana yang dapat dicabut oleh persetujuan Anda. Untuk menjalankan langkah yang tidak akan dicabutnya, keluar dari auto mode dan jawab permintaan izinnya.

Ketika auto mode beralih ke fallback

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

  • Tindakan yang diblokir: Claude Code menampilkan pemberitahuan dan mencantumkan tindakan tersebut dalam /permissions di bawah tab Recently denied, di mana Anda dapat menekan r untuk mencobanya ulang dengan persetujuan manual.
  • Blok berulang: jika pengklasifikasi memblokir tindakan 3 kali berturut-turut atau total 20 kali, auto mode dijeda dan Claude Code kembali menampilkan permintaan izin. Menyetujui tindakan yang diminta akan melanjutkan auto mode. Lihat Ambang blok berulang untuk cara blok dihitung.
  • Tidak ada vonis dari pengklasifikasi: ketika pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan milik pengklasifikasi sendiri, atau respons pengklasifikasi tidak dapat diurai, Claude Code menolak tindakan tanpa pemberitahuan atau entri Recently denied. Lihat Auto mode tidak dapat menentukan keamanan suatu tindakan untuk pesan yang ditampilkan setiap kasus dan apa yang harus dilakukan.
  • Tidak ada vonis dari server: dalam tinjauan pengklasifikasi di sisi server, Claude Code menolak tindakan yang tidak diberi vonis oleh server, dan menghentikan giliran setelah sepuluh respons berturut-turut tanpa vonis. Lihat Server tidak mengembalikan vonis keamanan.
  • Beralih mode selama pemeriksaan: jika Anda beralih mode izin saat pemeriksaan pengklasifikasi sedang tertunda, Claude Code membuang vonis yang tidak akan diminta oleh mode baru. Anda akan diminta memberikan persetujuan sebagai gantinya, atau tindakan ditolak otomatis dalam mode dontAsk.

Ambang blok berulang

Ambang 3 blok berturut-turut dan total 20 blok tidak dapat dikonfigurasi. Penghitung total bertahan sepanjang sesi dan direset hanya ketika batasnya sendiri memicu fallback. Claude Code tidak menghitung penolakan terhadap ambang mana pun ketika pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan milik pengklasifikasi sendiri.

Eksekusi -p non-interaktif tanpa --permission-prompt-tool tidak memiliki permintaan izin untuk dijadikan fallback. Ketika blok berulang mencapai ambang, tindakan tidak dijalankan dan Claude terus bekerja. Claude Code tidak menghentikan eksekusi.

Blok berulang biasanya berarti pengklasifikasi kekurangan konteks tentang infrastruktur Anda. Gunakan /feedback untuk melaporkan positif palsu, atau minta administrator mengonfigurasi infrastruktur terpercaya.

Bagaimana auto mode mengevaluasi tindakan

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

[accordion] Bagaimana pengklasifikasi mengevaluasi tindakan

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

  1. Tindakan yang cocok dengan aturan allow, ask, atau deny Anda langsung diselesaikan, dengan pengecualian berikut:
    • Penulisan ke jalur yang dilindungi diarahkan ke pengklasifikasi meskipun ada aturan allow yang cocok. Ketika jalur yang dilindungi tersebut adalah file yang dituju oleh file pengaturan berupa symlink, penulisan tersebut dapat meminta persetujuan Anda, sebagaimana dijelaskan dalam daftar jalur yang dilindungi
    • Tidak ada aturan allow yang menyetujui penghapusan jalur kritis yang dikenali oleh rm dan rmdir
    • Tool MCP yang ditandai requiresUserInteraction langsung meminta persetujuan Anda meskipun ada aturan allow yang cocok, begitu pula tool konektor yang diatur organisasi Anda ke ask dalam sesi di mana pengaturan tersebut berlaku untuk Claude Code
    • Perintah shell yang membawa domain yang diizinkan per perintah juga diarahkan ke pengklasifikasi meskipun ada aturan allow yang cocok, karena aturan menyetujui perintahnya, bukan host-nya
    • Aturan ask yang mencocokkan isi perintah, seperti Bash(git push *), beralih ke permintaan izin
    • Penulisan yang oleh pemeriksaan symlink diselesaikan ke jalur yang dilindungi akan meminta persetujuan Anda ketika jalur yang diminta Claude itu sendiri tidak dilindungi
    • Pembacaan dari jalur jaringan meminta persetujuan Anda meskipun ada aturan allow yang 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 persetujuan 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 persetujuan Anda pada langkah 1 juga tidak pernah mencapai pengklasifikasi, sehingga baik persetujuan yang diwajibkan organisasi maupun langkah persetujuan pengguna tidak disetujui secara otomatis
  4. Jika pengklasifikasi memblokir, Claude menerima alasannya. Di sebagian besar sesi, alasan tersebut menyebutkan aturan yang dicocokkan oleh pengklasifikasi, seperti [Data Exfiltration], alih-alih memberikan penjelasan tertulis; lihat Meninjau penolakan

Mod yang Anda instal yang menangani tool.check juga dapat menyetujui suatu tindakan. Untuk kasus di mana persetujuannya tidak dapat 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 dihapus:

  • Bash(*) atau PowerShell(*) menyeluruh
  • Interpreter dengan wildcard seperti Bash(python*)
  • Perintah run pengelola paket
  • 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 cocok dengan seluruh tool menyetujui perintah Monitor tanpa tinjauan 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 tidak dilacak. Claude Code melaporkan file yang tidak dilacak dalam pemeriksaan itu bahkan ketika konfigurasi git repositori menetapkan 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, dan konten CLAUDE.md Anda. Hasil tool dihapus dari permintaan tersebut, sehingga konten bermusuhan dalam file atau halaman web tidak dapat memanipulasi pengklasifikasi secara langsung.

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

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

[accordion] Bagaimana auto mode menangani subagent

Pengklasifikasi memeriksa pekerjaan subagent di tiga titik:

  1. Sebelum subagent dimulai, deskripsi tugas yang didelegasikan dievaluasi, sehingga tugas yang tampak berbahaya diblokir pada saat spawn.
  2. Saat subagent berjalan, setiap tindakannya melalui urutan keputusan yang sama seperti dalam sesi induk, dengan aturan blok dan allow yang sama. permissionMode apa pun dalam frontmatter subagent diabaikan.
  3. Ketika subagent selesai, pengklasifikasi meninjau pekerjaannya dan laporan akhirnya sebelum induk membaca laporan tersebut. Ketika pengklasifikasi menandai pekerjaan atau laporan subagent, atau pemeriksaan keamanan API yang terpisah menolak tinjauan tersebut, laporan tetap disampaikan, diawali dengan peringatan keamanan. Ketika pengklasifikasi tidak tersedia untuk tinjauan, 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 mana 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 mengirim sebagian transkrip ditambah tindakan yang tertunda, sehingga menambah satu perjalanan bolak-balik 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. Ketika server meninjau tindakan sebagai bagian dari permintaan model sesi, tidak ada panggilan pengklasifikasi terpisah yang dihitung; lihat Tinjauan pengklasifikasi di sisi server.

Akses jaringan yang di-sandbox tidak menambahkan permintaan pengklasifikasi per koneksi. Pengklasifikasi menilai host yang disebutkan oleh perintah bersama dengan perintah tersebut dalam satu tinjauan, 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.

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

Penulisan ke serangkaian jalur kecil tidak pernah disetujui otomatis, kecuali dalam mode bypassPermissions dan dalam sesi terminal interaktif mode plan dengan bypass permissions tersedia. Ini mencegah kerusakan yang tidak disengaja dari status repositori dan konfigurasi Claude sendiri.

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
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.

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
  • 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