Claude Code terus meminta izin? Atasi tanpa --dangerously-skip-permissions

Menyetujui npm test untuk keempat puluh kalinya hanyalah gangguan. Claude Code punya semua yang Anda butuhkan untuk membungkam prompt yang membosankan dan mempertahankan yang berbahaya. Hanya saja, semuanya tersebar di tiga file dan enam mode.

Oleh Aslan, tim Pet Island · Diperbarui 26 Okt 2026 · 5 menit baca

JAWABAN SINGKAT

Masukkan perintah yang selalu Anda setujui ke permissions.allow (misalnya Bash(npm run *)), perintah yang harus selalu berhenti ke ask atau deny, lalu pilih mode izin yang sesuai dengan tugasnya: acceptEdits untuk banyak pengeditan, auto untuk pekerjaan rutin, plan untuk membaca. Aturan dicek dengan urutan deny → ask → allow, sehingga deny tidak pernah bisa ditimpa. Gunakan /permissions untuk melihat asal setiap aturan. Pakai --dangerously-skip-permissions hanya untuk container sekali pakai.

Mengapa Claude Code begitu sering bertanya

Dalam mode default (berlabel Manual di CLI), Claude Code menampilkan prompt saat pertama kali memakai setiap alat, dan bertanya lagi untuk setiap perintah shell yang belum diizinkan. Prompt adalah momen ketika Anda bisa menghentikan rm yang salah atau git push yang tidak disengaja, jadi layak dipertahankan. Masalahnya, prompt itu juga muncul untuk ratusan hal tidak berbahaya yang dilakukan agen dalam satu sesi.

Tiga hal menentukan apakah Anda melihat prompt: aturan di file pengaturan Anda, mode izin yang sedang aktif, dan jawaban yang sebelumnya Anda berikan dengan “Yes, and don’t ask again”. Untuk mengurangi gangguan, Anda perlu menyetel ketiganya.

Claude Code v2.1.283 dan yang lebih baru memulai sesi terminal interaktif dan VS Code dalam mode auto, di semua paket dan penyedia. Dalam mode auto, sebuah classifier di latar belakang mencocokkan perintah dan permintaan jaringan dengan apa yang Anda minta, alih-alih menampilkan prompt untuk tindakan rutin. Jika Anda masih melihat prompt untuk semuanya, cek bilah status: “⏸ manual mode on” berarti Anda berada dalam mode default.

Aturan allow, ask, dan deny

Aturan berada di bawah permissions dalam file pengaturan. Contoh ini diambil langsung dari referensi pengaturan Anthropic:

~/.claude/settings.jsonSalin
{
"permissions": {
"allow": ["Bash(npm run *)"],
"ask": ["Bash(git push *)"],
"deny": ["Read(./.env)"],
"defaultMode": "acceptEdits"
}
}
  • allow: berjalan tanpa bertanya.
  • ask: selalu bertanya, bahkan dalam mode yang biasanya akan menyetujuinya.
  • deny: tidak pernah berjalan.

Urutannya adalah bagian terpenting: deny, lalu ask, lalu allow. Kecocokan pertama yang menang, dan tingkat kespesifikan tidak mengubah urutan. Aturan allow tidak bisa membuat pengecualian dari aturan deny, dan jika sebuah alat ditolak di tingkat mana pun, tidak ada tingkat lain yang bisa mengizinkannya. Aturan ditegakkan oleh Claude Code sendiri, bukan oleh model, jadi menulis “never push” di CLAUDE.md tidak sama efeknya dengan aturan deny.

Cara menulis aturan

