پرچم‌های قابلیت کدکس یک جدول مخفی در ~/.codex/config.toml نیستند: دستور codex features list در نسخه‌ی 0.158.0 هر ۱۵۱ پرچم را با مرحله‌ی بلوغ و وضعیت مؤثر چاپ می‌کند — از ۱۵۱ پرچم فقط ۴۳ پایدار و روشن‌اند، ۹ پرچم حذف‌شده هنوز true می‌مانند، و یک پرچم‌ای که مستندات رسمی آن را Stable می‌خواند در همین نسخه removed است. پیش از آنکه پرچمی را در پیکربندی‌ات تغییر بدهی، سه ثانیه طول می‌کشد وضعیت واقعی همان نسخه را ببینی.

چرا فهرست پرچم‌ها را باید خودت بخوانی

کدکس پیکربندی خود را از چند لایه می‌خواند و ترتیب اولویت آن از پرچم‌های خط فرمان تا مقدار پیش‌فرض داخلی را مشخص می‌کند. نتیجه این است که یک کلید می‌تواند در فایل تو false باشد و در همان نسخه‌ی کدکس، در لایه‌ای بالاتر، true تحویل داده شود.

مستندات جدول پرچم‌های رایج چهارده کلید را نام می‌برد و خودش می‌گوید این فهرست همه‌ی پرچم‌ها نیست. راستی‌آزمایی این ادعا روی همین نصب، با مقایسه‌ی کلیدهای مستندات با آنچه نسخه‌ی واقعی چاپ می‌کند، دو اختلاف واقعی نشان داد: personality در مستندات Stable و پیش‌فرض روشن است اما در این نسخه removed false گزارش شد، و پرچم web_search اصلاً در فهرست نسخه نیست؛ آنچه هست دو کلید deprecated به نام web_search_cached و web_search_request است.

یک اختلاف سوم هم در توضیح بلوغ بود: مستندات memories را Experimental می‌نامد و خودِ features list در همان نصب آن را stable چاپ می‌کند. این اختلاف‌ها دلیل نمی‌شوند که به یکی از دو اعتماد کنی؛ دلیلشان این است که جدول مستندات یک نقطه‌ی شروع بست، نه مرجع وضعیت.

همین برچسب‌های بلوغ ارزش دقیق دارند و مستندات معنای هرکدام را تعریف می‌کند: Stable یعنی پشتیبانی کامل، مستند و مناسب تولید؛ Experimental یعنی ناپایدار و احتمال حذف یا تغییر؛ Deprecated یعنی هنوز کار می‌کند اما باید مهاجرت کنید. پرچم‌های داخلی کدکس دو برچسب دیگر هم دارند که در آن جدول نیامده‌اند: under development و removed.

اولین اجرا: فهرست کامل و شمارش واقعی

همه‌ی فرمان‌های این بخش روی یک CODEX_HOME موقت اجرا شده‌اند تا فایل پیکربندی واقعی دست‌نخورده بماند.

# همه‌ی فرمان‌های این بخش فقط فهرست را می‌خوانند و چیزی را تغییر نمی‌دهند
$ codex --version
codex-cli 0.158.0

$ codex features list | wc -l
151

# شمارش پرچم‌ها بر اساس مرحله‌ی بلوغ و وضعیت مؤثر، روی همان ۱۵۱ سطر
$ codex features list | awk 'NF>=3 {c[$(NF-1)" "$(NF)]++} END {for (k in c) print c[k], k}' | sort -rn
57 development false
43 stable true
31 removed false
9 removed true
4 stable false
4 deprecated false
3 experimental false

# پرچم‌های حذف‌شده‌ای که هنوز مقدار روشن نشان می‌دهند
$ codex features list | grep -c "removed.*true"
9

هفت سطر شمارش تمام ۱۵۱ پرچم را پوشش می‌دهند و جمعشان دقیقاً ۱۵۱ است. تفسیرش ساده است: ۵۷ پرچم در حال توسعه و خاموش‌اند، ۳۱ پرچم حذف شده و خاموش‌اند، و ۹ پرچم حذف‌شده هنوز روشن گزارش می‌شوند. آن ۹ تا پاک‌سازی‌نشده‌اند: کدکس دیگر آن‌ها را نمی‌خواند، ولی مقدار true را از روی سازگاری نگه داشته و در فهرست نمایش می‌دهد. اگر به‌عنوان وضعیت فعلی بخوانی اشتباه می‌کنی؛ اگر به‌عنوان وضعیت مؤثر بخوانی درست است.

نکته‌ی دوم، شکاف میان «پایدار» و «کاربرپسند» است: ۴۳ پرچم پایدار روشن در برابر ۴ پرچم پایدار خاموش. چهار پرچمی که برچسب Stable دارند ولی پیش‌فرضشان خاموش است، همان جایی هستند که ارزش گرفتن دارند.

پرچموضعیت مؤثر در این نسخه
memoriesstable / false
multi_agent_v2stable / false
recommended_pluginsstable / false
secret_auth_storagestable / false
personalityremoved / false
web_search_cacheddeprecated / false

هر شش سطر از codex features list روی همین نصب خوانده شده‌اند، با زمان خواندن ۱ اکتبر ۲۰۲۶؛ قالب هر سلول «مرحله / وضعیت» است و هر دو بخش در ستون features list جدا چاپ می‌شوند. مقایسه‌ی همین شش پرچم با جدول پرچم‌های رایج در مستندات دو اختلاف می‌دهد: personality آنجا Stable و روشن است و memories آنجا Experimental خوانده شده.

