Blog

7 peraturan Claude Code untuk mengehadkan perbelanjaan ejen autonomi pada 2026

Markdown

7 peraturan untuk menetapkan had dalam Claude Code supaya ejen autonomi tidak menyebabkan anda muflis: had penyedia, Task Budgets, hooks, senarai dibenarkan, suis pemutus, kunci sandbox dan had lelaran.

Baca artikel penuh

Perkara utama

Ejen autonomi dengan akses awan tanpa had boleh menghasilkan bil yang besar dalam satu malam. Saya menghuraikan 7 peraturan Claude Code yang boleh anda tetapkan dalam satu malam untuk mencegah kegagalan seperti ini.

Ketahui cara menggunakan perkhidmatan ini dalam dokumentasi Ailoot.

Ke mana wang dibelanjakan: 3 kategori perbelanjaan ejen autonomi

Perkara utama

Ke manakah ejen autonomi membelanjakan wang anda? Melalui tiga saluran yang berasingan: token di Anthropic/OpenAI, sumber awan (AWS/GCP/Yandex Cloud) dan tindakan berbayar dalam API pihak ketiga (caj Stripe, gerbang SMS, Twilio, bot Telegram dengan langganan). Setiap saluran mempunyai kaedah pengebilan dan cara tersendiri untuk menghentikan perbelanjaan.

Jangan kelirukan ketiga-tiga saluran ini—setiap satunya beroperasi secara berasingan dan memerlukan tetapan yang berlainan:

  1. Token LLM. Claude, OpenAI atau Gemini mengenakan caj untuk konteks input dan output setiap permintaan. Anthropic Task Budgets (lihat Peraturan 2) dan langganan berbanding bayaran API mengikut penggunaan boleh membantu di sini.
  2. Infrastruktur awan. Melalui MCP atau alat Bash, ejen mencipta sumber EC2, RDS, S3 atau menggunakan lambda. AWS Budgets, GCP atau Yandex Cloud dengan suis pemutus boleh membantu di sini (Peraturan 5).
  3. API pihak ketiga. Ejen membuat caj Stripe, menghantar 100 SMS melalui gerbang atau menyediakan seribu langganan Telegram. Kunci sandbox dengan skop yang terhad dan had tegas dalam papan pemuka penyedia boleh membantu di sini (Peraturan 6).

Seterusnya ialah 7 peraturan. Setiap satu meliputi satu atau dua saluran.

Cara menetapkan had tegas bagi perbelanjaan API (Peraturan 1)

Perkara utama

Bagaimanakah anda menetapkan had tegas bagi perbelanjaan API? Anthropic dan OpenAI mempunyai had perbelanjaan organisasi terbina dalam yang mengehadkan akaun secara automatik apabila jumlah yang ditetapkan dicapai. Jangan kelirukan had ini dengan amaran yang hanya menghantar e-mel. Had tegas ialah penghadang; amaran ialah lampu penunjuk. Tetapkan kedua-duanya, bermula dengan penghadang.

Cara mengaktifkannya (peruntukkan sekurang-kurangnya 2 minit bagi setiap penyedia):

Anthropic Console. console.anthropic.com → Settings → Limits → Monthly spend limit. Tetapkan jumlah yang anda sanggup belanjakan dalam bulan yang paling teruk. Apabila jumlah itu dicapai, API memulangkan 429 dan merekodkan peristiwa tersebut. Tiada “saya akan cuba lagi sebentar lagi”—akses disekat sehingga akhir bulan.

OpenAI Platform. platform.openai.com → Billing → Usage limits. Begitu juga, terdapat had lembut (amaran e-mel) dan had tegas (API dihentikan). Tetapkan kedua-duanya; tetapkan had tegas pada 1.5x had lembut supaya anda mempunyai masa untuk bertindak.

AWS Bedrock / Google Vertex. Jika anda mengakses Claude/Anthropic melalui perantara awan, had tegas perlu ditetapkan di pihak awan, bukan Anthropic. Itu Peraturan 5.

Perkara yang tidak dikira sebagai had tegas: amaran e-mel (“anda telah menggunakan 80% bajet”). Amaran tiba lewat, dan tiada siapa membaca e-mel pada waktu malam. Hanya penghadang segerak di pihak penyedia yang berkesan.

