SpyBara
Go Premium

permission-modes.md 2026-10-01 23:59 UTC to 2026-10-02 16:01 UTC

This page contains 149 additions and 140 deletions.

2026
Thu 1 23:59 Fri 2 16:57

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, mode auto 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, dan Team. Mode mana yang dimulai sesi mencakup permukaan 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 Membaca dan alat yang telah disetujui sebelumnya; apa pun yang akan meminta izin ditolak 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 hooks dan integrasi SDK. CLI menerima manual sebagai alias di mana pun Anda mengetik nilainya, misalnya claude --permission-mode manual atau "defaultMode": "manual". Label Manual dan alias manual memerlukan Claude Code v2.1.200 atau lebih baru. Label aplikasi desktop tidak bergantung pada versi CLI Anda.

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 ada mode yang disetujui otomatis

Claude Code tidak secara otomatis menyetujui hal-hal berikut di mode apa pun, termasuk 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 rm dan rmdir yang menargetkan jalur kritis, yang tidak ada aturan allow atau hook PreToolUse "allow" yang menyetujui

  • 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. 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 dalam sesi yang mengambil flag fitur. Dalam sesi yang tidak, seperti pada penyedia pihak ketiga atau dengan telemetri mati, auto dengan Claude Code v2.1.285 atau lebih baru dan default pada versi sebelumnya. Sesi dalam organisasi yang kebijakannya menahan default auto dimulai dalam default sebagai gantinya
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, atau Team dalam sesi yang mengambil flag fitur, dan default sebaliknya

Dalam sesi pertama Anda setelah instalasi atau upgrade, Claude Code dapat memilih mode izin awal sebelum flag fiturnya tiba. Sesi itu dapat dimulai dalam mode izin yang berbeda dari yang diberikan tabel, dan sesi berikutnya Anda cocok dengan tabel.

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

Pertama kali default bawaan memulai salah satu sesi Anda dalam mode auto, 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, dan Team, dan dalam sesi yang tidak mengambil flag fitur, Claude Code meminta sekali, di terminal atau di ekstensi VS Code, apakah akan mengubah pengaturan ke mode auto. Jika Anda menolak, pengaturan Anda tetap seperti adanya.

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, preseden 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 mode auto; untuk apa yang dibaca ekstensi VS Code, lihat Alihkan mode izin. Untuk menghapus mode auto 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.

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.

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.

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. Perintah ini juga auto-approved ketika diawali dengan variabel lingkungan 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.

Setiap jalur juga melalui pemeriksaan symlink, jadi penulisan yang diselesaikan di luar cakupan itu tidak auto-approved juga. Jalur di luar cakupan itu, penulisan ke jalur yang dilindungi, penghapusan rm dan rmdir yang menargetkan jalur kritis, dan semua perintah Bash lainnya kecuali set bawaan read-only masih meminta.

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 Anda mengedit dengan Plan Mode

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

Apa yang terjadi pada perintah shell selama perencanaan tergantung pada sesi, dan yang pertama dari kasus-kasus ini yang cocok berlaku:

  • Sesi terminal interaktif dengan bypass permissions tersedia: baik pengklasifikasi maupun prompt tidak berlaku untuk perintah perencanaan. Lewati semua pemeriksaan dengan bypassPermissions mode mencakup beberapa hal yang masih meminta di sana.
  • Auto mode tersedia dan pengaturan useAutoModeDuringPlan aktif, yang merupakan default: pengklasifikasi meninjau perintah shell selain critical-path removals alih-alih meminta Anda. Perintah yang disetujui berjalan, dan yang ditolak diblokir.
  • Auto mode tidak tersedia, atau useAutoModeDuringPlan mati: perintah di luar set bawaan read-only meminta persetujuan, termasuk ketika auto-allow mode sandbox diaktifkan.

Masukkan Plan Mode dengan menekan Shift+Tab atau mengawali prompt tunggal dengan /plan. Anda juga dapat memulai dalam Plan Mode dari CLI:

claude --permission-mode plan

Tekan Shift+Tab lagi untuk meninggalkan Plan Mode tanpa menyetujui rencana.

Tinjau dan setujui rencana

Ketika rencana siap, Claude menyajikannya dan menanyakan cara melanjutkan. Dari prompt itu Anda dapat memilih:

  • Ya, dan gunakan auto mode: setujui dan mulai dalam auto mode. Jika auto mode tidak tersedia untuk sesi Anda, misalnya karena organisasi Anda mematikannya, opsi ini berbunyi Ya, auto-accept edits. Jika Anda memulai sesi dengan bypass permissions diaktifkan, opsi berbunyi Ya, dan beralih ke BYPASS PERMISSIONS (tidak ada prompt lebih lanjut) untuk sesi ini sebagai gantinya.
  • Ya, secara manual setujui pengeditan: setujui dan tinjau setiap pengeditan secara individual.
  • Tidak, terus merencanakan: tetap dalam Plan Mode dan beri tahu Claude apa yang harus diubah.