AturanYang dicocokkan
Bash(npm run *)npm run build, npm run test --watch, tetapi bukan npm install
Bash(git log *)Hanya git log …. Bandingkan dengan Bash(git *), yang mengizinkan semua perintah git.
Bash(ls:*)Sama dengan Bash(ls *): :* adalah cara lain untuk menulis wildcard di akhir
Read(./.env)Membaca file tersebut. Aturan Read dan Edit memakai pola gitignore
Edit(//Users/alice/notes/**)Path absolut. Satu / di awal bersifat relatif terhadap file pengaturan, jadi path absolut memerlukan //
WebFetch(domain:example.com)Hanya example.com. Tambahkan WebFetch(domain:*.example.com) untuk subdomain
mcp__github__*Semua alat dari server MCP github. Aturan dengan tanda kurung setelah mcp__ dilewati

Di Windows, aturan PowerShell memakai bentuk yang sama dengan aturan Bash.

File pengaturan mana yang dipakai

CakupanFileGunakan untuk
Pengguna~/.claude/settings.json (Windows: %USERPROFILE%\.claude\settings.json)Kebiasaan Anda sendiri, di setiap proyek
Proyek, bersama.claude/settings.jsonAturan yang harus didapat seluruh tim (commit file ini)
Proyek, lokal.claude/settings.local.jsonAturan pribadi Anda untuk satu repo (tidak di-commit)
Terkelolamanaged-settings.json dan sumber terkelola lainnyaKebijakan perusahaan; tidak ada yang bisa menimpanya

Prioritas, dari yang tertinggi: terkelola, baris perintah, proyek lokal, proyek bersama, pengguna. Kunci berupa daftar seperti permissions.allow digabungkan antar-file, bukan diganti. Ada dua detail yang sering menjebak:

  • File pengaturan adalah JSON ketat: komentar // atau koma di akhir merupakan kesalahan sintaks, dan seluruh file diabaikan.
  • Aturan allow di file proyek bersama baru berlaku setelah setiap rekan tim memercayai folder tersebut. Aturan deny dan ask langsung berlaku.

Sebagian besar perubahan langsung berlaku pada sesi yang sedang berjalan tanpa restart, termasuk permissions dan hooks. Untuk melihat apa yang benar-benar dimuat, jalankan /status (baris Setting sources) atau /permissions, yang menampilkan setiap aturan beserta file asalnya.

Apa yang sebenarnya disimpan oleh “Yes, and don’t ask again”

Menjawab prompt dengan “don’t ask again” akan menuliskan aturan untuk Anda di .claude/settings.local.json di root repositori git. Berapa lama aturan itu berlaku bergantung pada alatnya:

AlatDiingat
Perintah BashPermanen, per repositori dan perintah
Pengeditan fileSampai sesi berakhir
WebFetchPermanen, per repositori dan domain

Jadi, jika Claude terus meminta izin untuk mengedit file di setiap sesi baru, itu memang disengaja: persetujuan pengeditan file berlaku per sesi. Sebagai gantinya, gunakan mode acceptEdits atau aturan allow Edit(...). Dan jika sebuah perintah terus bertanya bahkan setelah “don’t ask again”, cari aturan ask di file proyek atau file terkelola. Aturan allow di file lokal Anda tidak mengalahkannya.

Mode izin, dan kapan memakai masing-masing

ModeFungsinyaCocok untuk
default (Manual)Menampilkan prompt saat setiap alat pertama kali dipakaiRepo yang belum dikenal, pekerjaan berisiko
acceptEditsMenerima pengeditan file tanpa bertanyaRefactor panjang yang akan Anda tinjau di git
planMembaca dan merencanakan, tidak mengubah apa punMenjelajahi codebase, merancang perubahan
autoTanpa prompt rutin; classifier mengecek perintah dan permintaan jaringan terlebih dahuluPekerjaan sehari-hari
dontAskTidak menampilkan promptSkrip dan otomatisasi
bypassPermissionsMelewati prompt, termasuk penulisan ke .git dan .claudeHanya untuk container atau VM yang terisolasi

Tekan Shift+Tab untuk berpindah mode. Dari auto, tekanan pertama menuju default, lalu default → acceptEdits → plan. Tetapkan mode awal dengan permissions.defaultMode; perhatikan bahwa auto dan bypassPermissions hanya berlaku dari pengaturan pengguna atau pengaturan terkelola, bukan dari file proyek.

Beberapa hal selalu menampilkan prompt di setiap mode, termasuk bypass, antara lain aturan ask yang eksplisit, pertanyaan yang diajukan Claude kepada Anda, dan rm pada path penting. Admin dapat menonaktifkan mode berisiko dengan permissions.disableBypassPermissionsMode atau permissions.disableAutoMode yang disetel ke "disable".

Tentang --dangerously-skip-permissions

--dangerously-skip-permissions sama dengan --permission-mode bypassPermissions. Dokumentasi Anthropic menyatakannya dengan lugas: gunakan hanya di lingkungan terisolasi seperti container, VM, atau dev container tanpa akses internet. Opsi ini menolak berjalan sebagai root di Linux dan macOS, dan setelah Anda menerima peringatannya, opsi ini menyetel skipDangerousModePermissionPrompt di pengaturan pengguna Anda.

Jika yang sebenarnya Anda inginkan adalah “berhenti bertanya soal hal-hal membosankan”, mode auto ditambah beberapa aturan allow sudah cukup, tanpa mengorbankan prompt yang penting.

Sandbox: lebih sedikit prompt dengan jaring pengaman

Claude Code dapat menjalankan perintah shell di dalam sandbox. Sandbox nonaktif secara default; aktifkan dengan /sandbox atau sandbox.enabled: true. Satu mode sandbox menyetujui perintah dalam sandbox secara otomatis, mode lainnya tetap bertanya. Sandbox hanya mencakup perintah shell: alat file, server MCP, dan hook berjalan di luarnya.

Sandbox berjalan di macOS, Linux, dan WSL2. Di Windows native, sandbox tidak berjalan, dan perintah berjalan tanpa sandbox. Itu satu alasan lagi untuk mempertahankan daftar ask yang singkat di sana.

Konfigurasi yang terbukti berfungsi

Ini titik awal yang masuk akal untuk proyek JavaScript. Sesuaikan perintahnya dengan stack Anda:

~/.claude/settings.jsonSalin
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(npx tsc *)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)"
],
"ask": [
"Bash(git push *)",
"Bash(npm publish *)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)"
]
}
}
  1. Mulailah dengan allow list berisi perintah read-only dan perintah pengujian.
  2. Masukkan semua yang keluar dari mesin Anda (push, publish, deploy) ke ask.
  3. Tolak akses ke secret sepenuhnya.
  4. Bekerjalah dalam mode auto atau acceptEdits, dan beralihlah ke mode plan saat Anda sedang menjelajah.
  5. Setiap beberapa hari, buka .claude/settings.local.json dan pangkas aturan yang ditambahkan oleh “don’t ask again”.

