تصور کنید در دو ترمینال مختلف، دو حساب مختلف از Claude Code را باز کردهاید و هر کدام روی پروژهای متفاوت کار میکنند، بدون اینکه یکی باعث خروج دیگری شود. اگر تا امروز هر بار با ورود به حساب دوم، از حساب اول بیرون انداخته میشدید، این راهکار دقیقاً برای پایان دادن به این چالش طراحی شده است.
طبق گزارش فنی منتشر شده در ۲۹ ژوئیه ۲۰۲۶ در وبسایت dev.to، مشکل اصلی در اینجا سیستم مدیریت هویت آنتروپیک (Anthropic) است. این شرکت توکنهای OAuth را در یک فایل واحد به نام .credentials.json در پوشه پیشفرض ذخیره میکند. از آنجا که هر کاربر بهطور پیشفرض تنها یک پوشه پیکربندی (در macOS/Linux مسیر ~/.claude و در ویندوز %USERPROFILE%\.claude) دارد، ورود به حساب دوم، توکن حساب اول را بازنویسی میکند و باعث قطع اتصال فعال در پنجرههای دیگر میشود.
همانطور که در تحلیل قبلی ما دربارهی قابلیتهای شبیهساز Claude Opus 5 اشاره کردیم، بهینهسازی گردشکار برای استفاده از عاملهای سطح بالا در محیطهای حرفهای حیاتی است. بسیاری از کاربران برای مدیریت سهمیههای مختلف (Quota) یا جداسازی هویت پروژهها به این قابلیت نیاز دارند. اما یک نکته کلیدی وجود دارد: تاریخچه جلسات بر اساس مسیر پروژه ذخیره میشود، نه حساب کاربری. این یعنی اگر از یک حساب خارج شوید و با حساب دیگری در همان پوشه دستور claude --continue را بزنید، دقیقاً از همانجایی ادامه میدهید که حساب قبلی رها کرده بود؛ زیرا قفل محلی برای تاریخچه بر اساس حساب وجود ندارد.

پیادهسازی ایزولاسیون
برای جداسازی حسابها، باید متغیر CLAUDE_CONFIG_DIR را قبل از اجرای ابزار به یک پوشه جدید ارجاع دهید. بر اساس مستندات فنی، این فرآیند در سه گام ساده انجام میشود:
گام اول: ایجاد پوشه
یک پوشه منحصربهفرد بسازید؛ برای مثال: mkdir -p ~/.claude-work.
گام دوم: یکپارچهسازی با شل (Shell)
برای اینکه هر بار متغیر را تایپ نکنید، آن را در قالب یک تابع تعریف کنید. در macOS یا لینوکس، افزودن کد زیر به .zshrc یا .bashrc باعث میشود متغیر فقط برای همان فراخوانی اعمال شود:claude2() { CLAUDE_CONFIG_DIR="$HOME/.claude-work" command claude "$@" }
برای کاربران ویندوز (PowerShell)، به دلیل نبود پیشوند متغیر محیطی در خط فرمان، باید تابع را در $PROFILE تعریف کنند. در این اسکریپت، استفاده از بلوک finally حیاتی است تا حتی در صورت بستن برنامه با Ctrl+C، متغیر محیطی پاک شود و پنجره به طور اتفاقی روی حساب دوم باقی نماند. همچنین استفاده از Remove-Item به این دلیل است که در پاورشل ۵.۱، اختصاص رشته خالی متغیر را حذف نمیکند، بلکه آن را «خالی» نگه میدارد.
گام سوم: تایید صحت
با دستور claude2 جلسه دوم را شروع کرده و وارد شوید. سپس با دستور md5sum فایلهای .credentials.json دو پوشه را مقایسه کنید. اگر هشها متفاوت بودند، یعنی ایزولاسیون با موفقیت برقرار شده است. در داخل جلسه، دستور /status تنها راه قابلاعتماد برای شناسایی حساب فعال است.

چالش «وضعیت تهی»
نکته مهم این است که با تغییر مسیر پیکربندی، محیط شما کاملاً نو میشود. هر آنچه باعث شخصیسازی محیط شما شده است — از جمله پلاگینها، سرورهای پروتکل زمینه مدل (MCP) — شبیه به جابهجایی به یک دفتر کار جدید است که میز آن کاملاً خالی است. تمام تنظیمات در پوشه پیکربندی ذخیره میشوند، نه در حساب کاربری؛ بنابراین حساب دوم شما هیچکدام از تنظیمات حساب اول را نمیبیند.

