API کلود کد از ایران: کدام مسیر Claude Code کار میکند؟
ایران در فهرست مناطق پشتیبانیشده Anthropic نیست. چهار مسیر اتصال Claude Code، نقش ANTHROPIC_BASE_URL، خطر کلید فروختهشده برای agent و دو راه ماندگار را بررسی میکنیم.
پاسخ کوتاه: API کلود کد از ایران
اگر «API کلود کد» را جستجو کردهاید چون ورود با اشتراک claude.ai برایتان ممکن نیست، پاسخ کوتاه این است: عوضکردن نوع کلید مسئله اصلی را حل نمیکند. Claude Code چند راه برای اتصال به مدل دارد. سیاست مناطق پشتیبانیشده Anthropic همه این راهها را به نام آورده است و ایران در فهرست آن نیست.
در ادامه هر مسیر را جدا بررسی میکنیم. بعد میبینیم یک کلید خریداریشده یا یک endpoint شخص ثالث برای یک agent چه معنایی دارد. در آخر دو راه ماندگار را نشان میدهیم: یکی برای فارسیزبانانی که در یک کشور پشتیبانیشده زندگی میکنند، و یکی برای بقیه.
Claude Code از چه راههایی به مدل وصل میشود؟
Claude Code روی سیستم خودتان اجرا میشود، اما مدل روی سرور دیگری است. هر درخواست باید یک اعتبارنامه (credential) همراه داشته باشد. اعتبارنامه چیزی است که نشان میدهد چه کسی اجازه استفاده دارد و هزینه به حساب چه کسی نوشته میشود. برای یک کاربر تنها، چهار مسیر اصلی وجود دارد:
- ورود با اشتراک claude.ai. همان دستور
/loginبا حساب Pro، Max، Team یا Enterprise. مستندات Claude Code این را مسیر پیشفرض این کاربران میدانند. - کلید API از Claude Console. API یعنی application programming interface، رابطی که برنامهها با آن به مدل درخواست میفرستند. این کلید در متغیر
ANTHROPIC_API_KEYقرار میگیرد. - ارائهدهنده ابری. Amazon Bedrock، Google Cloud's Agent Platform (نام قبلی آن Vertex AI است) یا Microsoft Foundry. این مسیر با متغیرهایی مثل
CLAUDE_CODE_USE_BEDROCK،CLAUDE_CODE_USE_VERTEXیاCLAUDE_CODE_USE_FOUNDRYفعال میشود و ورود از مرورگر لازم ندارد. - یک gateway با قالب Anthropic. آدرس آن در
ANTHROPIC_BASE_URLو توکن آن درANTHROPIC_AUTH_TOKENقرار میگیرد. gateway یک سرور واسط است. درخواست شما را میگیرد و با اعتبارنامه خودش به ارائهدهنده اصلی میفرستد.
مستندات یک مسیر دیگر هم دارند: Claude apps gateway، که Anthropic برای سازمانها ساخته و با ورود سازمانی (SSO، یعنی single sign-on) کار میکند. این مسیر برای یک توسعهدهنده تنها کاربردی ندارد، پس آن را کنار میگذاریم.
وقتی چند اعتبارنامه همزمان تنظیم شده باشد، Claude Code به ترتیب مشخصی یکی را انتخاب میکند. طبق صفحه احراز هویت مستندات، متغیرهای ارائهدهنده ابری اول میآیند. بعد ANTHROPIC_AUTH_TOKEN و بعد ANTHROPIC_API_KEY. بعد از آن apiKeyHelper و چند گزینه دیگر میآیند. ورود اشتراکی با /login آخر از همه است. پس یک متغیر قدیمی در فایل ~/.bashrc میتواند جای ورود شما را بگیرد. مستندات میگویند وقتی یک ورود ذخیرهشده و یک توکن با هم تداخل دارند، Claude Code هنگام شروع هشدار تداخل احراز هویت نشان میدهد. این هشدار را جدی بگیرید.
سیاست مناطق پشتیبانیشده Anthropic درباره ایران چه میگوید؟
Anthropic صفحهای به نام Supported Regions Policy دارد. من این صفحه را در ۲۳ اکتبر ۲۰۲۶ خواندم. تاریخ اجرایی (Effective) که صفحه نشان میدهد Nov 12, 2026 است. این تاریخ هنوز نرسیده است. پس آن را تاریخی بخوانید که خود صفحه اعلام کرده، و قبل از هر تصمیم دوباره صفحه را ببینید.
این صفحه برای خواننده ایرانی چند نکته روشن دارد:
- ایران در فهرست نیست. صفحه کشورها و مناطق پشتیبانیشده را نام میبرد و میگوید: «Any country or region not listed is unsupported.» یعنی هر کشوری که در فهرست نباشد پشتیبانی نمیشود. صفحه فهرست جداگانهای از کشورهای پشتیبانینشده ندارد. نبودن در فهرست، خودش معنای پشتیبانینشدن را دارد.
- عراق در فهرست هست. این دو نام در انگلیسی (Iran و Iraq) شبیه هم هستند. آنها را با هم اشتباه نگیرید.
- سیاست فقط درباره claude.ai نیست. صفحه اپها را به نام آورده، از جمله Claude.ai، Claude Code و Cowork. API و پلتفرم توسعهدهنده هم در آن هست. مدلهای Claude که از طریق پلتفرمهای ابری و فروشندگان مجاز (authorized resellers) عرضه میشوند هم پوشش داده شدهاند.
- معیار، محل فیزیکی و مالکیت است. محدودیت شامل استفاده افراد در زمانی است که بهطور فیزیکی در یک منطقه پشتیبانینشده هستند. شرکتهایی که در چنین منطقهای ثبت شدهاند یا دفتر مرکزی دارند هم محدودند. همینطور شرکتهایی که بیشتر مالکیت یا کنترل آنها، مستقیم یا غیرمستقیم، در دست افراد یا شرکتهایی در مناطق پشتیبانینشده است.
نتیجه ساده است. این سیاست به محل استفادهکننده و مالکیت حساب نگاه میکند، و نوع کلید چیزی را در آن تغییر نمیدهد.
هر مسیر برای کسی که در ایران است کجا میایستد؟
اشتراک claude.ai. صفحه سیاست Claude.ai و Claude Code را به نام آورده است. ورود با اشتراک دقیقاً همان مسیری است که سیاست پوشش میدهد.
کلید Console. صفحه سیاست API و پلتفرم توسعهدهنده را هم نام میبرد. پس جایگزینکردن ورود اشتراکی با کلید API وضعیت شما را در برابر این سیاست عوض نمیکند. من رفتار فرم ثبتنام Console را برای کشورهای پشتیبانینشده بررسی نکردهام، پس درباره آن چیزی نمیگویم.
ارائهدهنده ابری. Bedrock، Agent Platform و Foundry مسیرهای رسمی Claude Code هستند. جزئیات راهاندازی آنها در راهنمای اجرای Claude Code روی Bedrock یا Vertex و اتصال Claude Code به Microsoft Foundry آمده است. اما سیاست Anthropic مدلهای Claude روی پلتفرمهای ابری را هم پوشش میدهد. مستندات Claude Code هم میگویند جلسههایی که از ارائهدهنده ابری احراز هویت میشوند تابع سیاستهای دسترسی همان ارائهدهنده هستند. من شرایط AWS، Google Cloud یا Microsoft را برای ایران بررسی نکردهام. اگر این مسیر برایتان مطرح است، شرایط خود آن ارائهدهنده را بخوانید.
gateway یا کلید فروختهشده. هر سرویسی که بخواهد Claude Code را بدون ورود اشتراکی شما و بدون کلید Console شما راه بیندازد، باید از مسیر چهارم استفاده کند: یک آدرس و یک اعتبارنامه که خودش صادر کرده است. پشت آن آدرس، درخواستها در نهایت با اعتبارنامه حساب دیگری به ارائهدهنده میرسند. مستندات میگویند این ترافیک بهازای هر توکن به حساب کسی نوشته میشود که صاحب اعتبارنامهای است که gateway جلو میفرستد. پس gateway مسیر شبکه را عوض میکند، اما سؤالی را که سیاست میپرسد حذف نمیکند.
ANTHROPIC_BASE_URL بهتنهایی چه چیزی را عوض میکند؟
صفحه اتصال به gateway در مستندات Claude Code این نمونه را نشان میدهد:
export ANTHROPIC_BASE_URL=https://llm-gateway.example.com
export ANTHROPIC_AUTH_TOKEN=sk-gateway-keyاین دو متغیر دو کار جدا انجام میدهند. ANTHROPIC_BASE_URL فقط میگوید درخواست کجا برود. اعتبارنامه کار دیگری است. صفحه LLM gateway در مستندات Claude Code، که در ۲۳ اکتبر ۲۰۲۶ خواندم، این را صریح میگوید:
Setting only that variable, without a gateway credential, doesn't replace the subscription. Requests still route through the gateway, but a saved claude.ai login remains the active credential, so its usage limits and billing apply.
یعنی اگر فقط آدرس را عوض کنید، درخواستها از gateway رد میشوند، اما ورود ذخیرهشده claude.ai همچنان اعتبارنامه فعال است. محدودیت مصرف و صورتحساب همان اشتراک هم سر جایش میماند. فقط وقتی یک متغیر اعتبارنامه gateway یا apiKeyHelper فعال باشد، آن اعتبارنامه در درخواستها جای ورود اشتراکی را میگیرد. در این حالت Claude Code ورود ذخیرهشده را روی دستگاه نگه میدارد، ولی آن را همراه این درخواستها نمیفرستد.
هر متغیر اعتبارنامه را در یک هدر HTTP متفاوت میفرستد. ANTHROPIC_AUTH_TOKEN در هدر Authorization: Bearer میرود و ANTHROPIC_API_KEY در هدر x-api-key. مستندات میگویند اگر به شما نگفتهاند اعتبارنامهتان از کدام نوع است، از ANTHROPIC_AUTH_TOKEN استفاده کنید. خطای 401 از یک gateway دو علت مستند دارد: یا این اعتبارنامه را gateway صادر نکرده، یا آن را در هدری فرستادهاید که gateway نمیخواند. مستندات برای کلیدی که باطل شده، ساختن دوباره کلید در خود gateway را پیشنهاد میکنند. برای بقیه علتهای این خطا، راهنمای خطای Invalid API key در Claude Code را ببینید.
یک نکته دیگر هم در مستندات هست. حتی وقتی gateway تنظیم شده، خود Claude Code بررسی نسخه و دانلودها را مستقیم از Anthropic انجام میدهد، جدا از مسیر gateway. من بررسی نکردهام که نصبکننده Claude Code از شبکههای داخل ایران در دسترس است یا نه.
آیا میشود Claude Code را به Qwen یا یک مدل غیر Claude وصل کرد؟
مستندات Claude Code در همان صفحه LLM gateway میگویند:
Anthropic doesn't endorse, maintain, or audit third-party gateway products, and doesn't support routing Claude Code to non-Claude models through any gateway.
یعنی Anthropic محصولات gateway شخص ثالث را تأیید، نگهداری یا بازبینی نمیکند. فرستادن Claude Code به مدلهای غیر Claude را هم از هیچ gatewayی پشتیبانی نمیکند.
دو نکته فنی در راهنمای سازگاری gateway این را روشنتر میکند. اول: «Claude Code treats the gateway as the Claude API and can't tell which upstream you forward to.» پس Claude Code نمیتواند تشخیص دهد پشت آن آدرس واقعاً کدام مدل است. شما هم از سمت کلاینت راهی برای اثبات آن ندارید. دوم: برای شناسه مدلی که Claude Code آن را نمیشناسد، همه قابلیتهایی را میفرستد که مدلهای فعلی Claude در Claude API میپذیرند، از جمله adaptive reasoning، effort و context management. یک مقصد غیر Anthropic میتواند این فیلدها را رد کند. جدول عیبیابی مستندات خطاهای 400 با نام thinking، adaptive یا context_management را جزو مشکلات شناختهشده gateway آورده است.
نتیجه: Claude Code برای مدل Claude طراحی شده است. اگر قرار است با یک مدل باز کار کنید، یک harness (برنامهای که agent را اجرا میکند) بردارید که برای همان مدلها ساخته شده است. پایینتر یک نمونه را میبینید.
یک endpoint شخص ثالث برای یک agent چه معنایی دارد؟
برای یک چتبات ساده، endpoint شخص ثالث فقط سؤالها و جوابهای شما را میبیند. Claude Code یک agent است. فایل میخواند، دستور اجرا میکند و نتیجه را به گفتوگو اضافه میکند تا مدل قدم بعدی را تصمیم بگیرد.
صفحه استفاده از داده در مستندات میگوید Claude Code برای کار با مدل، «all user prompts and model outputs» را از شبکه میفرستد، رمزنگاریشده با TLS 1.2 یا بالاتر (TLS یعنی transport layer security). TLS فقط مسیر بین شما و endpoint را محافظت میکند. خود endpoint درخواست را باز میکند تا بتواند آن را جلو بفرستد. بدنه هر درخواست همان گفتوگوست، بههمراه نتیجه ابزارهایی که Claude Code به آن اضافه کرده است. محتوای فایلی که agent خوانده و خروجی دستوری که اجرا کرده، در همین نتیجهها هستند.
مستندات gateway یکی از کارهای اصلی gateway را اینطور نوشتهاند: «Audit logging: log every model request for compliance.» این جمله برای سازمانی نوشته شده که gateway خودش را اجرا میکند. اما سازوکار فنی برای هر gateway یکی است: کسی که endpoint را اجرا میکند میتواند همه درخواستها را ببیند و نگه دارد. اگر پروژه شما فایل .env، رمز پایگاه داده یا کلید SSH (Secure Shell) دارد و agent آن را بخواند، آن محتوا هم در همان درخواستها است. پیش از هر کاری با یک endpoint ناشناس، راههای نگهداشتن رازها بیرون از دسترس agentهای کدنویسی را بخوانید.
مشکل دوم پایداری است. کلیدی که به حساب شخص دیگری بسته است، ممکن است بدون خبر قبلی از کار بیفتد. علتهای مستند آن در راهنمای فارسی خرید API Claude از ایران و اینکه چه چیزی واقعاً کار میکند آمده و اینجا تکرار نمیشود. برای یک agent این مشکل بزرگتر است. agentی که وسط یک تغییر چندفایلی متوقف شود، کد را نیمهکاره رها میکند. اگر به هر حال با Claude Code کار میکنید، پیش از هر کار بزرگ یک commit در git بگیرید.
از کجا بفهمیم Claude Code الان از کدام اعتبارنامه استفاده میکند؟
این بررسی را روی دستگاه خودتان انجام دهید. اول ببینید کدام متغیرها در shell فعلی تنظیم شدهاند. این دستور فقط نام متغیرها را چاپ میکند و مقدارشان را نشان نمیدهد:
env | grep -oE '^(ANTHROPIC|CLAUDE_CODE)[A-Z_]*'اگر مقدارها را هم لازم دارید، این دستور خطهای مربوط را کامل چاپ میکند:
env | grep ANTHROPICمراقب باشید. این دستور مقدار توکنها، مثلاً ANTHROPIC_AUTH_TOKEN، را هم روی صفحه میآورد. آن را هنگام اشتراک صفحه اجرا نکنید و خروجیاش را در گروه یا انجمن نچسبانید.
بعد Claude Code را باز کنید و این دستور را بزنید:
/statusمستندات میگویند در تب Status دنبال این خطها باشید. خط Anthropic base URL فقط وقتی دیده میشود که آدرس gateway تنظیم شده باشد. با یک gateway، خط Auth token یا API key نام متغیری را نشان میدهد که اعتبارنامه از آن آمده است. اگر خط Login method یک حساب claude.ai را نام ببرد، یعنی ورود ذخیرهشده اعتبارنامه فعال است. وقتی هم ورود و هم کلید API تنظیم شده باشند، /status اعتبارنامهای را که استفاده نمیشود علامت میزند.
اگر متغیری پیدا کردید که نمیخواهید، آن را از shell فعلی پاک کنید:
unset ANTHROPIC_BASE_URL ANTHROPIC_AUTH_TOKEN ANTHROPIC_API_KEYاگر در ترمینال جدید دوباره برگشت، یعنی در یکی از فایلهای راهاندازی shell مثل ~/.bashrc، ~/.zshrc یا ~/.profile نوشته شده است. خط مربوط را از همان فایل حذف کنید و دوباره /status را ببینید.
راه ماندگار اول: فارسیزبانانی که در کشور پشتیبانیشده زندگی میکنند
بسیاری از فارسیزبانان بیرون از ایران زندگی میکنند. برای آنها معیار سیاست، کشوری است که در آن هستند. اول کشور خود را در فهرست Supported Regions Policy پیدا کنید. اگر هست، یک حساب واقعاً متعلق به خودتان بسازید: حسابی که خودتان در یک کشور پشتیبانیشده از آن استفاده میکنید. اگر برای یک شرکت کار میکنید، شرکت هم نباید در یک منطقه پشتیبانینشده ثبت شده باشد، دفتر مرکزی داشته باشد، یا بیشتر مالکیت و کنترلش آنجا باشد.
این سیاست به محل فیزیکی نگاه میکند. بند «physically located» زمانی را هم در بر میگیرد که به یک منطقه پشتیبانینشده سفر کردهاید. حسابی که در کشور محل زندگیتان درست است، استفاده در طول آن سفر را خودبهخود مجاز نمیکند.
بعد باید بین اشتراک و کلید API انتخاب کنید. تفاوت هزینه، محدودیتها و نحوه تنظیم این دو در انتخاب بین ورود با اشتراک و کلید API در Claude Code توضیح داده شده است.
راه ماندگار دوم: OpenCode با یک مدل باز روی سرور خودتان
برای بقیه، مسیر پایدار یک harness متنباز است که به یک مدل باز روی سرور خودتان وصل شود. OpenCode یکی از اینهاست. سایت آن میگوید: «OpenCode is an open source agent that helps you write code in your terminal, IDE, or desktop.» مجوز آن MIT است. طبق همان صفحه، از بیش از ۷۵ ارائهدهنده مدل از طریق Models.dev پشتیبانی میکند، از جمله مدلهای محلی.
مستندات ارائهدهندههای OpenCode میگویند هر ارائهدهنده سازگار با OpenAI را میتوان به آن وصل کرد. فرض کنید OpenCode و Ollama روی یک VPS (virtual private server، سرور مجازی اختصاصی) نصب شدهاند و شما با SSH به آن وصل میشوید. در این حالت فایل opencode.json در پوشه پروژه میتواند این شکل را داشته باشد. ساختار آن از نمونه Ollama در مستندات OpenCode آمده است:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama (local)",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"llama2": {
"name": "Llama 2"
}
}
}
}
}بهجای llama2 نام دقیق مدلی را بگذارید که روی سرور دارید. دستور ollama list آن را نشان میدهد. چون آدرس localhost است، API مدل لازم نیست روی اینترنت باز باشد. نصب کامل و نگهداشتن جلسه روی سرور در راهنمای اجرای OpenCode روی VPS آمده است. برای انتخاب مدل، و اینکه یک مدل باز چه چیزی را جایگزین میکند و چه چیزی را نه، راهنمای مدل باز بهجای پلن Claude را بخوانید.
یک نکته درباره حریم خصوصی. سایت OpenCode میگوید کد و داده زمینه شما را ذخیره نمیکند، اما بخش پرسشهای متداول آن یک قید دارد: «Your data and information is only stored when you use our free models.» یعنی مدلهای رایگان میزبانیشده خود OpenCode حکم دیگری دارند. وقتی OpenCode را به مدل روی سرور خودتان وصل میکنید، درخواستها از سرور شما بیرون نمیروند. این همان چیزی است که در بخش endpoint شخص ثالث دنبالش بودیم.
یک مدل باز Claude نیست. کیفیت کار به مدلی بستگی دارد که انتخاب میکنید و به سختافزاری که دارید. من دسترسی به نصبکنندههای OpenCode و Ollama از داخل ایران را بررسی نکردهام. شرایط استفاده ارائهدهنده سرور را هم خودتان بخوانید.
FAQ
آیا با تنظیم ANTHROPIC_BASE_URL میتوانم بدون اشتراک از Claude Code استفاده کنم؟
تنظیم ANTHROPIC_BASE_URL بهتنهایی فقط مسیر درخواست را عوض میکند. مستندات Claude Code میگویند بدون یک اعتبارنامه gateway، ورود ذخیرهشده claude.ai همچنان اعتبارنامه فعال است و محدودیت و صورتحساب آن اعمال میشود. اعتبارنامه وقتی جای ورود را میگیرد که ANTHROPIC_AUTH_TOKEN، ANTHROPIC_API_KEY یا apiKeyHelper هم تنظیم شده باشد. سیاست مناطق پشتیبانیشده Anthropic هم API و فروشندگان مجاز را پوشش میدهد، پس gateway سؤال سیاست را حذف نمیکند.
آیا ایران در فهرست کشورهای پشتیبانیشده Anthropic هست؟
نه. در صفحه Supported Regions Policy که در ۲۳ اکتبر ۲۰۲۶ خواندم، ایران در فهرست نیست. صفحه میگوید هر کشور یا منطقهای که در فهرست نباشد پشتیبانی نمیشود. عراق در فهرست هست. صفحه تاریخ اجرایی Nov 12, 2026 را نشان میدهد و اپهایی مثل Claude.ai و Claude Code، API، پلتفرمهای ابری و فروشندگان مجاز را پوشش میدهد.
آیا میتوانم Claude Code را از طریق یک gateway به Qwen یا یک مدل باز دیگر وصل کنم؟
مستندات Claude Code میگویند Anthropic فرستادن Claude Code به مدلهای غیر Claude را از هیچ gatewayی پشتیبانی نمیکند. Claude Code نمیتواند تشخیص دهد پشت gateway کدام مدل است. برای شناسه مدلی که نمیشناسد، فیلدهای مخصوص Claude مثل adaptive reasoning و context management را میفرستد، و یک مقصد دیگر ممکن است آنها را با خطای 400 رد کند. برای مدل باز، یک harness متنباز مثل OpenCode انتخاب بهتری است.
چطور بفهمم Claude Code الان از کدام کلید یا ورود استفاده میکند؟
در ترمینال دستور env | grep -oE '^(ANTHROPIC|CLAUDE_CODE)[A-Z_]*' را بزنید تا نام متغیرهای تنظیمشده را بدون مقدارشان ببینید. بعد در Claude Code دستور /status را اجرا کنید. خط Anthropic base URL فقط وقتی دیده میشود که gateway تنظیم شده باشد. خط Login method با نام یک حساب claude.ai یعنی ورود ذخیرهشده فعال است. دستور env | grep ANTHROPIC مقدار توکنها را هم چاپ میکند، پس خروجی آن را جایی نچسبانید.
کلید Claude Code که از یک فروشنده خریدهام چه چیزهایی را میبیند؟
Claude Code یک agent است. فایل میخواند، دستور اجرا میکند و نتیجه را در گفتوگو به مدل میفرستد. هر endpoint که درخواستها از آن رد میشوند، بدنه آنها را باز میکند تا جلو بفرستد. پس کسی که آن را اداره میکند میتواند محتوای فایلها و خروجی دستورها را ببیند و نگه دارد. TLS فقط مسیر بین شما و آن endpoint را محافظت میکند. پیش از استفاده، رازهایی مثل فایل .env و کلیدهای SSH را از دسترس agent بیرون نگه دارید.