Cara Anthropic Task Budgets berfungsi dan tempat menetapkannya (Peraturan 2)

Perkara utama

Apakah Anthropic Task Budgets dan apakah yang dilindunginya? Ini ialah ciri beta dalam Opus 4.7/4.8 dan rangkaian Fable/Mythos: anda menetapkan bajet untuk satu aliran kerja autonomi, dan Claude mengurangkan kedalaman penaakulannya apabila baki bajet semakin sedikit, lalu menamatkan tugas dengan ringkasan dan bukannya berkata “dah, bajet saya habis” di tengah-tengah tugas. Ia bukan penyelesaian menyeluruh bagi perbelanjaan awan, tetapi mencegah 80% kes apabila ejen “tersangkut dalam gelung tanpa menyedarinya.”

Rujuk dokumentasi rasmi Anthropic untuk butiran lanjut. Perkara utama: ini ialah sempadan lembut, bukannya had tegas. Jika ejen sudah mencipta instans EC2, Task Budget tidak akan memadamkannya.

Cara ia berfungsi dalam amalan: anda menghantar medan task_budget dalam payload permintaan (contohnya, 100,000 token input untuk keseluruhan tugas). Claude menerima maklumat tentang bajet dan mengurangkan rancangannya sendiri, dengan memudahkan langkah atau melangkau subtugas. Apabila bajet menghampiri sifar, Claude mula menamatkan kerja dan memulangkan ringkasan sementara, bukannya berkata “terima kasih kerana mendengar”.

Batasan:

  • API Anthropic sahaja. Ia tidak berfungsi pada Bedrock/Vertex, yang mempunyai pengebilan tersendiri
  • Model beta sahaja (Opus 4.7, 4.8, Fable 5, Mythos 5). Tidak tersedia pada Sonnet 4.6 atau Haiku
  • Tidak meliputi perbelanjaan awan atau API pihak ketiga. Jika Claude melancarkan instans EC2, Task Budget tidak bertindak

Gunakannya bersama Peraturan 1 (had tegas), bukannya menggantikannya.

Kawalan kos ialah sebahagian daripada kejuruteraan konteks: anda menentukan perkara yang boleh dan tidak boleh dilakukan oleh ejen, serta lokasi hentian kecemasannya.

Perkara yang perlu disekat dengan hook PreToolUse dalam Claude Code (Peraturan 3)

Perkara utama

Apakah hook PreToolUse dalam Claude Code, dan mengapa anda memerlukannya? Hook ialah skrip yang dijalankan sebelum Claude melaksanakan panggilan alat. Anda boleh menyekat permintaan (exit 2), mewajibkan pengesahan pengguna atau membenarkannya tanpa bertanya. Perkara utama: hook berjalan sebelum --dangerously-skip-permissions. Ini bermakna anda boleh menyekat tindakan berbahaya walaupun dalam mod pintasan.

Kebenaran dalam Claude Code (setakat 1 Jun 2026) dinilai mengikut susunan deny → ask → allow. Ini bermakna:

  • semak mod kebenaran yang dipilih secara berasingan; jangan simpulkan bahawa mod pintasan dilindungi berdasarkan ujian deny dalam mod biasa
  • jika hook memulangkan exit 2, panggilan alat disekat
  • allowedTools hanya terpakai apabila peraturan deny dan hook tidak bertindak

Hook PreToolUse minimum yang memeriksa beberapa ejaan arahan berbahaya. Ia penapis teks, bukan penghuraian shell lengkap atau sempadan akses: arahan setara, skrip, alat lain dan sumber awan sedia ada memerlukan kawalan berasingan.

#!/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 laluan yang dinyatakan, pastikan jq tersedia dan jadikannya boleh laksana dengan chmod +x ~/.claude/hooks/block-dangerous-bash.sh. Ikat hook itu dalam ~/.claude/settings.json:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [{ "type": "command", "command": "~/.claude/hooks/block-dangerous-bash.sh" }]
      }
    ]
  }
}

Lihat dokumentasi rasmi.