سه راه روشن کردن یک پرچم، و تفاوت مهمشان

کدکس سه مسیر جدا برای تغییر وضعیت یک پرچم دارد و فقط یکی از آن‌ها روی دیسک می‌نویسد. تفاوتشان را با همین اجرای واقعی می‌شود دید.

# نوشتن روی دیسک: فقط این مسیر، فایل پیکربندی را تغییر می‌دهد
$ codex features enable memories
Enabled feature `memories` in config.toml.

$ cat $CODEX_HOME/config.toml
[features]
memories = true

# --enable فقط برای همین اجراست؛ فایل دست‌نخورده می‌ماند
$ codex --enable multi_agent_v2 features list | grep multi_agent
multi_agent                              stable             true
multi_agent_mode                         removed            false
multi_agent_v2                           stable             true

$ cat $CODEX_HOME/config.toml
[features]
memories = true

$ codex -c features.memories=true features list | grep "^memories"
memories                                 stable             true

$ codex features disable memories && cat $CODEX_HOME/config.toml
Disabled feature `memories` in config.toml.
[features]

خط اول پایدار است: features enable کلید را در فایل می‌نویسد و از آن پس هر اجرا آن را می‌بیند. خط پنجم نشان می‌دهد --enable همان وضعیت را می‌دهد بی‌آنکه فایل را لمس کند؛ فایل هنوز فقط همان یک خط را دارد. یعنی --enable یک اجرای یک‌باره است، درست مثل توضیح پرچم -c در تنظیمات پیشرفته: برای یک اجرای خاص، نه برای همیشه.

# پرچم اشتباه با کد خروجی ۱ رد می‌شود، نه با هشدار خاموش
$ codex --enable not_a_real_flag features list
Error: Unknown feature flag: not_a_real_flag
exit=1

# نوشتن روی یک پرچم حذف‌شده چه می‌کند
$ codex features enable steer; cat $CODEX_HOME/config.toml
Enabled feature `steer` in config.toml.
[features]
steer = true
$ codex features list | grep "^steer"
steer                                    removed            true

دو نتیجه از همین دو فرمان می‌گیری. اول اینکه یک نام اشتباه تایپی به‌جای هشدار خاموش، با کد خروجی ۱ رد می‌شود؛ اگر اسکریپتی می‌نویسی که پرچم‌ها را روشن می‌کند، می‌توانی به کد خروجی تکیه کنی نه به خواندن متن خروجی.

دوم اینکه features enable روی یک پرچم حذف‌شده هم بی‌صدا کار می‌کند و کلید را در فایل می‌نویسد. نتیجه‌اش یک خط است که هیچ کدی نمی‌خواند: مقدار steer در فهرست همچنان removed می‌ماند، چون وضعیت حذف‌شده از روی فایل تو نمی‌آید. این همان دلیلی است که نوشتن روی پرچم removed کار بیهوده‌ای است.

یک محدودیت دیگر هم هست که در مرجع خط فرمان آمده: زیرکمان features پرچم --profile را نمی‌پذیرد. پروفایلی که با --profile بارگذاری می‌کنی، روی این زیرکمان اثر ندارد.

قاعده‌ی یک‌خطی

پیش از آنکه پرچمی را در پیکربندی‌ات تغییر بدهی، codex features list را روی همان نسخه‌ای که اجرا می‌کنی بخوان و به برچسب بلوغ آن نگاه کن، نه به جدول مستندات. هر پرچمی که removed نشان می‌دهد را دست‌نخورده رها کن؛ کدکس دیگر آن را نمی‌خواند و نوشتن مقدار برایش فقط یک خط مرده در فایل پیکربندی می‌سازد.

اگر تازه از کار با پرچم‌های کدکس شروع می‌کنی، حذف زیرکمان mcp-server از کدکس همان منطق را از زاویه‌ی دیگری نشان می‌دهد: یک قابلیت حذف می‌شود و کاربر باید مهاجرت کند. برای اینکه بدانی config.toml کجا در اولویت قرار می‌گیرد، تنظیم تلاش استدلال و چک‌اوت کدکس جای مناسبی است.

منابع

  1. مرجع خط فرمان کدکس: زیرکمان features — خوانده شده در ۱ اکتبر ۲۰۲۶
  2. معنای برچسب‌های بلوغ — خوانده شده در ۱ اکتبر ۲۰۲۶
  3. مبانی پیکربندی: ترتیب اولویت و جدول پرچم‌های رایج — خوانده شده در ۱ اکتبر ۲۰۲۶
  4. تنظیمات پیشرفته: پرچم -c و پروفایل‌ها — خوانده شده در ۱ اکتبر ۲۰۲۶
  5. مرجع کامل کلیدهای پیکربندی — خوانده شده در ۱ اکتبر ۲۰۲۶
  6. معرفی Codex CLI و روش نصب — خوانده شده در ۱ اکتبر ۲۰۲۶
  7. چانگ‌لاگ Codex CLI — نسخه‌های 0.159.0 تا 0.159.3 در ۲۹ و ۳۰ سپتامبر ۲۰۲۶
  8. انتشارهای نسخه‌ای کدکس در گیت‌هاب — خوانده شده در ۱ اکتبر ۲۰۲۶