الطريقة الخاطئة: لصق كلمة مرور لوحتك في وكيل
الوكلاء المحليون بارعون تحديدًا في الجزء المتكرر من إطلاق البرمجيات: تشغيل الفحوصات، وإصلاح ما تُعلّمه، والنشر، وقراءة السجلات، ثم التكرار. والاختصار المغري أن تسلّم الوكيل بيانات دخول لوحتك ليستطيع "فعل كل شيء". حسابك في اللوحة يستطيع تغيير وسائل الدفع، وحذف التطبيقات، ولمس كل حساب CDN تملكه — ولا شيء من ذلك يحتاجه الوكيل ليُطلق الكود. الأداة الصحيحة اعتمادٌ يستطيع النشر ولا شيء غيره.
رمز النشر: يظهر مرة واحدة، ونطاقه مشدود
أمر واحد ينشئه. يظهر الرمز بنصه الصريح مرة واحدة بالضبط — لا يخزّن cdn.com.tr سوى بصمة (hash)، فلا يستطيع أحد (بما في ذلك الدعم) قراءته لاحقًا. وهو مربوط بحساب CDN واحد وبسطح النشر فقط: رفع المصدر، والبناء، وإنشاء التطبيقات وتحديثها، والنشر، وقراءة الحالة والسجلات.
$ cdnctl deploy-token create --name "claude-code"
Deploy token (shown ONCE — save it now):
cdnctl_T1bz••••••••••••••••••••••••
To hand it to an agent: cdnctl configure --token cdnctl_T1bz••••…
Scope: deploy only (source upload/build + app lifecycle).
ما يستطيعه الرمز وما لا يستطيعه — اختبرنا كل حافة
هذه ليست نوايا تصميم؛ كل سطر هنا طلبٌ حقيقي نفّذناه على الـ API الحيّ برمز صادر للتو:
- سطح النشر على حسابه نفسه — يعمل (200). - النقاط ذاتها بمعرّف UUID لحساب آخر — 404. الـ API لا يؤكد حتى وجود الحساب الآخر. - نقاط خارج سطح النشر (الفوترة، DNS، ملف المستخدم) — 401. - DELETE على تطبيق — 405. المسار ببساطة غير مسجّل على سطح الرمز، فلا يستطيع الوكيل تدمير ما نشره. - أي طلب بعد الإلغاء — 401، فورًا.
وصله بـ Claude Code أو Cursor عبر MCP
يأتي cdnctl بخادم MCP مدمج: يتحدث `cdnctl mcp` بروتوكولَ JSON-RPC عبر stdio ويكشف ست أدوات — project_info وcheck وentitlement وdeploy وapps_list وapp_show. تسجيله يعني أن وكيلك يستدعي النشر كما يستدعي أي أداة أخرى، بنتائج مهيكلة بدل نصوص طرفية مكشوطة.
$ claude mcp add cdntr -- cdnctl mcp
# .cursor/mcp.json
{
"mcpServers": {
"cdntr": {
"command": "cdnctl",
"args": ["mcp"],
"env": { "CDN_ACCESS_TOKEN": "cdnctl_T1bz••••…" }
}
}
}
حلقة الإصلاح الذاتي عمليًا
بعد وضع الرمز في مكانه يدير الوكيل الحلقةَ نفسها التي يديرها إنسان حريص: `check` للمشروع، وإصلاح ما يُعلّمه، ثم `deploy`، وقراءة النتيجة. في اختبارنا الحي اصطدم الوكيل بفشل حقيقي — ملف Dockerfile نسخ node_modules من الجهاز المضيف إلى الصورة فأسقط الحاوية — فأصلح .dockerignore بنفسه، وأعاد النشر، وتحقق من صحة التطبيق. لا لوحة، ولا إنسان في الحلقة، ولا شيء خارج سطح النشر قد لُمس.
التدوير والإلغاء
تُعرَض الرموز ببادئتها ووقت آخر استخدام وعنوان IP — ما يكفي للتدقيق دون كشف السر. والإلغاء أمرٌ واحد يسري مع الطلب التالي. وإن وقع رمزٌ يومًا في سجل أو نصّ محادثة، فألغِه أولًا وحقّق ثانيًا؛ إصدار بديلٍ يستغرق ثوانيَ.
$ cdnctl deploy-token list
name: claude-code prefix: cdnctl_T1bz last_used: 2026-08-25 15:46 (185.70.97.9)
$ cdnctl deploy-token revoke --id 11
status: success
الأسئلة الشائعة
هل يستطيع الوكيل حذف تطبيقي؟
لا. مسارات DELETE غير مسجّلة على سطح الرمز — يُجاب الطلب بـ 405 مهما أرسل الوكيل. الإجراءات التدميرية تبقى في اللوحة، خلف تسجيل دخولك.
هل يستطيع الوكيل إنفاق المال بالرمز؟
لا. شراء الباقات والدفع والفوترة تسكن اللوحة وحدها. لا يصل الرمز إليها (401)، ويُرسل cdnctl البشر عمدًا إلى المتصفح لإتمام الدفع.
ماذا لو تسرّب الرمز؟
ألغِه — أمر واحد، نافذ فورًا. نصف قطر الانفجار سطحُ نشرِ حسابٍ واحد: لا فوترة، ولا حذف، ولا حسابات أخرى. ثم أصدِر رمزًا جديدًا.
هل يتطلب MCP رمزَ نشر؟
لا — على جهازك يستطيع cdnctl mcp استخدام تسجيل دخولك المعتاد في cdnctl. الرمز يهم حين يعمل الوكيل في مكان لا تضع فيه بيانات دخولك: CI، أو جهاز مشترك، أو جلسة وكيل طويلة العمر.