Semak /hooks untuk mengesahkan pendaftaran, kemudian berikan contoh JSON yang tidak berbahaya kepada skrip tanpa melaksanakan medan arahannya. Ejaan pemusnah yang disenaraikan patut memulangkan 2; arahan biasa patut memulangkan 0. Uji juga input cacat. Regex hanya memeriksa panggilan Bash yang sepadan; gunakan kelayakan berskop sempit dan pengasingan persekitaran untuk sempadan kuasa sebenar. Lihat contoh rasmi input dan output hook.

Mengapa menggunakan senarai benarkan allowedTools dan mengapa --dangerously-skip-permissions bukan untuk mesin hos (Peraturan 4)

Perkara utama

Di manakah anda meletakkan senarai alat yang dibenarkan, dan mengapa mesin hos bukan tempat yang baik untuk mod pintasan? allowedTools dalam settings.json ialah senarai arahan khusus yang boleh dijalankan oleh ejen tanpa pengesahan; arahan lain akan meminta kebenaran anda. --dangerously-skip-permissions mematikan semua permintaan itu, jadi jangan jalankannya pada mesin hos—gunakan bekas atau VM sahaja.

Senarai benarkan mengamalkan prinsip keistimewaan minimum. Daripada “benarkan semua” (--dangerously-skip-permissions), tambahkan hanya perkara yang diperlukan oleh 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/**)"
    ]
  }
}

Perkara yang perlu diketahui tentang mod pintasan:

  • Linux/macOS enggan memulakan Claude Code dalam mod pintasan sebagai root atau dengan sudo—ini perlindungan terbina dalam
  • Pada mesin sendiri, mod pintasan mematikan semua permintaan pengesahan dan ejen boleh menjalankan rm -rf sesuka hati, membuka kunci SSH dan memuat naik data ke awan
  • Jangan sekali-kali jalankan --dangerously-skip-permissions pada mesin hos; gunakan hanya dalam:
    • bekas Docker dengan pemasangan volum terhad (folder yang diperlukan sahaja)
    • VM terpencil (Multipass, Lima, Orbstack)
    • GitHub Codespaces / Replit / sandbox lain

Perintah docker run minimum untuk mod pintasan:

docker run --rm -it \
  -v "$PWD:/workspace" \
  -w /workspace \
  --network host \
  ghcr.io/anthropics/claude-code:latest \
  claude --dangerously-skip-permissions

Jika ejen memerlukan kelayakan awan, gunakan kunci berasingan dengan skop terhad, bukan kunci utama anda (Peraturan 6).

Cara menyediakan amaran bajet awan dengan suis pemutus dalam AWS, GCP dan Yandex Cloud (Peraturan 5)

Perkara utama

Amaran bajet melaporkan perbelanjaan yang diperhatikan atau diramal dan boleh tiba lewat. Fungsi respons boleh menyekat operasi ejen baharu atau menghentikan sumber tertentu; kedua-duanya tindakan berbeza. Menyahdayakan kunci IAM tidak menghentikan caj sumber yang sudah berjalan. Tentukan dan uji penghentian sumber secara berasingan.

Cara menyediakan tetapan ini bagi setiap platform awan:

AWS Budgets (dokumentasi). Cipta bajet bulanan berserta ambang (50%, 80%, 100%). Pada ambang 100%, topik SNS boleh memanggil Lambda respons. Contoh di bawah hanya menyahaktifkan kunci akses IAM pengguna yang dinamakan; ia tidak menghentikan sumber atau menetapkan had perbelanjaan tegas:

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 berskop: Untuk sandbox khusus yang mengandungi instance EC2 berasaskan EBS yang diluluskan, catat akaun, Region dan ID instance tepat sebelum pelaksanaan. Dalam konsol EC2, pilih instance itu sahaja → Instance state → Stop instance → sahkan, kemudian pastikan setiap satu mencapai stopped. Simpan dahulu data instance-store yang diperlukan; penghentian memadamkannya. Periksa bahawa penjadual atau sistem penskalaan yang diluluskan tidak boleh menggantikannya. Ini menghentikan penggunaan pengiraan tersebut, bukan semua caj akaun: semak storan yang dikekalkan dan perkhidmatan lain secara berasingan. Ikuti prosedur rasmi menghentikan EC2.

Dokumentasi AWS Budgets memberi amaran bahawa pemberitahuan lewat berbanding penggunaan sumber dan kos tambahan mungkin terakru sebelum serta selepas amaran. Oleh itu, pencetus pada 100% tidak boleh menguatkuasakan had wang yang tepat.

Amaran Bajet GCP. Cipta Budget → topik Pub/Sub → Cloud Function yang menyahdayakan Service Account. Petua penting daripada dokumentasi: amaran hanya memberitahu, ia tidak menghentikan apa-apa, jadi Cloud Function amat diperlukan.

Yandex Cloud (dokumentasi). Tetapkan bajet di Billing → Budgets dan kuota sumber sebagai had tegas. Anda boleh menyambungkan pemberitahuan kepada bot Telegram melalui Cloud Functions.

OpenAI API. Had perbelanjaan lembut dan tegas tersedia terus dalam papan pemuka—had tegas menghentikan API secara automatik; Lambda tidak diperlukan.

Gunakan had tegas di pihak penyedia yang telah disahkan jika tersedia, amaran bajet yang mungkin lewat, kelayakan berskop sempit dan respons yang diuji untuk sumber tertentu yang boleh dicipta ejen. Pembatalan kelayakan menyekat sebahagian operasi baharu; pengesahan penghentian diperlukan bagi penggunaan sumber berterusan. Amaran mahupun mesej berjaya daripada Lambda pembatalan kunci tidak membuktikan semua pengebilan telah berhenti.

Mengapa ejen memerlukan kunci API sandbox yang berasingan dengan skop terhad (Peraturan 6)

Perkara utama

Mengapa ejen memerlukan kunci API berasingan? Supaya kegagalan dapat dikawal. Cipta pengguna IAM atau Service Account khusus untuk satu ejen sahaja, berikan kebenaran minimum (EC2, bukan *), dan pautkannya kepada projek pengebilan berasingan dengan had tegas. Jika ejen menghabiskan bajetnya, ia hanya menghabiskan $50 miliknya dalam masa sejam, bukannya seluruh wang syarikat.

Persediaan AWS minimum:

  1. Cipta pengguna IAM claude-agent-scan
  2. Polisi: hanya tindakan yang diperlukan (contohnya, ec2:RunInstances di satu rantau dengan saiz t3.micro, tanpa IP elastik VPC)
  3. Pautkannya kepada akaun AWS berasingan (melalui Organizations) dengan bajet bulanan $100
  4. Jana kunci akses dan berikannya kepada ejen sahaja; jangan letakkannya dalam ~/.aws/credentials anda sendiri
  5. Selepas sesi, putar kunci atau padamkan pengguna

Lakukan perkara yang sama untuk penyedia lain:

  • OpenAI / Anthropic: kunci API berasingan bagi setiap ejen, had tegas untuk setiap kunci dalam papan pemuka dan tag agent_id dalam metadata permintaan
  • Stripe / YooKassa: kunci API terhad kepada satu tindakan (contohnya, charges:read sahaja) dan pedagang berasingan jika boleh
  • Telegram Bot API: token bot berasingan, bukannya token utama

Prinsip keselamatan lama turut terpakai: keistimewaan minimum—ejen mendapat tepat apa yang diperlukan oleh tugas itu, tidak lebih walau satu bait. Jika tugasnya “imbas rangkaian”, jangan beri ec2:* dan s3:*; berikan ec2:DescribeInstances sahaja.

Bila hendak menggunakan simulasi awal dan had lelaran (Peraturan 7)

Perkara utama

Mengapa ejen perlu menunjukkan pelannya kepada anda sebelum pelancaran, dan berapa banyak lelaran paling banyak patut dibenarkan? Plan Mode ialah ciri terbina dalam Claude Code: ejen menerangkan dahulu perkara yang hendak dilakukannya dan anda meluluskannya. Ini pemeriksaan awal yang percuma. --max-turns N pula mengehadkan bilangan langkah dalam satu sesi supaya ejen tidak boleh berpusing tanpa henti. Untuk mod autonomi, tetapkan 10–30 pusingan, maksimum.

Plan Mode (/plan) diaktifkan pada permulaan sesi. Ejen menyediakan pelan, memaparkannya dalam sembang, menunggu kelulusan dan hanya selepas itu mula bekerja. Ia percuma dan mencegah 70% kes “alamak, saya sangka ia akan bertanya dahulu”.

--max-turns ialah bendera pelancaran. Setiap pusingan ialah satu kitaran “ejen berfikir + panggilan alat + hasil”. Untuk tugas autonomi:

  • perubahan kecil: 5–10 pusingan
  • tugas sederhana: 15–30 pusingan
  • tugas autonomi besar: 50–80 pusingan

Teknik tambahan:

  • Had masa 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 panggilan alat dalam fail dengan hook PostToolUse supaya anda dapat melihat apa yang berlaku selepas itu
  • Pemantauan cron—setiap 5 minit, periksa supaya tiada 10 proses Claude berjalan serentak (petanda lazim bahawa sesuatu telah berlaku)

Senarai semak 5 minit yang sedia digunakan sebelum melancarkan Claude Code secara autonomi

Perkara utama

Apakah yang perlu tersedia sebelum anda menekan Enter untuk tugas autonomi? Tujuh kotak semak, setiap satunya mengambil masa kira-kira seminit. Jika ada satu yang kosong sekalipun, jangan lancarkan.

Senarai semak sebelum claude --dangerously-skip-permissions:

[ ] 1. Had tegas pada penyedia API (Anthropic Console → Limits → Monthly spend limit)
[ ] 2. Task Budget dalam payload permintaan (jika menggunakan Opus 4.7+/Fable/Mythos)
[ ] 3. Hook PreToolUse untuk menyekat rm -rf, aws s3 rb, terraform destroy
[ ] 4. Senarai benarkan allowedTools dalam settings.json atau bekerja dalam bekas Docker
[ ] 5. Amaran bajet awan yang mungkin lewat + pembatalan kunci dan penghentian sumber diluluskan yang diuji
[ ] 6. Kunci API sandbox (kunci berasingan untuk ejen, bukan kunci utama)
[ ] 7. --max-turns N + timeout NNN seconds + pemantauan proses melalui cron

Jika ketujuh-tujuhnya tersedia, lancarkan. Jika ada satu yang tiada, berhenti dan sediakannya. Tiga puluh minit sekarang boleh menjimatkan $6,000–500,000 kemudian.

Satu contoh sebagai konteks: seorang vibe coder melancarkan aplikasi kedai dalam talian dengan kata laluan pangkalan data postgres lalai. Dalam beberapa hari, seseorang menemuinya, memasang pelombong dan menggunakan pintu belakang mereka sendiri. Pelayan itu terpaksa dihentikan, dan bil bulan tersebut meningkat akibat perlombongan kripto oleh orang lain.

Kisah ini berkaitan kategori 3 dalam Bahagian 1 (pihak ketiga menjalankan sesuatu pada infrastruktur anda), tetapi logiknya sama: kawalan perbelanjaan tidak patut bergantung pada siapa yang memulakan perbelanjaan—ejen anda, pekerja anda atau pelombong di Nigeria.

Bacaan lanjut:

Kenali Ailoot.

Butiran lanjut

Soalan lazim: 7 peraturan Claude Code untuk mengehadkan perbelanjaan ejen autonomi pada 2026

Adakah membatalkan kunci IAM ejen menghentikan bil awan?

Tidak. Ia menyekat penggunaan kunci itu untuk permintaan baharu yang memerlukan pengesahan, sementara sumber sedia ada boleh terus menambah caj. Simpan senarai benarkan sumber milik anda, hentikan instance yang diluluskan, sahkan keadaannya dan semak storan yang dikekalkan serta perkhidmatan lain secara berasingan.

Bolehkah regex arahan contoh menguatkuasakan sempadan keselamatan yang lengkap?

Tidak. Ia hanya memeriksa panggilan alat Bash yang sepadan dan teks arahan terpilih. Uji penghuraian JSON serta kod keluarnya, tetapi gunakan kebenaran awan yang sempit dan pengasingan persekitaran untuk sempadan akses sebenar. Operasi setara dan alat lain boleh melepasi penapis teks.

Semua artikel