تفکیک اجزای قابل انتقال
هنگام راهاندازی پوشه دوم، باید بدانید چه چیزهایی را نباید کپی کنید:
- موارد غیرقابل انتقال (کپی نکنید):
- پلاگینها: مسیرهای نصب در
installed_plugins.jsonبهصورت مطلق ذخیره شدهاند و کپی آنها باعث خطا در آدرسدهی میشود. - توکنهای OAuth: کپی فایل
.credentials.jsonصرفاً باعث کلون کردن حساب میشود. - پروفایلهای هویت: شامل
userIDوmachineIDدر فایل.claude.jsonاست.
- پلاگینها: مسیرهای نصب در
- موارد قابل انتقال (کپی دستی):
- سرورهای MCP: تنظیمات در
.mcp.json. - مهارتهای کاربر: فایلهای موجود در پوشه
skills/. - هوکها (Hooks): تعاریف موجود در
settings.json. - حافظه پروژه و تاریخچه: فایلهای
.jsonlدر پوشهprojects/.
- سرورهای MCP: تنظیمات در
در یک تست مهاجرتی، حجم بخشهای قابل انتقال (شامل تنظیمات و حافظهها) تنها ۰.۱۳ مگابایت بود، در حالی که ۳۳۲ مگابایت تاریخچه جلسات و ۸.۵ مگابایت کش پلاگینها به دلیل حجم بالا رها شدند. برای نصب مجدد پلاگینها در حساب دوم، از دستور claude plugin install استفاده کنید.
تلهی هوکها (The Hook Trap)
خطرناکترین حالت زمانی رخ میدهد که شما تنظیمات را کپی میکنید اما اسکریپتهای هوک شما دارای مسیرهای سختافزاری (Hard-coded) هستند. اگر اسکریپتی مسیری مثل ~/.claude/task_state.json را مستقیماً صدا بزند، هر دو حساب بهطور مخفیانه روی یک فایل وضعیت مینویسند. این تداخل هیچ خطایی نمیدهد و باعث میشود دادههای حساب B در جلسه حساب A تزریق شود.
راه حل این است که مسیرها را از متغیر محیطی استخراج کنید:$configDir = if ($env:CLAUDE_CONFIG_DIR) { $env:CLAUDE_CONFIG_DIR } else { "$env:USERPROFILE\.claude" }
مدیریت سهمیه و حافظه
باید توجه داشت که CLAUDE_CONFIG_DIR فقط اعتبارنامهها را ایزوله میکند، نه سهمیه (Quota) را. اگر یک حساب را در دو پوشه مختلف باز کنید، هر دو ترمینال از یک مخزن مشترک مصرف میکنند. طبق دادههای منتشر شده، سهمیههای فعلی برای پلنهای Max ($۲۰۰/ماه) حدود ۹۰۰ پیام در هر پنج ساعت است. همچنین، هر جلسه Claude Code پردازشهای MCP خود را جداگانه اجرا میکند که میتواند اثر حافظه (RAM) سیستم را ۲ تا ۳ برابر افزایش دهد.

تحلیل: موازیسازی در برابر جایگزینی
این روش تفاوت میان «جایگزینی متوالی» و «موازیسازی واقعی» را روشن میکند. در جایگزینی متوالی، شما فقط برای تغییر سهمیه، یک بار خارج و دوباره وارد میشوید و چون تاریخچهها مستقل هستند، گفتگو ادامه مییابد. اما در موازیسازی واقعی، دو جریان کاری مجزا دارید. توصیه میشود در حالت موازی، برای هر جلسه از یک git worktree مجزا استفاده کنید تا از تداخل ویرایشها جلوگیری شود.
گام بعدی شما
- اگر از چندین حساب برای پروژههای مختلف استفاده میکنید، متغیر
CLAUDE_CONFIG_DIRرا در فایل پروفایل شل خود تعریف کنید. - تمام اسکریپتهای کمکی و هوکهای خود را برای حذف مسیرهای سختافزاری
~/.claudeبازبینی کنید. - از دستور
/statusبرای تایید هویت حساب در هر ترمینال استفاده نمایید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو