7 قواعد لـ Claude Code للحد من إنفاق الوكلاء المستقلين في 2026
Markdown7 قواعد لضبط الحدود في Claude Code حتى لا يتركك الوكيل المستقل مفلسًا: حدود المزوّد، وTask Budgets، وhooks، وقوائم السماح، ومفاتيح الإيقاف الطارئ، ومفاتيح sandbox، وحدود التكرار.
قراءة المقال كاملًا
النقاط الرئيسية
يمكن لوكيل مستقل يملك وصولًا غير مقيّد إلى السحابة أن يراكم فاتورة كبيرة خلال ليلة واحدة. أشرح 7 قواعد لـ Claude Code يمكنك تطبيقها في أمسية واحدة لتجنب هذا النوع من الإخفاقات.
تعرّف على كيفية استخدام الخدمة في وثائق Ailoot.
أين تذهب الأموال: 3 فئات إنفاق للوكيل المستقل
النقاط الرئيسية
أين ينفق الوكيل المستقل أموالك؟ عبر ثلاث قنوات منفصلة: الرموز لدى Anthropic/OpenAI، وموارد السحابة (AWS/GCP/Yandex Cloud)، والإجراءات المدفوعة في واجهات API التابعة لجهات خارجية (رسوم Stripe، وبوابات SMS، وTwilio، وروبوتات Telegram ذات الاشتراكات). لكل قناة نظام فوترة خاص بها وطريقة خاصة لإيقاف موجة الإنفاق.
لا تخلط بين هذه القنوات الثلاث؛ فهي تعمل بشكل مستقل وتتطلب إعدادات مختلفة:
- رموز LLM. تفرض Claude أو OpenAI أو Gemini رسومًا على سياق الإدخال والإخراج لكل طلب. يمكن أن تساعد ميزانيات المهام من Anthropic (انظر القاعدة 2) أو الاستفادة من اشتراك بدلًا من الدفع حسب الاستخدام عبر API.
- البنية التحتية السحابية. ينشئ الوكيل موارد EC2 أو RDS أو S3، أو ينشر وظائف Lambda عبر MCP أو أداة Bash. ويمكن أن تساعد AWS Budgets أو GCP أو Yandex Cloud مع مفتاح إيقاف طارئ (القاعدة 5).
- واجهات API التابعة لجهات خارجية. ينفذ الوكيل عملية خصم عبر Stripe، أو يرسل 100 رسالة SMS من خلال بوابة، أو ينشئ ألف اشتراك في Telegram. ويمكن أن تساعد مفاتيح sandbox محدودة النطاق وسقف إنفاق فعلي في لوحة تحكم المزوّد (القاعدة 6).
فيما يلي 7 قواعد. تغطي كل واحدة منها قناة واحدة أو قناتين.
كيفية تعيين سقف فعلي للإنفاق على API (القاعدة 1)
النقاط الرئيسية
كيف تعيّن سقفًا فعليًا للإنفاق على API؟ لدى Anthropic وOpenAI حد إنفاق مضمّن للمؤسسة يخفض معدل استخدام الحساب تلقائيًا عند بلوغ المبلغ المحدد. لا تخلط بينه وبين التنبيهات التي تكتفي بإرسال بريد إلكتروني. السقف الفعلي حاجز، أما التنبيه فمصباح تحذير. اضبط كليهما، وابدأ بالحاجز.
أين تفعّله (خصص دقيقتين على الأقل لكل مزوّد):
Anthropic Console. console.anthropic.com → Settings → Limits → Monthly spend limit. حدد مبلغًا تقبل إنفاقه في أسوأ شهر. عند بلوغه، تعيد API الرمز 429 وتسجل الحدث. لن ينفع أن تقول «سأحاول مجددًا بعد دقيقة»؛ سيظل الحظر قائمًا حتى نهاية الشهر.
OpenAI Platform. platform.openai.com → Billing → Usage limits. يوجد بالمثل حد مرن (تنبيه بالبريد الإلكتروني) وحد صارم (إيقاف API). اضبط كليهما، واجعل الحد الصارم يساوي 1.5x الحد المرن لإتاحة وقت للاستجابة.
AWS Bedrock / Google Vertex. إذا كنت تصل إلى Claude/Anthropic عبر وسيط سحابي، فيجب تعيين السقف الفعلي لدى مزوّد السحابة، لا لدى Anthropic. هذا ما تتناوله القاعدة 5.
ما لا يُعد سقفًا فعليًا: التنبيهات عبر البريد الإلكتروني («أنفقت 80% من ميزانيتك»). فهي تصل متأخرة، ولا يقرأ أحد البريد ليلًا. الحاجز المتزامن لدى المزوّد وحده هو السقف الفعلي.
كيف تعمل Anthropic Task Budgets وأين تُضبط (القاعدة 2)
النقاط الرئيسية
ما ميزانيات المهام من Anthropic، ومم تحميك؟ إنها ميزة تجريبية في Opus 4.7/4.8 وسلسلة Fable/Mythos: تحدد ميزانية لسير عمل مستقل واحد، ويقلل Claude عمق استدلاله عندما توشك الميزانية على النفاد، ثم ينهي المهمة بملخص بدلًا من قول «انتهى رصيدي» في منتصفها. ليست حلًا شاملًا لإنفاق السحابة، لكنها تمنع 80% من الحالات التي «علق فيها الوكيل في حلقة ولم يلاحظ ذلك».
للتفاصيل، راجع الوثائق الرسمية لدى Anthropic. النقطة الأساسية: هذا حد مرن وليس حدًا صارمًا. إذا أنشأ الوكيل مثيل EC2 بالفعل، فلن تلغي Task Budget ذلك.
عمليًا، تمرر الحقل task_budget ضمن حمولة الطلب (مثلًا، 100,000 رمز إدخال للمهمة بأكملها). يحصل Claude على معلومات عن الميزانية ويقلص خططه من تلقاء نفسه، فيبسط الخطوات أو يتخطى المهام الفرعية. وعندما تقترب الميزانية من الصفر، ينهي العمل ويعيد ملخصًا مؤقتًا بدلًا من قول «شكرًا على الاستماع».
القيود:
- واجهة Anthropic API فقط. لا تعمل على Bedrock/Vertex، فلكل منهما نظام فوترة خاص
- النماذج التجريبية فقط (Opus 4.7، و4.8، وFable 5، وMythos 5). لا تعمل على Sonnet 4.6 أو Haiku
- لا تغطي إنفاق السحابة أو واجهات API التابعة لجهات خارجية. إذا شغّل Claude مثيل EC2، فلن تتدخل Task Budget
استخدمها مع القاعدة 1 (السقف الفعلي)، لا بدلًا منها.
ضوابط التكلفة جزء من هندسة السياق: تحدد ما يستطيع الوكيل فعله وما لا يستطيع، وأين يوجد مفتاح إيقافه الطارئ.
ما الذي يجب حظره باستخدام خطافات PreToolUse في Claude Code (القاعدة 3)
النقاط الرئيسية
ما خطافات PreToolUse في Claude Code، ولماذا تحتاج إليها؟ إنها نصوص برمجية تعمل قبل أن ينفذ Claude استدعاء أداة. ويمكنها حظر الطلب (exit 2)، أو طلب تأكيد المستخدم، أو السماح له بالمرور من دون سؤال. النقطة الأساسية: تعمل الخطافات قبل --dangerously-skip-permissions. وهذا يعني أنه يمكنك حظر الإجراءات الخطرة حتى في وضع تجاوز الأذونات.
تُقيَّم الأذونات في Claude Code (اعتبارًا من 1 يونيو 2026) بالترتيب deny → ask → allow. وهذا يعني:
- افحص وضع الأذونات المختار مستقلًا؛ ولا تستنتج حماية وضع التجاوز من اختبار deny في الوضع العادي
- إذا أعادت إحدى الخطافات
exit 2، فسيُحظر استدعاء الأداة - لا يُطبّق
allowedToolsإلا عندما لا تصدر قواعد المنع والخطافات أي قرار
خطاف PreToolUse بسيط يفحص بعض صيغ الأوامر الخطرة. هو مرشح نصي، وليس محلل صدفة كاملًا أو حد وصول؛ وتحتاج الأوامر المكافئة والنصوص والأدوات الأخرى وموارد السحابة القائمة إلى ضوابط مستقلة.
#!/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
# يفحص أنماط النص المدرجة؛ ولا يغطي كل عملية مكافئة
if echo "$COMMAND" | grep -qiE '(rm -rf|aws s3 rb|terraform destroy|kubectl delete|drop database)'; then
echo "تم الحظر: أمر تدميري" >&2
exit 2
fi
exit 0
احفظ النص في المسار المحدد وتأكد من توفر jq واجعله تنفيذيًا باستخدام chmod +x ~/.claude/hooks/block-dangerous-bash.sh. اربطه في ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "~/.claude/hooks/block-dangerous-bash.sh" }]
}
]
}
}
راجع الوثائق الرسمية.
افحص /hooks لتأكيد التسجيل، ثم مرر JSON تجريبيًا غير حساس إلى النص دون تنفيذ حقل الأمر. ينبغي أن تعيد صيغة مدمرة مدرجة 2 وأمر سليم 0. اختبر إدخالًا معطوبًا أيضًا. يفحص التعبير استدعاءات Bash المطابقة فقط؛ واستخدم اعتمادًا ضيقًا وعزل بيئة لحد السلطة الفعلي. راجع مثال إدخال hook وإخراجه الرسمي.
لماذا تستخدم قائمة سماح allowedTools ولماذا لا يصلح --dangerously-skip-permissions للجهاز المضيف (القاعدة 4)
النقاط الرئيسية
أين تضع قائمة الأدوات المسموح بها، ولماذا لا يصلح الجهاز المضيف لوضع التجاوز؟ يحتوي allowedTools في settings.json على قائمة أوامر محددة يمكن للوكيل تشغيلها من دون تأكيد، أما كل ما عدا ذلك فيتطلب إذنك. يعطل --dangerously-skip-permissions طلبات التأكيد تمامًا، لذا لا تشغّله على الجهاز المضيف، واستخدم حاوية أو جهازًا افتراضيًا فقط.
قائمة السماح هي تطبيق لمبدأ الحد الأدنى من الامتيازات. بدلًا من «السماح بكل شيء» (--dangerously-skip-permissions)، أضف فقط ما تتطلبه المهمة:
{
"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/**)"
]
}
}
ما تحتاج إلى معرفته عن وضع التجاوز:
- يرفض Linux/macOS بدء Claude Code في وضع التجاوز بصفة root أو باستخدام sudo؛ فهذه حماية مدمجة
- على جهازك، يعطل وضع التجاوز كل طلبات التأكيد، ويمكن للوكيل تنفيذ
rm -rfعلى ما يشاء، وفتح مفاتيح SSH، ورفع البيانات إلى السحابة - لا تشغّل مطلقًا
--dangerously-skip-permissionsعلى الجهاز المضيف؛ استخدمه فقط في:- حاوية Docker ذات ربط محدود لوحدة التخزين (المجلد المطلوب فقط)
- جهاز افتراضي معزول (Multipass أو Lima أو Orbstack)
- GitHub Codespaces أو Replit أو بيئة معزولة أخرى
أبسط أمر docker run لوضع التجاوز:
docker run --rm -it \
-v "$PWD:/workspace" \
-w /workspace \
--network host \
ghcr.io/anthropics/claude-code:latest \
claude --dangerously-skip-permissions
إذا احتاج الوكيل إلى بيانات اعتماد سحابية، فاستخدم مفاتيح منفصلة محدودة النطاق، لا مفاتيحك الرئيسية (القاعدة 6).
كيفية إعداد تنبيهات ميزانية السحابة مع مفتاح إيقاف طارئ في AWS وGCP وYandex Cloud (القاعدة 5)
النقاط الرئيسية
يبلغ تنبيه الميزانية إنفاقًا مرصودًا أو متوقعًا وقد يتأخر. قد تمنع دالة الاستجابة عمليات جديدة أو توقف موارد محددة؛ وهذان إجراءان مختلفان. لا يوقف تعطيل مفتاح IAM رسوم الموارد الجارية. حدد إيقاف الموارد واختبره مستقلًا.
كيفية إعداده في كل خدمة سحابية:
AWS Budgets (الوثائق). أنشئ ميزانية شهرية مع عتبات (50% و80% و100%). عند عتبة 100%، قد يستدعي SNS دالة استجابة. يعطل المثال أدناه مفاتيح وصول IAM للمستخدم المسمى فقط؛ ولا يوقف الموارد أو يثبت سقف إنفاق صارمًا:
import boto3
def lambda_handler(event, context):
iam = boto3.client('iam')
# تعطيل جميع مفاتيح المستخدم 'claude-agent'
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'}
إجراء محدود لإيقاف الموارد: في بيئة اختبار مخصصة تحتوي مثيلات EC2 معتمدة ومدعومة بـ EBS، سجّل الحساب والمناطق ومعرّفات المثيلات الدقيقة قبل التشغيل. في وحدة EC2، اختر هذه المثيلات فقط ← Instance state → Stop instance ← أكد، وتحقق من وصول كل منها إلى stopped. احفظ بيانات instance-store المطلوبة أولًا؛ فالإيقاف يمحوها. تحقق من عجز جدول أو نظام توسع معتمد عن استبدالها. يوقف ذلك استخدام الحوسبة هذا وليس كل رسوم الحساب؛ فراجع التخزين المتبقي والخدمات الأخرى مستقلًا. اتبع إجراء EC2 الرسمي.
تحذر وثائق AWS Budgets من تأخر الإشعارات عن استخدام الموارد واحتمال استمرار التكاليف قبل التنبيه وبعده. لذلك لا يفرض التفعيل عند 100% سقفًا نقديًا دقيقًا.
GCP Budget Alerts. أنشئ Budget → موضوع Pub/Sub → Cloud Function لتعطيل Service Account. وتنص نصيحة مهمة في الوثائق على أن التنبيهات تُخطر فقط ولا توقف الخدمات؛ لذا فإن Cloud Function ضرورية.
Yandex Cloud (الوثائق). أعد الميزانيات ضمن Billing → Budgets، وأضف حصصًا للموارد بوصفها سقفًا فعليًا. ويمكنك ربط الإشعارات بروبوت Telegram عبر Cloud Functions.
OpenAI API. توجد حدود الإنفاق المرنة والصارمة مباشرةً في لوحة التحكم؛ ويوقف الحد الصارم API تلقائيًا، فلا حاجة إلى Lambda.
استخدم حدًا صارمًا متحققًا منه لدى المزود حيث يتاح، وتنبيهات متأخرة، واعتمادًا ضيقًا، واستجابة مختبرة للموارد المحددة التي يستطيع الوكيل إنشاؤها. يمنع سحب الاعتماد بعض العمليات الجديدة؛ ويلزم التحقق من الإيقاف لاستخدام الموارد الجاري. لا يثبت تنبيه أو نجاح Lambda لسحب المفاتيح توقف الفوترة كلها.
لماذا يحتاج الوكيل إلى مفتاح API منفصل لبيئة sandbox بنطاق محدود (القاعدة 6)
النقاط الرئيسية
لماذا يحتاج الوكيل إلى مفتاح API منفصل؟ لضمان احتواء آثار الإخفاق. أنشئ مستخدم IAM أو Service Account مخصصًا لوكيل واحد، وامنحه أقل قدر من الأذونات (EC2، لا *), واربطه بمشروع فوترة منفصل ذي سقف فعلي. إذا استنفد الوكيل رصيده، فلن يتجاوز ما ينفقه 50 دولارًا خاصّة به خلال ساعة، بدلًا من استنزاف ميزانية الشركة بأكملها.
إعداد AWS بسيط:
- أنشئ مستخدم IAM باسم
claude-agent-scan - السياسة: الإجراءات المطلوبة فقط (مثلًا
ec2:RunInstancesفي منطقة واحدة وبحجمt3.micro، من دون عنوان IP مرن لـ VPC) - اربطه بحساب AWS منفصل (عبر Organizations) ذي ميزانية شهرية قدرها 100 دولار
- أنشئ مفاتيح وصول وامنحها للوكيل وحده؛ ولا تضعها في
~/.aws/credentialsالخاص بك - بعد الجلسة، بدّل المفاتيح أو احذف المستخدم
وينطبق الأمر نفسه على المزوّدين الآخرين:
- OpenAI / Anthropic: مفتاح API منفصل لكل وكيل، وسقف فعلي لكل مفتاح في لوحة التحكم، ووسوم
agent_idفي بيانات تعريف الطلب - Stripe / YooKassa: مفتاح API مقيّد بإجراء واحد (مثل
charges:readفقط)، وحساب تاجر منفصل إن أمكن - Telegram Bot API: رمز مميز لروبوت منفصل، لا الرمز الرئيسي
ينطبق هنا مبدأ الأمان القديم: الحد الأدنى من الامتيازات؛ يحصل الوكيل على ما تحتاجه المهمة تحديدًا، ولا بايتًا واحدًا إضافيًا. إذا كانت المهمة «فحص الشبكة»، فلا تمنحه ec2:* وs3:*؛ امنحه ec2:DescribeInstances فقط.
متى تستخدم تشغيلًا تجريبيًا مسبقًا وحدًا للتكرارات (القاعدة 7)
النقاط الرئيسية
لماذا تجعل الوكيل يعرض خطته قبل التشغيل، وكم تكرارًا ينبغي أن تسمح به كحد أقصى؟ Plan Mode ميزة مدمجة في Claude Code: يصف الوكيل أولًا ما ينوي فعله، ثم توافق عليه. إنه فحص مجاني قبل التشغيل. ويحد --max-turns N عدد الخطوات في الجلسة الواحدة حتى لا يستمر الوكيل إلى ما لا نهاية. اضبطه على 10–30 دورة كحد أقصى للوضع المستقل.
يُفعّل Plan Mode (/plan) عند بدء الجلسة. يجهز الوكيل خطة ويعرضها في الدردشة وينتظر الموافقة، ثم يبدأ العمل فقط. وهو مجاني ويمنع 70% من حالات «ظننت أنه سيسألني أولًا».
--max-turns خيار تشغيل. كل دورة هي «يفكر الوكيل + يستدعي أداة + يتلقى نتيجة». للمهام المستقلة:
- تغيير صغير: 5–10 دورات
- مهمة متوسطة: 15–30 دورة
- مهمة مستقلة كبيرة: 50–80 دورة
تقنيات إضافية:
- مهلة زمنية باستخدام أمر Linux
timeout:
timeout 1800 claude --dangerously-skip-permissions --max-turns 30 -p "scan task"
# 1800 ثانية = 30 دقيقة. أوقف العملية بطريقة سليمة.
- سجّل كل استدعاء أداة في ملف باستخدام خطاف PostToolUse لتتمكن من مراجعة ما حدث لاحقًا
- مراقبة Cron: تحقق كل 5 دقائق من عدم تشغيل 10 عمليات Claude في آن واحد (وهي علامة معتادة على حدوث خطأ ما)
قائمة تحقق جاهزة من 5 دقائق قبل تشغيل Claude Code بصورة مستقلة
النقاط الرئيسية
ما الذي ينبغي تجهيزه قبل الضغط على Enter لبدء مهمة مستقلة؟ سبعة مربعات، يستغرق كل منها نحو دقيقة. إذا كان أي مربع فارغًا، فلا تبدأ.
قائمة تحقق قبل claude --dangerously-skip-permissions:
[ ] 1. سقف صارم لدى مزوّد API (Anthropic Console → Limits → Monthly spend limit)
[ ] 2. Task Budget في حمولة الطلب (عند استخدام Opus 4.7+/Fable/Mythos)
[ ] 3. خطاف PreToolUse لحظر rm -rf وaws s3 rb وterraform destroy
[ ] 4. قائمة سماح allowedTools في settings.json أو العمل داخل حاوية Docker
[ ] 5. تنبيهات ميزانية سحابية متأخرة + سحب مفاتيح مختبر وإيقاف موارد معتمد
[ ] 6. مفاتيح API لبيئة sandbox (مفتاح منفصل للوكيل، لا المفتاح الرئيسي)
[ ] 7. --max-turns N + timeout لمدة NNN ثانية + مراقبة عمليات cron
إذا كانت العناصر السبعة كلها جاهزة، فابدأ. وإذا غاب أي عنصر، فتوقف وأعد إعداده. ثلاثون دقيقة الآن قد توفر عليك 6,000–500,000 دولار لاحقًا.
مثال للتوضيح: أطلق مبرمج يعتمد على البرمجة التوليدية تطبيق متجر إلكتروني بكلمة مرور قاعدة بيانات postgres الافتراضية. وخلال يومين، عثر عليه أحدهم وثبّت أدوات تعدين ونشر أبوابه الخلفية. واضطروا إلى إيقاف الخادم، كما ارتفعت فاتورة الشهر بسبب تعدين شخص آخر للعملات المشفرة.
تندرج هذه القصة ضمن الفئة 3 من القسم 1 (جهات خارجية تشغّل أشياء على بنيتك التحتية)، لكن المنطق واحد: يجب ألا تعتمد ضوابط الإنفاق على الجهة التي بدأت الإنفاق، سواء كان وكيلك أو موظفك أو أداة تعدين في نيجيريا.
للاطلاع أكثر:
- كيفية حماية Claude Code من الأعطال—عن
--dangerously-skip-permissionsوالأذونات من زاوية أخرى - أمان البرمجة التوليدية—ركيزة الأمان
- كيفية تجنب استنفاد حدود Claude Code في يوم واحد—عن رموز الاشتراك (لا تخلط ذلك بهذا الدليل عن فواتير السحابة)
المصادر
تعرّف على Ailoot.
المزيد من التفاصيل
أسئلة شائعة
هل يوقف إبطال مفاتيح IAM للوكيل فاتورة السحابة؟
لا. يمنع استخدام تلك المفاتيح لطلبات مصادق عليها جديدة، بينما قد تواصل الموارد القائمة توليد الرسوم. احتفظ بقائمة موارد مملوكة، وأوقف المثيلات المعتمدة وتحقق من حالتها، وراجع التخزين المتبقي والخدمات الأخرى مستقلًا.
هل يفرض تعبير الأوامر في المثال حد أمان كاملًا؟
لا. يفحص استدعاءات أدوات Bash المطابقة ونصوص أوامر مختارة فقط. اختبر تحليل JSON ورموز الخروج، لكن استخدم أذونات سحابة ضيقة وعزل بيئة لحد الوصول الحقيقي. قد تتجاوز العمليات المكافئة والأدوات الأخرى المرشح النصي.