Menyetujui rencana keluar dari Plan Mode dan mengalihkan sesi ke mode izin yang dijelaskan setiap opsi persetujuan, sehingga Claude mulai mengedit. Untuk merencanakan lagi, siklus kembali ke Plan Mode dengan Shift+Tab, atau awali prompt berikutnya dengan /plan.

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

Menerima rencana juga memberi sesi judul yang dihasilkan berdasarkan rencana, kecuali Anda telah menamai sesi.

Atur Plan Mode sebagai default

Untuk membuat Plan Mode default untuk sesi terminal proyek, atur defaultMode ke plan dalam .claude/settings.json, ditempatkan seperti contoh di bawah Mulai dalam mode izin yang berbeda menunjukkan. Percakapan yang dimulai ekstensi VS Code tidak membaca pengaturan proyek untuk mode izin awal. Di sana, atur claudeCode.initialPermissionMode ke plan dalam 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, 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 rm dan rmdir yang menargetkan jalur kritis, 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.

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, 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, dan model Fable. Model yang lebih lama, termasuk Sonnet 4.5, Opus 4.5, Haiku, 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. Ketika tidak ada hal lain yang menetapkan mode izin, ini juga merupakan mode izin awal bawaan, pada versi yang tercantum dalam tabel di bagian tersebut. Untuk memilih mode izin awal sendiri, atur permissions.defaultMode seperti yang dijelaskan Mulai dalam mode izin yang berbeda, atau pilih mode izin dari indikator mode ekstensi VS Code.

Hanya Claude Sonnet 5 atau lebih baru, Opus 4.7 atau lebih baru, dan model Fable yang didukung pada penyedia ini. Pada model lain apa pun, sesi dimulai dalam Manual sebagai gantinya.

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.

Dalam v2.1.158 hingga v2.1.206, auto mode dimatikan pada penyedia ini sampai Anda menetapkan CLAUDE_CODE_ENABLE_AUTO_MODE=1, dan Claude Code mengabaikan defaultMode: "auto" pada penyedia ini kecuali variabel tersebut juga ditetapkan. Variabel ini masih diterima untuk kompatibilitas dan tidak berpengaruh mulai v2.1.207.

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. Dalam sesi terminal interaktif, ini memerlukan Claude Code v2.1.271 atau lebih baru pada paket Pro, Max, dan Team, dan v2.1.278 atau lebih baru pada paket Enterprise dan akun Claude API. Dalam sesi -p, Agent SDK, ekstensi VS Code, dan aplikasi desktop, ini 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

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.

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. Sebelum v2.1.200, remote yang ditambahkan di tengah sesi juga dipercaya.

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. Sebelum v2.1.211, pemeriksaan ini dibatasi pada branch default: push ke sana diblokir ketika membawa konten sensitif, perubahan yang disembunyikan atau dideskripsikan secara keliru dibandingkan dengan apa yang Anda minta, konten yang dibawa dari luar repositori, atau melewati tinjauan yang Anda minta
  • 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, atau menyalin data keluar darinya. Mulai v2.1.198 ini juga memblokir pengiriman data dari lokasi tersebut ke audiens yang dikecualikan oleh entri tersebut
  • Mengarahkan instalasi paket melewati registri paket internal Anda ke registri publik. Mulai v2.1.198, ini juga berlaku ketika Anda telah memberi tahu Claude dalam percakapan bahwa ada registri internal atau mirror, bukan hanya ketika registri tersebut tercantum dalam environment Anda
  • 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. Mulai v2.1.198 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

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.198 dan lebih baru juga memblokir hal berikut secara default:

  • 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. Pembatasan untuk PR, issue, dan pesan commit memerlukan Claude Code v2.1.200 atau lebih baru. 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. Pemeriksaan itu memerlukan Claude Code v2.1.203 atau lebih baru
  • Mengirim keystroke ke pane tmux milik Claude Code sendiri untuk mengendalikan antarmukanya sendiri, yang diperlakukan pengklasifikasi sebagai Claude mengubah izin atau pengawasannya sendiri

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

  • 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; kedua penyempurnaan tersebut memerlukan Claude Code v2.1.203 atau lebih baru. Sebelum v2.1.203, data pribadi dikelompokkan bersama materi rahasia dan diblokir hanya ketika bukan bagian dari pekerjaan repositori itu sendiri. 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

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

  • 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

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

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

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, aturan permissions.deny tetap dapat memblokir perintah push sebagaimana ditulis dalam setiap mode, dan proteksi branch milik remote itu sendiri tetap berlaku. Sebelum v2.1.211, hanya push ke branch tempat Anda memulai, branch yang dibuat Claude, dan push rutin ke branch default yang diizinkan secara default, dan sebelum v2.1.203 setiap push langsung ke branch default diblokir
  • 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 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.

