7 aturan Claude Code untuk membatasi pengeluaran agen otonom pada 2026
Markdown7 aturan untuk menetapkan batas di Claude Code agar agen otonom tidak membuat Anda bangkrut: batas penyedia, Task Budgets, hooks, daftar izin, kill switch, kunci sandbox, dan batas iterasi.
Baca artikel lengkap
Poin utama
Agen otonom dengan akses cloud tanpa batas bisa menghasilkan tagihan besar dalam semalam. Saya menguraikan 7 aturan Claude Code yang dapat Anda terapkan dalam satu malam untuk mencegah kegagalan seperti ini.
Pelajari cara menggunakan layanan ini dalam dokumentasi Ailoot.
Ke mana uang pergi: 3 kategori pengeluaran untuk agen otonom
Poin utama
Untuk apa agen otonom membelanjakan uang Anda? Melalui tiga jalur terpisah: token di Anthropic/OpenAI, sumber daya cloud (AWS/GCP/Yandex Cloud), dan tindakan berbayar di API pihak ketiga (tagihan Stripe, gateway SMS, Twilio, bot Telegram dengan langganan). Setiap jalur memiliki penagihan sendiri dan cara tersendiri untuk menghentikan aksi belanja itu.
Jangan samakan ketiga jalur ini—ketiganya bekerja secara terpisah dan memerlukan pengaturan yang berbeda:
- Token LLM. Claude, OpenAI, atau Gemini mengenakan biaya untuk konteks input dan output setiap permintaan. Anthropic Task Budgets (lihat Aturan 2) dan langganan alih-alih pembayaran API sesuai pemakaian dapat membantu di sini.
- Infrastruktur cloud. Melalui MCP atau alat Bash, agen membuat sumber daya EC2, RDS, S3, atau menerapkan lambda. AWS Budgets, GCP, atau Yandex Cloud dengan kill switch dapat membantu di sini (Aturan 5).
- API pihak ketiga. Agen memanggil transaksi Stripe, mengirim 100 SMS melalui gateway, atau menyiapkan seribu langganan Telegram. Kunci sandbox dengan cakupan terbatas dan batas keras di dasbor penyedia dapat membantu di sini (Aturan 6).
Berikutnya adalah 7 aturan. Masing-masing mencakup satu atau dua jalur.
Cara menetapkan batas keras untuk pengeluaran API (Aturan 1)
Poin utama
Bagaimana cara menetapkan batas keras untuk pengeluaran API? Anthropic dan OpenAI memiliki batas pengeluaran organisasi bawaan yang secara otomatis membatasi akun saat mencapai jumlah yang ditentukan. Jangan samakan dengan peringatan, yang hanya mengirim email. Batas keras adalah penghalang; peringatan adalah lampu indikator. Siapkan keduanya, dimulai dari penghalangnya.
Tempat mengaktifkannya (sediakan setidaknya 2 menit per penyedia):
Anthropic Console. console.anthropic.com → Settings → Limits → Monthly spend limit. Tetapkan jumlah yang bersedia Anda habiskan pada bulan terburuk. Saat tercapai, API mengembalikan 429 dan mencatat peristiwanya. Tidak ada “Saya coba lagi sebentar lagi”—akses diblokir hingga akhir bulan.
OpenAI Platform. platform.openai.com → Billing → Usage limits. Demikian pula, ada batas lunak (peringatan email) dan batas keras (API dihentikan). Tetapkan keduanya; atur batas keras pada 1.5x batas lunak agar ada waktu untuk bereaksi.
AWS Bedrock / Google Vertex. Jika Anda mengakses Claude/Anthropic melalui perantara cloud, batas keras harus dipasang di sisi cloud, bukan Anthropic. Itulah Aturan 5.
Yang bukan batas keras: peringatan email (“Anda telah menghabiskan 80% anggaran”). Peringatan datang terlambat, dan tidak ada yang membaca email pada malam hari. Hanya penghalang sinkron di sisi penyedia.
Cara kerja Anthropic Task Budgets dan tempat mengaturnya (Aturan 2)
Poin utama
Apa itu Anthropic Task Budgets dan apa yang dilindunginya? Ini adalah fitur beta di Opus 4.7/4.8 dan lini Fable/Mythos: Anda menetapkan anggaran untuk satu alur kerja otonom, lalu Claude mengurangi kedalaman penalarannya saat anggaran menipis, dan menyelesaikan tugas dengan rangkuman alih-alih berkata “sudah, anggaran saya habis” di tengah tugas. Ini bukan solusi menyeluruh untuk pengeluaran cloud, tetapi mencegah 80% kasus ketika agen “terjebak dalam loop dan tidak menyadarinya.”
Lihat dokumentasi resmi Anthropic untuk detailnya. Hal utama: ini batas lunak, bukan batas keras. Jika agen sudah membuat instans EC2, Task Budget tidak akan membatalkannya.
Cara kerjanya dalam praktik: Anda mengirimkan field task_budget dalam payload permintaan (misalnya, 100,000 token input untuk seluruh tugas). Claude mendapat informasi tentang anggaran dan mengurangi rencananya sendiri, menyederhanakan langkah atau melewatkan subtugas. Saat anggaran mendekati nol, Claude mengakhiri proses dan mengembalikan rangkuman sementara alih-alih “terima kasih sudah mendengarkan.”
Keterbatasan:
- Hanya API Anthropic. Tidak berfungsi di Bedrock/Vertex, yang memiliki penagihan sendiri
- Hanya model beta (Opus 4.7, 4.8, Fable 5, Mythos 5). Tidak tersedia di Sonnet 4.6 atau Haiku
- Tidak mencakup pengeluaran cloud atau API pihak ketiga. Jika Claude menyalakan instans EC2, Task Budget tidak bereaksi
Gunakan bersama Aturan 1 (batas keras), bukan sebagai penggantinya.
Batasan biaya adalah bagian dari rekayasa konteks: Anda menentukan apa yang boleh dan tidak boleh dilakukan agen serta di mana tombol berhenti daruratnya.
Apa yang harus diblokir dengan hook PreToolUse di Claude Code (Aturan 3)
Poin utama
Apa itu hook PreToolUse di Claude Code, dan mengapa Anda memerlukannya? Hook adalah skrip yang berjalan sebelum Claude menjalankan pemanggilan alat. Anda dapat memblokir permintaan (exit 2), meminta konfirmasi pengguna, atau membiarkannya lewat tanpa bertanya. Intinya: hook berjalan sebelum --dangerously-skip-permissions. Artinya, Anda dapat memblokir tindakan berbahaya bahkan dalam mode bypass.
Izin di Claude Code (per 1 Juni 2026) dievaluasi dengan urutan deny → ask → allow. Artinya:
- periksa mode izin yang dipilih secara terpisah; jangan menyimpulkan perlindungan mode bypass dari pengujian aturan deny pada mode biasa
- jika hook mengembalikan
exit 2, pemanggilan alat diblokir allowedToolshanya berlaku jika aturan deny dan hook tidak memberikan hasil
Hook PreToolUse minimal yang memeriksa beberapa ejaan perintah berbahaya. Ini adalah filter teks, bukan parser shell lengkap atau batas akses: perintah setara, skrip, alat lain, dan sumber daya cloud yang ada memerlukan kontrol terpisah.
#!/usr/bin/env bash
# ~/.claude/hooks/block-dangerous-bash.sh
INPUT=$(cat)
if ! COMMAND=$(printf '%s\n' "$INPUT" | jq -er '.tool_input.command | select(type == "string")'); then
echo "Blocked: invalid Bash hook input" >&2
exit 2
fi
# Checks the listed text patterns; does not cover every equivalent operation
if echo "$COMMAND" | grep -qiE '(rm -rf|aws s3 rb|terraform destroy|kubectl delete|drop database)'; then
echo "Blocked: destructive command" >&2
exit 2
fi
exit 0
Simpan skrip pada jalur yang ditunjukkan, pastikan jq tersedia, dan jadikan skrip dapat dieksekusi dengan chmod +x ~/.claude/hooks/block-dangerous-bash.sh. Ikat hook ini di ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "~/.claude/hooks/block-dangerous-bash.sh" }]
}
]
}
}
Lihat dokumentasi resmi.
Periksa /hooks untuk memastikan pendaftaran, lalu berikan contoh JSON yang tidak berbahaya ke skrip tanpa menjalankan field perintahnya. Ejaan perintah destruktif yang tercantum harus mengembalikan 2; perintah aman harus mengembalikan 0. Uji juga masukan cacat. Regex hanya memeriksa pemanggilan Bash yang cocok; gunakan kredensial sempit dan isolasi lingkungan untuk batas wewenang yang sebenarnya. Lihat contoh resmi masukan dan keluaran hook.
Mengapa menggunakan daftar izin allowedTools dan mengapa --dangerously-skip-permissions tidak boleh dipakai di host (Aturan 4)
Poin utama
Di mana Anda menaruh daftar izin alat, dan mengapa host bukan tempat yang tepat untuk mode bypass? allowedTools di settings.json adalah daftar perintah tertentu yang dapat dijalankan agen tanpa konfirmasi; untuk yang lain, agen akan meminta persetujuan Anda. --dangerously-skip-permissions sepenuhnya menonaktifkan permintaan persetujuan itu, jadi jangan jalankan di mesin host—gunakan hanya di dalam kontainer atau VM.
Daftar izin adalah prinsip hak akses minimum. Alih-alih “izinkan semuanya” (--dangerously-skip-permissions), tambahkan hanya yang dibutuhkan tugas:
{
"permissions": {
"allow": [
"Bash(npm install:*)",
"Bash(npm run build)",
"Bash(git add:*)",
"Bash(git commit:*)",
"Read(./src/**)",
"Write(./src/**)"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(curl * | sh)",
"Write(/etc/**)",
"Write(~/.ssh/**)"
]
}
}
Hal yang perlu Anda ketahui tentang mode bypass:
- Linux/macOS menolak menjalankan Claude Code dalam mode bypass sebagai root atau dengan sudo—perlindungan bawaan
- Di mesin Anda sendiri, bypass menonaktifkan semua permintaan konfirmasi, dan agen dapat menjalankan
rm -rfsesukanya, membuka kunci SSH, serta mengunggah data ke cloud - Jangan pernah menjalankan
--dangerously-skip-permissionsdi host, gunakan hanya di:- kontainer Docker dengan mount volume terbatas (hanya folder yang diperlukan)
- VM terisolasi (Multipass, Lima, Orbstack)
- GitHub Codespaces / Replit / sandbox lain
Perintah docker run minimal untuk mode bypass:
docker run --rm -it \
-v "$PWD:/workspace" \
-w /workspace \
--network host \
ghcr.io/anthropics/claude-code:latest \
claude --dangerously-skip-permissions
Jika agen memerlukan kredensial cloud, gunakan kunci terpisah dengan cakupan terbatas, bukan kunci utama Anda (Aturan 6).
Cara menyiapkan peringatan anggaran cloud dengan kill switch di AWS, GCP, dan Yandex Cloud (Aturan 5)
Poin utama
Peringatan anggaran melaporkan pengeluaran yang diamati atau diperkirakan dan dapat datang terlambat. Fungsi respons dapat memblokir operasi agen baru atau menghentikan sumber daya tertentu; keduanya merupakan tindakan berbeda. Menonaktifkan kunci IAM tidak menghentikan biaya sumber daya yang sudah berjalan. Tentukan dan uji penghentian sumber daya secara terpisah.
Cara menyiapkannya di masing-masing cloud:
AWS Budgets (dokumentasi). Buat anggaran bulanan dengan ambang batas (50%, 80%, 100%). Pada ambang 100%, topik SNS dapat memanggil Lambda respons. Contoh di bawah hanya menonaktifkan kunci akses IAM pengguna yang disebutkan; contoh ini tidak menghentikan sumber daya atau menetapkan batas pengeluaran keras:
import boto3
def lambda_handler(event, context):
iam = boto3.client('iam')
# Deactivate all keys for the 'claude-agent' user
keys = iam.list_access_keys(UserName='claude-agent')['AccessKeyMetadata']
for key in keys:
iam.update_access_key(
UserName='claude-agent',
AccessKeyId=key['AccessKeyId'],
Status='Inactive'
)
return {'statusCode': 200, 'body': 'IAM keys deactivated; existing resources unchanged'}
Prosedur penghentian sumber daya terbatas: Untuk sandbox khusus yang berisi instance EC2 berbasis EBS yang disetujui, catat akun, Region, dan ID instance yang tepat sebelum menjalankannya. Pada konsol EC2, pilih hanya instance tersebut → Instance state → Stop instance → konfirmasi, lalu pastikan masing-masing mencapai stopped. Simpan data instance-store yang diperlukan terlebih dahulu; penghentian menghapusnya. Periksa bahwa penjadwal atau sistem penskalaan yang disetujui tidak dapat menggantinya. Tindakan ini menghentikan penggunaan komputasi tersebut, bukan seluruh biaya akun: tinjau penyimpanan yang dipertahankan dan layanan lain secara terpisah. Ikuti prosedur resmi penghentian EC2.
Dokumentasi AWS Budgets memperingatkan bahwa notifikasi tertinggal dari penggunaan sumber daya dan biaya tambahan dapat timbul sebelum maupun sesudah peringatan. Karena itu pemicu pada 100% tidak dapat menegakkan batas uang yang tepat.
Peringatan Anggaran GCP. Buat Budget → topik Pub/Sub → Cloud Function yang menonaktifkan Service Account. Tips penting dari dokumentasi: peringatan hanya memberi tahu, bukan menghentikan layanan, sehingga Cloud Function sangat penting.
Yandex Cloud (dokumentasi). Tetapkan anggaran di Billing → Budgets, serta kuota sumber daya sebagai batas keras. Anda dapat menghubungkan notifikasi ke bot Telegram melalui Cloud Functions.
OpenAI API. Batas pengeluaran lunak dan keras tersedia langsung di dasbor—batas keras otomatis menghentikan API; Lambda tidak diperlukan.
Gunakan batas keras di sisi penyedia yang sudah diverifikasi jika tersedia, peringatan anggaran yang tertunda, kredensial sempit, dan respons yang teruji untuk sumber daya tertentu yang dapat dibuat agen. Pencabutan kredensial memblokir sebagian operasi baru; verifikasi penghentian diperlukan untuk penggunaan sumber daya yang berlanjut. Peringatan maupun pesan sukses dari Lambda pencabut kunci tidak membuktikan bahwa seluruh penagihan berhenti.
Mengapa agen memerlukan kunci API sandbox terpisah dengan cakupan terbatas (Aturan 6)
Poin utama
Mengapa agen memerlukan kunci API terpisah? Agar kegagalan tetap terkendali. Buat pengguna IAM atau Service Account khusus untuk satu agen, beri izin minimum (EC2, bukan *), dan hubungkan ke proyek penagihan terpisah dengan batas keras. Jika agen menghabiskan anggarannya, yang habis hanya $50 miliknya dalam satu jam, bukan seluruh kas perusahaan.
Penyiapan AWS minimal:
- Buat pengguna IAM
claude-agent-scan - Policy: hanya tindakan yang diperlukan (misalnya,
ec2:RunInstancesdi satu region dengan ukurant3.micro, tanpa IP elastis VPC) - Hubungkan ke akun AWS terpisah (melalui Organizations) dengan anggaran bulanan $100
- Buat kunci akses dan berikan hanya kepada agen; jangan taruh di
~/.aws/credentialsAnda sendiri - Setelah sesi, rotasi kunci atau hapus pengguna
Demikian pula untuk penyedia lain:
- OpenAI / Anthropic: kunci API terpisah untuk setiap agen, batas keras untuk setiap kunci di dasbor, dan tag
agent_iddalam metadata permintaan - Stripe / YooKassa: kunci API terbatas untuk satu tindakan (misalnya, hanya
charges:read), dan merchant terpisah jika memungkinkan - Telegram Bot API: token bot terpisah, bukan token utama
Prinsip keamanan lama berlaku di sini: hak akses minimum—agen mendapat tepat yang diperlukan tugas, tidak satu byte pun lebih. Jika tugasnya “memindai jaringan,” jangan beri ec2:* dan s3:*; cukup beri ec2:DescribeInstances.
Kapan menggunakan dry run pra-penerbangan dan batas iterasi (Aturan 7)
Poin utama
Mengapa membiarkan agen menunjukkan rencananya sebelum diluncurkan, dan berapa banyak iterasi maksimal yang sebaiknya diizinkan? Plan Mode adalah fitur bawaan Claude Code: agen terlebih dahulu menjelaskan apa yang hendak dilakukannya, lalu Anda menyetujuinya. Ini pemeriksaan pra-penerbangan gratis. Dan --max-turns N membatasi jumlah langkah dalam satu sesi, sehingga agen tidak dapat berputar tanpa henti. Untuk mode otonom, tetapkan paling banyak 10–30 turn.
Plan Mode (/plan) diaktifkan pada awal sesi. Agen menyiapkan rencana, menampilkannya di chat, menunggu persetujuan, dan baru setelah itu mulai bekerja. Fitur ini gratis dan mencegah 70% kasus “oops, saya kira agen akan bertanya dulu.”
--max-turns adalah flag peluncuran. Setiap turn adalah satu siklus “agen berpikir + pemanggilan alat + hasil.” Untuk tugas otonom:
- perubahan kecil: 5–10 turn
- tugas sedang: 15–30 turn
- tugas otonom besar: 50–80 turn
Teknik tambahan:
- Batas waktu jam dinding dengan perintah Linux
timeout:
timeout 1800 claude --dangerously-skip-permissions --max-turns 30 -p "scan task"
# 1800 seconds = 30 minutes. Stop the process gracefully.
- Catat setiap pemanggilan alat ke file dengan hook PostToolUse agar Anda dapat melihat apa yang terjadi setelahnya
- Pemantauan Cron—setiap 5 menit, periksa agar tidak ada 10 proses Claude yang berjalan sekaligus (tanda umum bahwa ada yang tidak beres)
Checklist 5 menit siap pakai sebelum meluncurkan Claude Code otonom
Poin utama
Apa saja yang harus disiapkan sebelum menekan Enter untuk tugas otonom? Tujuh kotak centang, masing-masing memerlukan sekitar satu menit. Jika ada satu saja yang kosong, jangan luncurkan.
Daftar periksa sebelum claude --dangerously-skip-permissions:
[ ] 1. Batas keras di penyedia API (Anthropic Console → Limits → Monthly spend limit)
[ ] 2. Task Budget di payload permintaan (jika menggunakan Opus 4.7+/Fable/Mythos)
[ ] 3. Hook PreToolUse untuk memblokir rm -rf, aws s3 rb, terraform destroy
[ ] 4. Daftar izin allowedTools di settings.json atau bekerja di dalam kontainer Docker
[ ] 5. Peringatan anggaran cloud yang tertunda + pencabutan kunci dan penghentian sumber daya yang disetujui dan teruji
[ ] 6. Kunci API sandbox (kunci terpisah untuk agen, bukan yang utama)
[ ] 7. --max-turns N + timeout NNN seconds + pemantauan proses melalui cron
Jika ketujuhnya sudah tersedia, luncurkan. Jika ada satu saja yang belum tersedia, berhenti dan siapkan. Tiga puluh menit sekarang dapat menghemat $6,000–500,000 nanti.
Contoh untuk konteks: seorang vibe coder meluncurkan aplikasi toko daring dengan kata sandi basis data postgres bawaan. Dalam beberapa hari, seseorang menemukannya, memasang miner, dan menerapkan backdoor mereka sendiri. Server harus dimatikan, dan tagihan bulan itu naik akibat penambangan kripto oleh orang lain.
Kisah ini termasuk kategori 3 dari Bagian 1 (pihak ketiga menjalankan sesuatu di infrastruktur Anda), tetapi logikanya sama: kendali pengeluaran tidak seharusnya bergantung pada siapa yang memulai pengeluaran—agen Anda, karyawan Anda, atau miner di Nigeria.
Bacaan lebih lanjut:
- Cara melindungi Claude Code dari kerusakan—tentang
--dangerously-skip-permissionsdan izin dari sudut pandang lain - Keamanan vibe coding—pilar keamanan
- Cara agar batas Claude Code tidak habis dalam sehari—tentang token langganan (jangan samakan ini dengan panduan tentang tagihan cloud)
Sumber
Kenali Ailoot.
Rincian selengkapnya
Pertanyaan tentang 7 aturan Claude Code untuk membatasi pengeluaran agen otonom pada 2026
Apakah mencabut kunci IAM agen menghentikan tagihan cloud?
Tidak. Pencabutan itu memblokir penggunaan kunci tersebut untuk permintaan terautentikasi baru, sementara sumber daya yang ada dapat terus menimbulkan biaya. Catat daftar sumber daya yang dimiliki, hentikan instance yang disetujui, verifikasi keadaannya, lalu tinjau penyimpanan yang dipertahankan dan layanan lain secara terpisah.
Bisakah regex perintah pada contoh menegakkan batas keamanan yang lengkap?
Tidak. Regex itu hanya memeriksa pemanggilan alat Bash yang cocok dan teks perintah tertentu. Uji penguraian JSON dan kode keluarnya, tetapi gunakan izin cloud yang sempit dan isolasi lingkungan sebagai batas akses yang sebenarnya. Operasi setara dan alat lain dapat lolos dari filter teks.