راه غلط: چسباندن رمز پنل در یک agent
agentهای محلی هوش مصنوعی دقیقاً در بخش تکراری انتشار نرمافزار خوباند: بررسیها را اجرا کن، آنچه را علامت زدند درست کن، deploy کن، لاگها را بخوان، تکرار کن. میانبر وسوسهانگیز این است که ورود پنل خود را به agent بدهید تا «همه کار» را بکند. اما حساب پنل شما میتواند روشهای پرداخت را عوض کند، برنامهها را حذف کند و به همه حسابهای CDN شما دست بزند — و هیچکدام از اینها برای انتشار کد لازم نیست. ابزار درست، اعتبارنامهای است که میتواند deploy کند و هیچ کار دیگری نکند.
توکن deploy: یک بار نمایش داده میشود، سخت محدود است
یک فرمان آن را میسازد. توکن متنی دقیقاً یک بار نمایش داده میشود — cdn.com.tr فقط hash آن را نگه میدارد، پس هیچکس (حتی پشتیبانی) بعداً نمیتواند آن را بازخوانی کند. به یک حساب CDN واحد و فقط به سطح deploy گره خورده است: آپلود سورس، build، ساخت و بهروزرسانی برنامهها، deploy، خواندن وضعیت و لاگها.
$ 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 زنده اجرا کردیم:
- سطح deploy روی حساب خودش — کار میکند (200). - همان endpointها برای UUID حسابی دیگر — 404. API حتی تأیید نمیکند که آن حساب دیگر وجود دارد. - endpointهای بیرون از سطح deploy (صورتحساب، DNS، پروفایل کاربر) — 401. - DELETE روی یک برنامه — 405. آن route اصلاً روی سطح توکن ثبت نشده، پس agent نمیتواند آنچه را deploy کرده نابود کند. - هر درخواستی پس از لغو — 401، بلافاصله.
اتصال به Claude Code یا Cursor روی MCP
cdnctl یک سرور MCP همراه دارد: `cdnctl mcp` روی stdio با JSON-RPC حرف میزند و شش ابزار عرضه میکند — project_info، check، entitlement، deploy، apps_list و app_show. ثبت آن یعنی agent شما deploy را همانطور صدا میزند که هر ابزار دیگری را — با نتایج ساختیافته بهجای متن ترمینالِ scrapeشده.
$ claude mcp add cdntr -- cdnctl mcp
# .cursor/mcp.json
{
"mcpServers": {
"cdntr": {
"command": "cdnctl",
"args": ["mcp"],
"env": { "CDN_ACCESS_TOKEN": "cdnctl_T1bz••••…" }
}
}
}
حلقه خودترمیمی در عمل
وقتی توکن سر جای خود باشد، agent همان حلقهای را اجرا میکند که یک انسان دقیق اجرا میکرد: `check` روی پروژه، اصلاح آنچه علامت خورده، `deploy`، خواندن نتیجه. در آزمون زنده ما agent به یک شکست واقعی برخورد — Dockerfileای که node_modules میزبان را در image کپی میکرد و کانتینر را crash میداد — خودش .dockerignore را اصلاح کرد، دوباره deploy کرد و سلامت برنامه را تأیید کرد. نه پنلی، نه انسانی در حلقه، و نه دستی به چیزی بیرون از سطح deploy.
چرخش و لغو
توکنها با پیشوند، آخرین زمان استفاده و 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
پرسشهای پرتکرار
آیا agent میتواند برنامهام را حذف کند؟
نه. routeهای DELETE روی سطح توکن ثبت نشدهاند — درخواست هرچه باشد پاسخ 405 میگیرد. اقدامات مخرب در پنل و پشت ورود شما میمانند.
آیا agent میتواند با توکن پول خرج کند؟
نه. خرید پکیج، پرداخت و صورتحساب فقط در پنل زندگی میکنند. توکن به آنها نمیرسد (401) و cdnctl عمداً انسانها را برای پرداخت به مرورگر میفرستد.
اگر توکن لو برود چه؟
لغوش کنید — یک فرمان، با اثر فوری. شعاع آسیب، سطح deploy یک حساب است: نه صورتحسابی، نه حذفی، نه حساب دیگری. سپس یکی نو بسازید.
آیا MCP توکن deploy لازم دارد؟
نه — روی ماشین خودتان cdnctl mcp میتواند از ورود عادی cdnctl شما استفاده کند. توکن جایی اهمیت پیدا میکند که ورودتان را آنجا نمیگذاشتید: CI، یک ماشین مشترک، یک نشست طولانی agent.