Setiap tindakan melalui urutan keputusan yang tetap. Langkah pertama yang cocok yang menentukan:
1. Tindakan yang cocok dengan [aturan allow, ask, atau deny](/docs/id/permissions#manage-permissions) Anda langsung diselesaikan, dengan pengecualian berikut:
   * Penulisan ke [jalur yang dilindungi](#protected-paths) diarahkan ke pengklasifikasi bahkan ketika aturan allow cocok
   * Tidak ada aturan allow yang menyetujui penghapusan `rm` dan `rmdir` yang menargetkan [jalur kritis](#critical-paths)
   * Tool MCP yang ditandai [`requiresUserInteraction`](/docs/id/mcp#require-approval-for-a-specific-tool) langsung meminta persetujuan Anda bahkan ketika aturan allow cocok, begitu pula tool konektor yang [diatur organisasi Anda ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools) dalam sesi di mana pengaturan itu mencapai Claude Code
   * Perintah shell yang membawa [domain yang diizinkan per perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode) juga diarahkan ke pengklasifikasi bahkan ketika aturan allow cocok, karena aturan menyetujui perintahnya, bukan host-nya
   * Aturan ask yang mencocokkan konten perintah, seperti `Bash(git push *)`, beralih ke permintaan izin
   * Penulisan yang di-resolve oleh [pemeriksaan symlink](/docs/id/permissions#symlinks) ke jalur yang dilindungi akan meminta persetujuan Anda ketika jalur yang diminta Claude sendiri tidak dilindungi
2. Tindakan read-only dan pengeditan file di direktori kerja Anda disetujui otomatis, kecuali penulisan ke [jalur yang dilindungi](#protected-paths) dan [pembacaan pertama di luar direktori kerja](#first-read-outside-the-working-directories), yang meminta persetujuan Anda
   * Dalam sesi dengan [tinjauan pengklasifikasi di sisi server](#server-side-classifier-review), perintah shell read-only dan yang [di-sandbox](/docs/id/sandboxing#sandbox-modes) menunggu tinjauan itu dan diblokir jika tinjauan menandainya
   * Penulisan di dalam direktori kerja Anda yang di-resolve oleh [pemeriksaan symlink](/docs/id/permissions#symlinks) ke lokasi di luarnya akan meminta persetujuan Anda
   * Ketika Claude membaca [artifact yang dibuat orang lain](/docs/id/artifacts#read-an-artifact-shared-with-you), kasus persetujuan yang tercantum di bagian tersebut berlaku
3. Semua hal lain dikirim ke pengklasifikasi, kecuali [penghapusan jalur kritis](#critical-paths) dengan penanganan default-nya. Tool konektor dan tool MCP `requiresUserInteraction` yang langsung meminta persetujuan Anda di langkah 1 juga tidak pernah mencapai pengklasifikasi, sehingga baik persetujuan yang diwajibkan organisasi maupun langkah persetujuan tidak disetujui otomatis
4. Jika pengklasifikasi memblokir, Claude menerima alasannya. Dalam sebagian besar sesi, alasan tersebut menyebutkan aturan yang dicocokkan pengklasifikasi, seperti `[Data Exfiltration]`, alih-alih memberikan penjelasan tertulis; lihat [Tinjau penolakan](/docs/id/auto-mode-config#review-denials)

[Mod](/docs/id/plugins/mods/overview) yang Anda instal yang menangani `tool.check` dapat menyetujui tindakan sebelum langkah 3, dan pengklasifikasi tidak memeriksa tindakan yang disetujui mod tersebut. Lihat [Perluas izin dengan hook](/docs/id/permissions#extend-permissions-with-hooks).

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`](/docs/id/tools-reference#monitor-tool), 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](/docs/id/hooks#annotate-a-result-for-the-auto-mode-classifier), 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](https://claude.com/blog/auto-mode) dan [pembahasan mendalam dari tim engineering](https://www.anthropic.com/engineering/claude-code-auto-mode).
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.
Biaya dan latensi

Pengklasifikasi berjalan pada Claude Sonnet 5 secara default, bukan pada pilihan /model Anda. Model pengklasifikasi yang dikonfigurasi Anthropic di sisi server diutamakan daripada default tersebut. Ketika model sesi Anda adalah Claude Sonnet 4.6, atau ketika availableModels mengecualikan Sonnet 5, pengklasifikasi berjalan pada model sesi sebagai gantinya, atau pada model Opus ketika sesi berjalan pada model Fable. Pada penyedia selain Anthropic API, fallback Opus tersebut adalah model yang Anda tetapkan dalam ANTHROPIC_DEFAULT_OPUS_MODEL, atau Opus 5 jika Anda belum menetapkannya.

Permintaan auto mode pertama dalam sesi memvalidasi default Sonnet 5: jika permintaan berhasil, Sonnet 5 tetap menjadi model pengklasifikasi sesi, dan jika gagal karena model tidak tersedia, sesi menggunakan fallback sebagai gantinya.

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 alat yang akan meminta sebaliknya. Claude masih menjalankan tindakan yang tidak memerlukan persetujuan dalam mode Manual, seperti pembacaan file di dalam direktori kerja Anda dan perintah Bash read-only, ditambah tindakan yang cocok dengan aturan permissions.allow Anda dan panggilan yang disetujui oleh hook PreToolUse. Gunakan mode ini untuk pipeline CI atau lingkungan terbatas di mana Anda pre-define apa yang Claude boleh lakukan; 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. Ini juga menolak alat AskUserQuestion bawaan bahkan jika aturan allow Anda cocok dengannya, dan melakukan hal yang sama untuk alat konektor organisasi Anda atur ke ask dalam sesi di mana pengaturan itu mencapai Claude Code. Ini menolak alat MCP yang ditandai _meta["anthropic/requiresUserInteraction"] dengan cara yang sama, karena kartu persetujuan mereka memerlukan jawaban yang mode ini tidak pernah kumpulkan; ini memerlukan Claude Code v2.1.199 atau lebih baru.

Penghapusan rm dan rmdir yang menargetkan jalur kritis, seperti rm -rf / dan rm -rf ~, ditolak bahkan ketika aturan allow cocok dengannya atau hook PreToolUse memungkinkannya.

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.

Tindakan yang tidak ada mode auto-approve masih meminta dalam mode ini. Membaca artifact publik organisasi lain memerlukan persetujuan Anda, dan mode ini tidak memintanya, sehingga Claude tidak dapat membacanya. Remove-Item di PowerShell penolakan 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 mode rencana. 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 rm dan rmdir yang menargetkan jalur kritis 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.

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, dan sesi latar belakang yang dimulai dengan --bg ditolak sampai Anda telah menerima dialog dalam sesi interaktif.

Di Linux dan macOS, Claude Code menolak untuk memulai dalam mode ini 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.

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, kecuali untuk .claude/worktrees di mana Claude menyimpan git worktrees-nya sendiri
  • Direktori yang Anda muat dengan --plugin-dir, karena Claude Code memuat ulang dan menjalankan kode mod dari sana ketika file berubah

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

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 tidak pernah membiarkan aturan permissions.allow atau hook PreToolUse yang mengembalikan "allow" menyetujui perintah rm atau rmdir yang menargetkan jalur kritis, bahkan dalam mode yang melewati prompt lain. Pemutus sirkuit ini menjaga terhadap kesalahan model. Aturan deny yang cocok masih memblokir perintah sepenuhnya.

Apa yang terjadi sebagai gantinya 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
  • Akar drive Windows dan direktori tingkat atas mereka, seperti C:\ dan C:\Windows
  • 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

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

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: Claude Code memeriksa skrip yang dilewatkan ke shell seperti sh -c atau bash -c untuk variabel shell dan parameter posisional target.
    • 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.

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.

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 Meminta Anda untuk menyetujuinya, dengan batas waktu di terminal

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.

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.

Dalam mode auto, di mana pun Claude Code tidak dapat menampilkan prompt terminal kepada Anda, itu menolak perintah segera, misalnya dalam run non-interaktif dengan -p, dalam sesi Agent SDK, dan dalam panel chat ekstensi VS Code dan aplikasi Desktop. Penolakan memberi tahu Claude untuk melaporkan apa yang ingin dihapus dan membiarkan penghapusan kepada Anda.

Penanganan auto dan bypassPermissions memerlukan Claude Code v2.1.281 atau lebih baru. Untuk mematikannya, atur CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT=1 dalam lingkungan yang meluncurkan Claude Code. Dalam mode auto, penghapusan jalur kritis kemudian pergi ke pengklasifikasi sebagai gantinya, dan dalam mode bypassPermissions prompt tidak memiliki batas waktu.

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