Saat prompt yang tersisa muncul di tempat yang salah

Setelah penyetelan, Anda seharusnya hanya ditanya tentang hal-hal yang memang perlu diputuskan. Masalah yang tersisa adalah di mana pertanyaan itu muncul: di tab terminal di balik browser Anda, tempat agen bisa menunggu dua puluh menit sebelum Anda menyadarinya.

Pet Island memindahkan pertanyaan-pertanyaan itu ke sebuah island kecil di bagian atas layar Anda. Saat Claude Code memerlukan izin, permintaannya muncul di sana beserta perintah atau diff-nya, dan Anda bisa mengizinkan, menolak, atau selalu mengizinkannya tanpa berpindah jendela. Pertanyaan dan rencana dari Claude Code juga bisa ditangani dari island, dan jika island ditutup, Claude Code cukup kembali bertanya di terminal.

FAQ

Bagaimana cara menghentikan Claude Code agar tidak meminta izin untuk setiap perintah?

Tambahkan perintah yang Anda percayai ke permissions.allow di ~/.claude/settings.json, misalnya "Bash(npm run *)", lalu gunakan mode auto atau acceptEdits. Simpan perintah berisiko di permissions.ask agar tetap berhenti.

Mengapa Claude Code kembali meminta izin untuk pengeditan file setelah saya memilih don’t ask again?

Persetujuan pengeditan file hanya berlaku sampai sesi berakhir. Gunakan mode acceptEdits atau aturan allow Edit(...) jika Anda ingin pengeditan disetujui lintas sesi.

Bisakah aturan allow menimpa aturan deny?

Tidak. Aturan dicek dengan urutan deny, lalu ask, lalu allow, dan kecocokan pertama yang menang. Alat yang ditolak di tingkat mana pun tidak bisa diizinkan di tempat lain.

Apakah --dangerously-skip-permissions aman?

Anthropic merekomendasikannya hanya di lingkungan terisolasi seperti container atau VM tanpa akses internet. Opsi ini juga melewati prompt untuk penulisan ke .git dan .claude.

Di mana “Yes, and don’t ask again” menyimpan aturannya?

Di .claude/settings.local.json di root repositori git.

Apakah sandbox Claude Code berfungsi di Windows?

Tidak di Windows native; perintah berjalan tanpa sandbox di sana. Sandbox berjalan di macOS, Linux, dan WSL2.

Sumber

Setiap pengaturan dan perilaku di halaman ini telah dicocokkan dengan halaman-halaman berikut pada 26 Oktober 2026. Agen berubah dengan cepat; jika ada yang tidak lagi sesuai, halaman resmi yang berlaku.

BACA JUGA

Jawab setiap agen dari bagian atas layar Anda.

Windows dan Mac · Gratis 7 hari, lalu $8.99 sekali bayar · $1 dari setiap penjualan memberi makan hewan jalanan

Coba Pet Island gratis