@qwen-code/qwen-code 0.19.0 → 0.19.1-nightly.20260624.a234860a4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/bundled/qc-helper/SKILL.md +13 -5
  2. package/bundled/qc-helper/docs/configuration/_meta.ts +1 -0
  3. package/bundled/qc-helper/docs/configuration/auth.md +68 -48
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +217 -195
  5. package/bundled/qc-helper/docs/configuration/settings.md +30 -14
  6. package/bundled/qc-helper/docs/configuration/themes.md +7 -4
  7. package/bundled/qc-helper/docs/extension/extension-releasing.md +1 -1
  8. package/bundled/qc-helper/docs/extension/introduction.md +3 -15
  9. package/bundled/qc-helper/docs/features/arena.md +3 -3
  10. package/bundled/qc-helper/docs/features/channels/overview.md +1 -1
  11. package/bundled/qc-helper/docs/features/channels/plugins.md +1 -1
  12. package/bundled/qc-helper/docs/features/commands.md +6 -1
  13. package/bundled/qc-helper/docs/features/headless.md +1 -1
  14. package/bundled/qc-helper/docs/features/mcp.md +24 -8
  15. package/bundled/qc-helper/docs/features/sandbox.md +2 -2
  16. package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
  17. package/bundled/qc-helper/docs/integration-github-action.md +2 -2
  18. package/bundled/qc-helper/docs/overview.md +1 -1
  19. package/bundled/qc-helper/docs/quickstart.md +9 -5
  20. package/bundled/qc-helper/docs/qwen-serve.md +15 -3
  21. package/bundled/qc-helper/docs/support/tos-privacy.md +1 -1
  22. package/chunks/{agent-IPSDEZNB.js → agent-6KV474S5.js} +7 -7
  23. package/chunks/{agent-headless-ZMTUWMZJ.js → agent-headless-XO7MM6JT.js} +7 -7
  24. package/chunks/{anthropicContentGenerator-6MCH4X6S.js → anthropicContentGenerator-7352A7I5.js} +2 -2
  25. package/chunks/{artifact-tool-PBX64YTT.js → artifact-tool-5J4HUZAV.js} +1 -1
  26. package/chunks/{askUserQuestion-5ZQOWSRT.js → askUserQuestion-HF7HCWDD.js} +1 -1
  27. package/chunks/{chunk-PO5LVPK3.js → chunk-2QDQTWCI.js} +1 -1
  28. package/chunks/{chunk-255L5QYW.js → chunk-3BR4OIOE.js} +1 -1
  29. package/chunks/{chunk-KFR4QTV3.js → chunk-54J4JDWT.js} +123 -174
  30. package/chunks/{chunk-S7ILEIB4.js → chunk-76BDT2HH.js} +4 -5
  31. package/chunks/{chunk-YF3ORUIU.js → chunk-7QBKO4A6.js} +2348 -1817
  32. package/chunks/{chunk-GAAALA2X.js → chunk-C4JC2FL3.js} +7 -6
  33. package/chunks/{chunk-CICUTYTF.js → chunk-HNYTRFAM.js} +52 -45
  34. package/chunks/{chunk-JRVB4QUY.js → chunk-KBXLIVWQ.js} +1 -1
  35. package/chunks/{chunk-QKUAGMGE.js → chunk-NKJ6LRCR.js} +1 -1
  36. package/chunks/{chunk-57XRIZVC.js → chunk-NWLUISRA.js} +1 -1
  37. package/chunks/{chunk-VRIVIYRL.js → chunk-TKXRLRTF.js} +4 -4
  38. package/chunks/{computer-use-YYK42DD5.js → computer-use-WOKHYISX.js} +7 -7
  39. package/chunks/{contextCommand-BO45MUAA.js → contextCommand-JSYQAO3O.js} +9 -9
  40. package/chunks/{cron-create-DXKAP5KN.js → cron-create-A5637KCI.js} +9 -6
  41. package/chunks/{cron-delete-WGO4PZTF.js → cron-delete-AADOSEOZ.js} +1 -1
  42. package/chunks/{cron-list-EY7D3ZUC.js → cron-list-OFCPTT2Y.js} +1 -1
  43. package/chunks/{edit-QERNJN7K.js → edit-6EN6NO6G.js} +7 -7
  44. package/chunks/{en-UTXMGXIR.js → en-7OGNWWME.js} +1 -0
  45. package/chunks/{enter-worktree-6ZKH5IL3.js → enter-worktree-XJ4S74CL.js} +7 -7
  46. package/chunks/{enterPlanMode-B2PBF4MA.js → enterPlanMode-GQNQIH2V.js} +7 -7
  47. package/chunks/{exit-worktree-EOCMQO4I.js → exit-worktree-6MKLATVB.js} +7 -7
  48. package/chunks/{exitPlanMode-WSRXCBRZ.js → exitPlanMode-YACWA5GO.js} +7 -7
  49. package/chunks/{geminiContentGenerator-NTR4LTKS.js → geminiContentGenerator-OLJGOIWO.js} +1 -1
  50. package/chunks/{glob-IWDJQI2V.js → glob-YHSIN2LG.js} +7 -7
  51. package/chunks/{grep-2DV5BXMH.js → grep-5EMEAJBO.js} +7 -7
  52. package/chunks/{loop-wakeup-XVSDE7QR.js → loop-wakeup-DGSMT4N6.js} +2 -2
  53. package/chunks/{ls-LPY3ATQQ.js → ls-UGRZ4ZOM.js} +1 -1
  54. package/chunks/{lsp-ZT3AAXIF.js → lsp-72IJURW3.js} +1 -1
  55. package/chunks/{monitor-6HBDS2RS.js → monitor-ZGXTGINM.js} +7 -7
  56. package/chunks/{notebook-edit-J5AY5BRY.js → notebook-edit-O7WO3APR.js} +7 -7
  57. package/chunks/{openaiContentGenerator-ENABCJDM.js → openaiContentGenerator-N4FCEGU2.js} +6 -6
  58. package/chunks/{qwenContentGenerator-ISW42U7C.js → qwenContentGenerator-BOAZ7MMG.js} +9 -9
  59. package/chunks/{read-file-NRX2FSSQ.js → read-file-RB35MI5I.js} +3 -3
  60. package/chunks/{ripGrep-WF5CKHR5.js → ripGrep-CWJOA6JG.js} +7 -7
  61. package/chunks/{scheduler-PNPG5WJ3.js → scheduler-XUBHNI2Z.js} +7 -7
  62. package/chunks/{send-message-447W6NH6.js → send-message-URUZ7PLA.js} +1 -1
  63. package/chunks/{serve-ZBRCIIHW.js → serve-P356SCA2.js} +197 -31
  64. package/chunks/{shell-DLIL6MLU.js → shell-5TRHTPML.js} +7 -7
  65. package/chunks/{skill-32TXHY4A.js → skill-RW6N7GHL.js} +3 -3
  66. package/chunks/{src-PDDLF5BB.js → src-SPEHQKTK.js} +35 -9
  67. package/chunks/{syntheticOutput-GQRDRLGR.js → syntheticOutput-65FRJGWM.js} +2 -2
  68. package/chunks/{task-create-66DDSTVI.js → task-create-IH45HOFT.js} +2 -2
  69. package/chunks/{task-list-GOPXRSHG.js → task-list-FUB6JWSX.js} +1 -1
  70. package/chunks/{task-stop-M7NKGFX2.js → task-stop-P6IOHQM3.js} +1 -1
  71. package/chunks/{task-update-M5TBHLZV.js → task-update-RTUT7LJV.js} +2 -2
  72. package/chunks/{team-create-EHLDSJGI.js → team-create-D6GSPXCO.js} +7 -7
  73. package/chunks/{team-delete-DKKDS65W.js → team-delete-RXGYRMHC.js} +1 -1
  74. package/chunks/{todoWrite-4VX7X44D.js → todoWrite-O6JK24G6.js} +1 -1
  75. package/chunks/{tool-search-FU7IZAOO.js → tool-search-6YIMUUVD.js} +3 -3
  76. package/chunks/{web-fetch-YPP3V4FJ.js → web-fetch-KUMBROUI.js} +2 -2
  77. package/chunks/{workflow-WUDNBCGX.js → workflow-ML3XFTCN.js} +23 -15
  78. package/chunks/{write-file-NVFPX6CH.js → write-file-VLT6ODLK.js} +7 -7
  79. package/chunks/{zh-YOXVTJU5.js → zh-3RMSEO5M.js} +1 -0
  80. package/chunks/{zh-TW-J2TTW67R.js → zh-TW-R7WRLTJS.js} +1 -0
  81. package/cli.js +778 -382
  82. package/locales/en.js +1 -0
  83. package/locales/zh-TW.js +1 -0
  84. package/locales/zh.js +1 -0
  85. package/package.json +3 -3
  86. package/web-shell/assets/{arc-pxOt9B72.js → arc-DHUeMnnj.js} +1 -1
  87. package/web-shell/assets/{architectureDiagram-3BPJPVTR-B9XuYYOT.js → architectureDiagram-3BPJPVTR-DlX12yyj.js} +1 -1
  88. package/web-shell/assets/{blockDiagram-GPEHLZMM-5yK68iu4.js → blockDiagram-GPEHLZMM-DTFUXMUT.js} +1 -1
  89. package/web-shell/assets/{c4Diagram-AAUBKEIU-B1LY-qNI.js → c4Diagram-AAUBKEIU-CWdB54fk.js} +1 -1
  90. package/web-shell/assets/channel-C3WhMjjP.js +1 -0
  91. package/web-shell/assets/{chunk-2J33WTMH-DkgXg7cM.js → chunk-2J33WTMH-CF5C5jNR.js} +1 -1
  92. package/web-shell/assets/{chunk-4BX2VUAB-DdM45KFM.js → chunk-4BX2VUAB-Cw7Ydfji.js} +1 -1
  93. package/web-shell/assets/{chunk-55IACEB6-CmdsDjD4.js → chunk-55IACEB6-CnbI1ZCw.js} +1 -1
  94. package/web-shell/assets/{chunk-727SXJPM-CQ4pJ5GH.js → chunk-727SXJPM-DmSy00Pe.js} +1 -1
  95. package/web-shell/assets/{chunk-AQP2D5EJ-Dy6UWz37.js → chunk-AQP2D5EJ-DgNgXqBu.js} +1 -1
  96. package/web-shell/assets/{chunk-FMBD7UC4-CC8nFqap.js → chunk-FMBD7UC4-tz2IvOXv.js} +1 -1
  97. package/web-shell/assets/{chunk-ND2GUHAM-CkmS7lx7.js → chunk-ND2GUHAM-DaBLEBPa.js} +1 -1
  98. package/web-shell/assets/{chunk-QZHKN3VN-DynyqleZ.js → chunk-QZHKN3VN-DVCQST3O.js} +1 -1
  99. package/web-shell/assets/classDiagram-4FO5ZUOK-CQ6TXPif.js +1 -0
  100. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CQ6TXPif.js +1 -0
  101. package/web-shell/assets/{cose-bilkent-S5V4N54A-DA0fzCsY.js → cose-bilkent-S5V4N54A-CAKTcdCQ.js} +1 -1
  102. package/web-shell/assets/{dagre-BM42HDAG-DHYXRqCo.js → dagre-BM42HDAG-BdkBwlKg.js} +1 -1
  103. package/web-shell/assets/{diagram-2AECGRRQ-DWD6BcPs.js → diagram-2AECGRRQ-DYt3G65F.js} +1 -1
  104. package/web-shell/assets/{diagram-5GNKFQAL-CX9wnqVc.js → diagram-5GNKFQAL-BWvROWjY.js} +1 -1
  105. package/web-shell/assets/{diagram-KO2AKTUF-BpE8Kbt8.js → diagram-KO2AKTUF-BvvgwIaQ.js} +1 -1
  106. package/web-shell/assets/{diagram-LMA3HP47-DLPcrP0C.js → diagram-LMA3HP47-E7NLSNKg.js} +1 -1
  107. package/web-shell/assets/{diagram-OG6HWLK6-CSUCBsCe.js → diagram-OG6HWLK6-CYmUBgpE.js} +1 -1
  108. package/web-shell/assets/{erDiagram-TEJ5UH35-d3Z0uMXS.js → erDiagram-TEJ5UH35-BU5gY30h.js} +1 -1
  109. package/web-shell/assets/{flowDiagram-I6XJVG4X-C7vj5FX3.js → flowDiagram-I6XJVG4X-V_ZssSZ9.js} +1 -1
  110. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BV9UvDV_.js → ganttDiagram-6RSMTGT7-QIShlsdI.js} +1 -1
  111. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CoWp0mW4.js → gitGraphDiagram-PVQCEYII-DJxdu2YS.js} +1 -1
  112. package/web-shell/assets/index-BPnhI7gl.css +1 -0
  113. package/web-shell/assets/index-De4rqTsW.js +706 -0
  114. package/web-shell/assets/{infoDiagram-5YYISTIA-DUswfJHA.js → infoDiagram-5YYISTIA-BqjdrFeO.js} +1 -1
  115. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-WidEKukx.js → ishikawaDiagram-YF4QCWOH-BP_a2YZ2.js} +1 -1
  116. package/web-shell/assets/{journeyDiagram-JHISSGLW-D7IRK3VN.js → journeyDiagram-JHISSGLW-BXg-S3Lk.js} +1 -1
  117. package/web-shell/assets/{kanban-definition-UN3LZRKU-CwFJ6Cja.js → kanban-definition-UN3LZRKU-BksAkdEJ.js} +1 -1
  118. package/web-shell/assets/{linear-BQ8GvDRY.js → linear-D2m9-ODE.js} +1 -1
  119. package/web-shell/assets/{mermaid.core-CwF8A_xO.js → mermaid.core-dTtkZp2F.js} +5 -5
  120. package/web-shell/assets/{mindmap-definition-RKZ34NQL-TR1s0iZi.js → mindmap-definition-RKZ34NQL-Bft9my8O.js} +1 -1
  121. package/web-shell/assets/{pieDiagram-4H26LBE5-Cd91pMl9.js → pieDiagram-4H26LBE5-Cw8S-alZ.js} +1 -1
  122. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BGxGDNMl.js → quadrantDiagram-W4KKPZXB-DaDoTMts.js} +1 -1
  123. package/web-shell/assets/{requirementDiagram-4Y6WPE33-Cq3fWmYz.js → requirementDiagram-4Y6WPE33-Cp5kSpwj.js} +1 -1
  124. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-ChLyGdq0.js → sankeyDiagram-5OEKKPKP-CW8RsJJZ.js} +1 -1
  125. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-tazy79aB.js → sequenceDiagram-3UESZ5HK-DTfpIiJK.js} +1 -1
  126. package/web-shell/assets/{stateDiagram-AJRCARHV-dIYLUNSf.js → stateDiagram-AJRCARHV-DixFVzEs.js} +1 -1
  127. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DZgE04s3.js +1 -0
  128. package/web-shell/assets/{timeline-definition-PNZ67QCA-BuENhrC2.js → timeline-definition-PNZ67QCA-DYsbXn5l.js} +1 -1
  129. package/web-shell/assets/{vennDiagram-CIIHVFJN-DLtum9dF.js → vennDiagram-CIIHVFJN-HUpRpuUp.js} +1 -1
  130. package/web-shell/assets/{wardley-L42UT6IY-Bf7OSF3y.js → wardley-L42UT6IY-cT3nQH_T.js} +1 -1
  131. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-slMw3OB3.js → wardleyDiagram-YWT4CUSO-Dmm7J6Qc.js} +1 -1
  132. package/web-shell/assets/{xychartDiagram-2RQKCTM6-CdxOm8oC.js → xychartDiagram-2RQKCTM6-CX0L5p9C.js} +1 -1
  133. package/web-shell/index.html +3 -3
  134. package/web-shell/assets/channel-Cx7egbSX.js +0 -1
  135. package/web-shell/assets/classDiagram-4FO5ZUOK-CwH_F8cH.js +0 -1
  136. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwH_F8cH.js +0 -1
  137. package/web-shell/assets/index-BDZiTAkl.css +0 -1
  138. package/web-shell/assets/index-CjTH6cLP.js +0 -516
  139. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-luL7KTiX.js +0 -1
  140. package/chunks/{chunk-JDV3VBPY.js → chunk-F6XNTYNE.js} +202 -202
  141. package/chunks/{chunk-PLY4F7QW.js → chunk-L7U2RI5O.js} +54 -54
@@ -88,12 +88,16 @@ Settings are organized into categories. Most settings should be placed within th
88
88
  | `general.gitCoAuthor.pr` | boolean | Append a Qwen Code attribution line to pull request descriptions when running `gh pr create`. | `true` |
89
89
  | `general.defaultFileEncoding` | string | Default encoding for new files. Use `"utf-8"` (default) for UTF-8 without BOM, or `"utf-8-bom"` for UTF-8 with BOM. Only change this if your project specifically requires BOM. | `"utf-8"` |
90
90
  | `general.cleanupPeriodDays` | number | Days to retain `~/.qwen/file-history/` session backups used by `/rewind`. Backups older than this are removed by a background pass that runs at most once per day. `0` = minimum retention (~1 hour): keeps sessions touched in the last hour plus the currently active one. Changes take effect after restart. | `30` |
91
+ | `general.language` | enum | Language for the user interface. Use `"auto"` to detect from system settings, or a language code (e.g. `"zh-CN"`, `"fr"`). Custom codes can be added by placing JS locale files in `~/.qwen/locales/`. See [i18n](../features/language). Requires restart. | `"auto"` |
92
+ | `general.outputLanguage` | string | Language for model output. Use `"auto"` to detect from system settings, or set a specific language. Requires restart. | `"auto"` |
93
+ | `general.dynamicCommandTranslation` | boolean | Enable AI translation of dynamic slash-command descriptions. When disabled, dynamic commands keep their original descriptions and skip translation model calls. | `false` |
91
94
 
92
95
  #### output
93
96
 
94
97
  | Setting | Type | Description | Default | Possible Values |
95
98
  | --------------- | ------ | ----------------------------- | -------- | ------------------ |
96
- | `output.format` | string | The format of the CLI output. | `"text"` | `"text"`, `"json"` |
99
+ | `output.format` | string | The format of the CLI output. | `"text"` | `"text"`, `"json"` |
100
+ | `output.showTimestamps` | boolean | Show an `[HH:MM:SS]` timestamp before each assistant response. | `false` | |
97
101
 
98
102
  #### ui
99
103
 
@@ -122,7 +126,6 @@ Settings are organized into categories. Most settings should be placed within th
122
126
  | `ui.enableFollowupSuggestions` | boolean | Enable [followup suggestions](../features/followup-suggestions) that predict what you want to type next after the model responds. Suggestions appear as placeholder text and are accepted with Tab, Enter, or Right Arrow (which fill the input — they do not auto-submit). On by default; set to `false` to opt out. | `true` |
123
127
  | `ui.enableCacheSharing` | boolean | Use cache-aware forked queries for suggestion generation. Reduces cost on providers that support prefix caching (experimental). | `true` |
124
128
  | `ui.enableSpeculation` | boolean | Speculatively execute accepted suggestions before submission. Results appear instantly when you accept (experimental). | `false` |
125
- | `experimental.emitToolUseSummaries` | boolean | Generate short LLM-based labels summarizing each tool-call batch. See [Tool-Use Summaries](../features/tool-use-summaries). Requires `fastModel` to be configured; silently skipped otherwise. Can be overridden per-session with `QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0` or `=1`. | `true` |
126
129
 
127
130
  #### ide
128
131
 
@@ -247,7 +250,7 @@ The `extra_body` field allows you to add custom parameters to the request body s
247
250
  | `context.fileFiltering.enableRecursiveFileSearch` | boolean | Whether to enable searching recursively for filenames under the current tree when completing `@` prefixes in the prompt. | `true` |
248
251
  | `context.fileFiltering.enableFuzzySearch` | boolean | When `true`, enables fuzzy search capabilities when searching for files. Set to `false` to improve performance on projects with a large number of files. | `true` |
249
252
  | `context.clearContextOnIdle.toolResultsThresholdMinutes` | number | Minutes of inactivity before clearing old tool result content. Use `-1` to disable the idle trigger. | `60` |
250
- | `context.clearContextOnIdle.toolResultsNumToKeep` | number | Number of most-recent compactable tool results to preserve when clearing. Floor at 1. | `5` |
253
+ | `context.clearContextOnIdle.toolResultsNumToKeep` | integer | Integer number of most-recent compactable tool results to preserve when clearing. Values below 1 are floored to 1. | `5` |
251
254
  | `context.clearContextOnIdle.toolResultsTotalCharsThreshold` | number | Total compactable tool result output characters allowed in history before clearing oldest results. Use `-1` to disable the size trigger. This is a soft threshold: protected recent tool results may keep the total above it. | `500000` |
252
255
 
253
256
  #### Troubleshooting File Search Performance
@@ -460,6 +463,19 @@ LSP server configuration is done through `.lsp.json` files in your project root
460
463
  | `advanced.bugCommand` | object | Configuration for the bug report command. Overrides the default URL for the `/bug` command. Properties: `urlTemplate` (string): A URL that can contain `{title}` and `{info}` placeholders. Example: `"bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" }` | `undefined` |
461
464
  | `plansDirectory` | string | Custom directory for approved Plan Mode files. Relative paths are resolved from the project root, and the resolved path must stay within the project root. If unset, plan files are stored in `~/.qwen/plans`. **Requires restart.** If the directory is inside the project root, add it to `.gitignore` to avoid committing plan files. | `undefined` |
462
465
 
466
+ #### experimental
467
+
468
+ > [!warning]
469
+ >
470
+ > **Experimental features.** These toggles gate in-development capabilities and may change or be removed in future releases.
471
+
472
+ | Setting | Type | Description | Default |
473
+ | ----------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
474
+ | `experimental.cron` | boolean | Enable in-session cron/loop tools (`cron_create`, `cron_list`, `cron_delete`) so the model can create recurring prompts. Can be disabled via the `QWEN_CODE_DISABLE_CRON=1` environment variable. Requires restart. | `true` |
475
+ | `experimental.agentTeam` | boolean | Enable agent-team collaboration tools (`team_create`, `task_create`, `task_update`, `send_message`, etc.) for multi-agent coordination. Can also be enabled via `QWEN_CODE_ENABLE_AGENT_TEAM=1`. Requires restart. | `false` |
476
+ | `experimental.artifact` | boolean | Enable the Artifact tool, letting the model publish a self-contained HTML page and open it in the browser. Interactive, non-SDK sessions only. Toggle via `QWEN_CODE_ENABLE_ARTIFACT=1` / `QWEN_CODE_DISABLE_ARTIFACT=1`. Requires restart. | `false` |
477
+ | `experimental.emitToolUseSummaries` | boolean | Generate a short LLM-based label after each tool-call batch completes. See [Tool-Use Summaries](../features/tool-use-summaries). Requires a fast model to be configured (`fastModel`); silently skipped otherwise. Can be overridden per-session with `QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0` or `=1`. | `true` |
478
+
463
479
  #### mcpServers
464
480
 
465
481
  Configures connections to one or more Model-Context Protocol (MCP) servers for discovering and using custom tools. Qwen Code attempts to connect to each configured MCP server to discover available tools. If multiple MCP servers expose a tool with the same name, the tool names will be prefixed with the server alias you defined in the configuration (e.g., `serverAlias__actualToolName`) to avoid conflicts. Note that the system might strip certain schema properties from MCP tool definitions for compatibility. At least one of `command`, `url`, or `httpUrl` must be provided. If multiple are specified, the order of precedence is `httpUrl`, then `url`, then `command`.
@@ -481,7 +497,7 @@ Configures connections to one or more Model-Context Protocol (MCP) servers for d
481
497
 
482
498
  #### telemetry
483
499
 
484
- Configures logging and metrics collection for Qwen Code. For more information, see [telemetry](/developers/development/telemetry).
500
+ Configures logging and metrics collection for Qwen Code. For more information, see [telemetry](../../developers/development/telemetry.md).
485
501
 
486
502
  | Setting | Type | Description | Default |
487
503
  | ------------------------------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
@@ -641,11 +657,11 @@ For sandbox image selection, precedence is:
641
657
  | `--approval-mode` | | Sets the approval mode for tool calls. | `plan`, `default`, `auto-edit`, `auto`, `yolo` | Supported modes: `plan`: Analyze only—do not modify files or execute commands. `default`: Require approval for file edits or shell commands (default behavior). `auto-edit`: Automatically approve edit tools (`edit`, `write_file`, `notebook_edit`) while prompting for others. `auto`: LLM classifier auto-approves safe actions and blocks risky ones. `yolo`: Automatically approve all tool calls (equivalent to `--yolo`). Cannot be used together with `--yolo`. Use `--approval-mode=yolo` instead of `--yolo` for the new unified approach. Example: `qwen --approval-mode auto-edit`<br>See more about [Approval Mode](../features/approval-mode). |
642
658
  | `--allowed-tools` | | A comma-separated list of tool names that will bypass the confirmation dialog. | Tool names | Example: `qwen --allowed-tools "Shell(git status)"` |
643
659
  | `--disabled-slash-commands` | | Slash command names to hide/disable (comma-separated or repeated). Unioned with the `slashCommands.disabled` setting and the `QWEN_DISABLED_SLASH_COMMANDS` environment variable. Matched case-insensitively against the final command name. | Command names | Example: `qwen --disabled-slash-commands "auth,mcp,extensions"` |
644
- | `--telemetry` | | Enables [telemetry](/developers/development/telemetry). | | |
645
- | `--telemetry-target` | | Sets the telemetry target. | | See [telemetry](/developers/development/telemetry) for more information. |
646
- | `--telemetry-otlp-endpoint` | | Sets the OTLP endpoint for telemetry. | | See [telemetry](../../developers/development/telemetry) for more information. |
647
- | `--telemetry-otlp-protocol` | | Sets the OTLP protocol for telemetry (`grpc` or `http`). | | Defaults to `grpc`. See [telemetry](../../developers/development/telemetry) for more information. |
648
- | `--telemetry-log-prompts` | | Enables logging of prompts for telemetry. | | See [telemetry](../../developers/development/telemetry) for more information. |
660
+ | `--telemetry` | | Enables [telemetry](../../developers/development/telemetry.md). | | |
661
+ | `--telemetry-target` | | Sets the telemetry target. | | See [telemetry](../../developers/development/telemetry.md) for more information. |
662
+ | `--telemetry-otlp-endpoint` | | Sets the OTLP endpoint for telemetry. | | See [telemetry](../../developers/development/telemetry.md) for more information. |
663
+ | `--telemetry-otlp-protocol` | | Sets the OTLP protocol for telemetry (`grpc` or `http`). | | Defaults to `grpc`. See [telemetry](../../developers/development/telemetry.md) for more information. |
664
+ | `--telemetry-log-prompts` | | Enables logging of prompts for telemetry. | | See [telemetry](../../developers/development/telemetry.md) for more information. |
649
665
  | `--acp` | | Enables ACP mode (Agent Client Protocol). Useful for IDE/editor integrations like [Zed](../integration-zed). | | Stable. Replaces the deprecated `--experimental-acp` flag. |
650
666
  | `--experimental-lsp` | | Enables experimental [LSP (Language Server Protocol)](../features/lsp) feature for code intelligence (go-to-definition, find references, diagnostics, etc.). | | Experimental. Requires language servers to be installed. |
651
667
  | `--extensions` | `-e` | Specifies a list of extensions to use for the session. | Extension names | If not provided, all available extensions are used. Use the special term `qwen -e none` to disable all extensions. Example: `qwen -e my-extension -e my-other-extension` |
@@ -694,7 +710,7 @@ Here's a conceptual example of what a context file at the root of a TypeScript p
694
710
 
695
711
  This example demonstrates how you can provide general project context, specific coding conventions, and even notes about particular files or components. The more relevant and precise your context files are, the better the AI can assist you. Project-specific context files are highly encouraged to establish conventions and context.
696
712
 
697
- - **Hierarchical Loading and Precedence:** The CLI implements a hierarchical memory system by loading context files (e.g., `QWEN.md`) from several locations. Content from files lower in this list (more specific) typically overrides or supplements content from files higher up (more general). The exact concatenation order and final context can be inspected using the `/memory show` command. The typical loading order is:
713
+ - **Hierarchical Loading and Precedence:** The CLI implements a hierarchical memory system by loading context files (e.g., `QWEN.md`) from several locations. Content from files lower in this list (more specific) typically overrides or supplements content from files higher up (more general). The exact concatenation order and final context can be inspected from the `/memory` dialog. The typical loading order is:
698
714
  1. **Global Context File:**
699
715
  - Location: `~/.qwen/<configured-context-filename>` (e.g., `~/.qwen/QWEN.md` in your user home directory).
700
716
  - Scope: Provides default instructions for all your projects.
@@ -702,11 +718,11 @@ This example demonstrates how you can provide general project context, specific
702
718
  - Location: The CLI searches for the configured context file in the current working directory and then in each parent directory up to either the project root (identified by a `.git` folder) or your home directory.
703
719
  - Scope: Provides context relevant to the entire project or a significant portion of it.
704
720
  - **Concatenation & UI Indication:** The contents of all found context files are concatenated (with separators indicating their origin and path) and provided as part of the system prompt. The CLI footer displays the count of loaded context files, giving you a quick visual cue about the active instructional context.
705
- - **Importing Content:** You can modularize your context files by importing other Markdown files using the `@path/to/file.md` syntax. For more details, see the [Memory Import Processor documentation](../configuration/memory).
721
+ - **Importing Content:** You can modularize your context files by importing other Markdown files using the `@path/to/file.md` syntax. For more details, see the [Memory documentation](../features/memory.md).
706
722
  - **Commands for Memory Management:**
707
- - Use `/memory refresh` to force a re-scan and reload of all context files from all configured locations. This updates the AI's instructional context.
708
- - Use `/memory show` to display the combined instructional context currently loaded, allowing you to verify the hierarchy and content being used by the AI.
709
- - See the [Commands documentation](../features/commands) for full details on the `/memory` command and its sub-commands (`show` and `refresh`).
723
+ - Use `/memory` to open the memory management dialog.
724
+ - Refresh memory from the dialog to re-scan and reload context files from all configured locations.
725
+ - See the [Commands documentation](../features/commands.md) for full details on the `/memory` command.
710
726
 
711
727
  By understanding and utilizing these configuration layers and the hierarchical nature of context files, you can effectively manage the AI's memory and tailor Qwen Code's responses to your specific needs and projects.
712
728
 
@@ -1,6 +1,6 @@
1
1
  # Themes
2
2
 
3
- Qwen Code supports a variety of themes to customize its color scheme and appearance. You can change the theme to suit your preferences via the `/theme` command or `"theme":` configuration setting.
3
+ Qwen Code supports a variety of themes to customize its color scheme and appearance. You can change the theme to suit your preferences via the `/theme` command or the `"ui.theme"` configuration setting.
4
4
 
5
5
  ## Available Themes
6
6
 
@@ -13,12 +13,15 @@ Qwen Code comes with a selection of pre-defined themes, which you can list using
13
13
  - `Default`
14
14
  - `Dracula`
15
15
  - `GitHub`
16
+ - `Qwen Dark`
17
+ - `Shades Of Purple`
16
18
  - **Light Themes:**
17
19
  - `ANSI Light`
18
20
  - `Ayu Light`
19
21
  - `Default Light`
20
22
  - `GitHub Light`
21
23
  - `Google Code`
24
+ - `Qwen Light`
22
25
  - `Xcode`
23
26
 
24
27
  ### Changing Themes
@@ -28,7 +31,7 @@ Qwen Code comes with a selection of pre-defined themes, which you can list using
28
31
  3. Using the arrow keys, select a theme. Some interfaces might offer a live preview or highlight as you select.
29
32
  4. Confirm your selection to apply the theme.
30
33
 
31
- **Note:** If a theme is defined in your `settings.json` file (either by name or by a file path), you must remove the `"theme"` setting from the file before you can change the theme using the `/theme` command.
34
+ **Note:** If a theme is defined in your `settings.json` file (either by name or by a file path), you must remove the `"ui.theme"` setting from the file before you can change the theme using the `/theme` command.
32
35
 
33
36
  ### Theme Persistence
34
37
 
@@ -139,7 +142,7 @@ You can define multiple custom themes by adding more entries to the `customTheme
139
142
 
140
143
  In addition to defining custom themes in `settings.json`, you can also load a theme directly from a JSON file by specifying the file path in your `settings.json`. This is useful for sharing themes or keeping them separate from your main configuration.
141
144
 
142
- To load a theme from a file, set the `theme` property in your `settings.json` to the path of your theme file:
145
+ To load a theme from a file, set the `ui.theme` property in your `settings.json` to the path of your theme file:
143
146
 
144
147
  ```json
145
148
  {
@@ -175,7 +178,7 @@ The theme file must be a valid JSON file that follows the same structure as a cu
175
178
  }
176
179
  ```
177
180
 
178
- **Security Note:** For your safety, Gemini CLI will only load theme files that are located within your home directory. If you attempt to load a theme from outside your home directory, a warning will be displayed and the theme will not be loaded. This is to prevent loading potentially malicious theme files from untrusted sources.
181
+ **Security Note:** For your safety, Qwen Code will only load theme files that are located within your home directory. If you attempt to load a theme from outside your home directory, a warning will be displayed and the theme will not be loaded. This is to prevent loading potentially malicious theme files from untrusted sources.
179
182
 
180
183
  ### Example Custom Theme
181
184
 
@@ -75,7 +75,7 @@ To ensure Qwen Code can automatically find the correct release asset for each pl
75
75
 
76
76
  Archives must be fully contained extensions and have all the standard requirements - specifically the `qwen-extension.json` file must be at the root of the archive.
77
77
 
78
- The rest of the layout should look exactly the same as a typical extension, see [extensions.md](extension.md).
78
+ The rest of the layout should look exactly the same as a typical extension, see [introduction.md](./introduction.md).
79
79
 
80
80
  #### Example GitHub Actions workflow
81
81
 
@@ -263,7 +263,7 @@ The `qwen-extension.json` file contains the configuration for the extension. The
263
263
 
264
264
  - `name`: The name of the extension. This is used to uniquely identify the extension and for conflict resolution when extension commands have the same name as user or project commands. The name should be lowercase or numbers and use dashes instead of underscores or spaces. This is how users will refer to your extension in the CLI. Note that we expect this name to match the extension directory name.
265
265
  - `version`: The version of the extension.
266
- - `mcpServers`: A map of MCP servers to configure. The key is the name of the server, and the value is the server configuration. These servers will be loaded on startup just like MCP servers configured in a [`settings.json` file](./cli/configuration.md). If both an extension and a `settings.json` file configure an MCP server with the same name, the server defined in the `settings.json` file takes precedence.
266
+ - `mcpServers`: A map of MCP servers to configure. The key is the name of the server, and the value is the server configuration. These servers will be loaded on startup just like MCP servers configured in a [`settings.json` file](../configuration/settings.md). If both an extension and a `settings.json` file configure an MCP server with the same name, the server defined in the `settings.json` file takes precedence.
267
267
  - Note that all MCP server configuration options are supported except for `trust`.
268
268
  - `channels`: A map of custom channel adapters. The key is the channel type name, and the value has an `entry` (path to compiled JS entry point) and optional `displayName`. The entry point must export a `plugin` object conforming to the `ChannelPlugin` interface. See [Channel Plugins](../features/channels/plugins) for a full guide.
269
269
  - `contextFileName`: The name of the file that contains the context for the extension. This will be used to load the context from the extension directory. If this property is not used but a `QWEN.md` file is present in your extension directory, then that file will be loaded.
@@ -287,24 +287,12 @@ Extensions can require configuration through settings (such as API keys or crede
287
287
  qwen extensions settings set <extension-name> <setting-name> [--scope user|workspace]
288
288
  ```
289
289
 
290
- **List all settings for an extension:**
290
+ **List all settings and current values for an extension:**
291
291
 
292
292
  ```bash
293
293
  qwen extensions settings list <extension-name>
294
294
  ```
295
295
 
296
- **View current values (user and workspace):**
297
-
298
- ```bash
299
- qwen extensions settings show <extension-name> <setting-name>
300
- ```
301
-
302
- **Remove a setting value:**
303
-
304
- ```bash
305
- qwen extensions settings unset <extension-name> <setting-name> [--scope user|workspace]
306
- ```
307
-
308
296
  Settings can be configured at two levels:
309
297
 
310
298
  - **User level** (default): Settings apply across all projects (`~/.qwen/.env`)
@@ -316,7 +304,7 @@ When Qwen Code starts, it loads all the extensions and merges their configuratio
316
304
 
317
305
  ### Custom commands
318
306
 
319
- Extensions can provide [custom commands](./cli/commands.md#custom-commands) by placing Markdown files in a `commands/` subdirectory within the extension directory. These commands follow the same format as user and project custom commands and use standard naming conventions.
307
+ Extensions can provide [custom commands](../features/commands.md#4-custom-commands) by placing Markdown files in a `commands/` subdirectory within the extension directory. These commands follow the same format as user and project custom commands and use standard naming conventions.
320
308
 
321
309
  > **Note:** The command format has been updated from TOML to Markdown. TOML files are deprecated but still supported. You can migrate existing TOML commands using the automatic migration prompt that appears when TOML files are detected.
322
310
 
@@ -7,7 +7,7 @@
7
7
 
8
8
  Agent Arena lets you pit multiple AI models against each other on the same task. Each model runs as a fully independent agent in its own isolated Git worktree, so file operations never interfere. When all agents finish, you compare results and select a winner to merge back into your main workspace.
9
9
 
10
- Unlike [subagents](/users/features/sub-agents), which delegate focused subtasks within a single session, Arena agents are complete, top-level agent instances — each with its own model, context window, and full tool access.
10
+ Unlike [subagents](./sub-agents.md), which delegate focused subtasks within a single session, Arena agents are complete, top-level agent instances — each with its own model, context window, and full tool access.
11
11
 
12
12
  This page covers:
13
13
 
@@ -104,7 +104,7 @@ If you want to inspect the complete reasoning path before deciding, each agent's
104
104
 
105
105
  ## Configuration
106
106
 
107
- Arena behavior can be customized in [settings.json](/users/configuration/settings):
107
+ Arena behavior can be customized in [settings.json](../configuration/settings.md):
108
108
 
109
109
  ```json
110
110
  {
@@ -215,5 +215,5 @@ Agent Arena is one of several planned multi-agent modes in Qwen Code. **Agent Te
215
215
 
216
216
  Explore related approaches for parallel and delegated work:
217
217
 
218
- - **Lightweight delegation**: [Subagents](/users/features/sub-agents) handle focused subtasks within your session — better when you don't need model comparison
218
+ - **Lightweight delegation**: [Subagents](./sub-agents.md) handle focused subtasks within your session — better when you don't need model comparison
219
219
  - **Manual parallel sessions**: Run multiple Qwen Code sessions yourself in separate terminals with [Git worktrees](https://git-scm.com/docs/git-worktree) for full manual control
@@ -7,7 +7,7 @@ Channels let you interact with a Qwen Code agent from messaging platforms like T
7
7
  When you run `qwen channel start`, Qwen Code:
8
8
 
9
9
  1. Reads channel configurations from your `settings.json`
10
- 2. Spawns a single agent process using the [Agent Client Protocol (ACP)](../../developers/architecture)
10
+ 2. Spawns a single agent process using the [Agent Client Protocol (ACP)](../../../developers/architecture.md)
11
11
  3. Connects to each messaging platform and starts listening for messages
12
12
  4. Routes incoming messages to the agent and sends responses back to the correct chat
13
13
 
@@ -84,4 +84,4 @@ Custom channels automatically support everything built-in channels do:
84
84
 
85
85
  ## Building Your Own Channel Plugin
86
86
 
87
- Want to build a channel plugin for a new platform? See the [Channel Plugin Developer Guide](/developers/channel-plugins) for the `ChannelPlugin` interface, the `Envelope` format, and extension points.
87
+ Want to build a channel plugin for a new platform? See the [Channel Plugin Developer Guide](../../../developers/channel-plugins.md) for the `ChannelPlugin` interface, the `Envelope` format, and extension points.
@@ -43,10 +43,13 @@ Commands for adjusting interface appearance and work environment.
43
43
  | `/clear` | Clear terminal screen content | `/clear` (shortcut: `Ctrl+L`) |
44
44
  | `/context` | Show context window usage breakdown | `/context` |
45
45
  | → `detail` | Show per-item context usage breakdown | `/context detail` |
46
+ | `/history` | Control history display preferences and visibility | `/history collapse-on-resume`, `/history expand-on-resume`, `/history expand-now` |
46
47
  | `/diff` | Open an interactive diff viewer showing uncommitted changes and per-turn diffs. Use ←/→ to switch between current git diff and individual conversation turns, ↑/↓ to browse files | `/diff` |
47
48
  | `/theme` | Change Qwen Code visual theme | `/theme` |
48
49
  | `/vim` | Turn input area Vim editing mode on/off | `/vim` |
50
+ | `/voice` | Toggle voice dictation input | `/voice`, `/voice status` |
49
51
  | `/directory` | Manage multi-directory support workspace | `/dir add ./src,./tests` |
52
+ | `/cd` | Move this session to a new working directory | `/cd ../other-project` |
50
53
  | `/editor` | Open dialog to select supported editor | `/editor` |
51
54
  | `/statusline` | Open interactive [status line](./status-line.md) preset dialog | `/statusline` |
52
55
  | `/statusline <text>` | Generate a command-mode [status line](./status-line.md) via agent | `/statusline show model and git branch` |
@@ -72,6 +75,7 @@ Commands for managing AI tools and models.
72
75
  | Command | Description | Usage Examples |
73
76
  | ---------------- | --------------------------------------------- | --------------------------------------------- |
74
77
  | `/mcp` | List configured MCP servers and tools | `/mcp`, `/mcp desc` |
78
+ | `/import-config` | Import MCP servers from Claude configs | `/import-config claude-code`, `/import-config claude-desktop --scope project` |
75
79
  | `/tools` | Display currently available tool list | `/tools`, `/tools desc` |
76
80
  | `/skills` | List and run available skills | `/skills`, `/skills <name>` |
77
81
  | `/plan` | Switch to plan mode or exit plan mode | `/plan`, `/plan <task>`, `/plan exit` |
@@ -81,8 +85,9 @@ Commands for managing AI tools and models.
81
85
  | →`auto-edit` | Automatically approve edits | Trusted environment |
82
86
  | →`auto` | Classifier-evaluated approval | Autonomous sessions with safety guardrails |
83
87
  | →`yolo` | Automatically approve all | Quick prototyping |
84
- | `/model` | Switch model used in current session | `/model` |
88
+ | `/model` | Switch model used in current session | `/model`, `/model <model-id>` (switch immediately) |
85
89
  | `/model --fast` | Set a lighter model for prompt suggestions | `/model --fast qwen3-coder-flash` |
90
+ | `/model --voice` | Set the model used for voice transcription | `/model --voice <model-id>` |
86
91
  | `/extensions` | List all active extensions in current session | `/extensions` |
87
92
  | `/memory` | Open the Memory Manager dialog | `/memory` |
88
93
  | `/remember` | Save a durable memory | `/remember Prefer terse responses` |
@@ -406,6 +406,6 @@ These messages keep CI runners alive and let you monitor progress. They do not a
406
406
  ## Resources
407
407
 
408
408
  - [CLI Configuration](../configuration/settings#command-line-arguments) - Complete configuration guide
409
- - [Authentication](../configuration/settings#environment-variables-for-api-access) - Setup authentication
409
+ - [Authentication](../configuration/auth.md) - Setup authentication
410
410
  - [Commands](../features/commands) - Interactive commands reference
411
411
  - [Tutorials](../quickstart) - Step-by-step automation guides
@@ -20,7 +20,7 @@ With MCP servers connected, you can ask Qwen Code to:
20
20
  Qwen Code loads MCP servers from `mcpServers` in your `settings.json`. You can configure servers either:
21
21
 
22
22
  - By editing `settings.json` directly
23
- - By using `qwen mcp` commands (see [CLI reference](#qwen-mcp-cli))
23
+ - By using `qwen mcp` commands (see [CLI reference](#manage-mcp-servers-with-qwen-mcp))
24
24
 
25
25
  ### Add your first server
26
26
 
@@ -30,13 +30,21 @@ Qwen Code loads MCP servers from `mcpServers` in your `settings.json`. You can c
30
30
  qwen mcp add --transport http my-server http://localhost:3000/mcp
31
31
  ```
32
32
 
33
- 2. Open MCP management dialog to view and manage servers:
33
+ 2. Start Qwen Code and open the MCP management dialog to view and manage
34
+ servers:
34
35
 
35
36
  ```bash
36
- qwen mcp
37
+ qwen
37
38
  ```
38
39
 
39
- 3. Restart Qwen Code in the same project (or start it if it wasn’t running yet), then ask the model to use tools from that server.
40
+ Then enter:
41
+
42
+ ```text
43
+ /mcp
44
+ ```
45
+
46
+ 3. If Qwen Code was already running before you added the server, restart it in
47
+ the same project. Then ask the model to use tools from that server.
40
48
 
41
49
  ## Where configuration is stored (scopes)
42
50
 
@@ -190,8 +198,12 @@ syntax — type `@`, then the server name, a colon, and the resource URI:
190
198
  summarize @myserver:file:///docs/spec.md and list the open questions
191
199
  ```
192
200
 
193
- Typing `@myserver:` shows an autocomplete list of that server's resource
194
- URIs. On submit, the referenced resource is read and its contents are
201
+ Typing `@myserver:` shows an autocomplete list of that server's resources;
202
+ keep typing to filter, matching (case-insensitively) either the resource URI
203
+ or its friendly name/title. You don't have to know a URI by heart — before
204
+ you reach the colon, typing part of a server name also suggests matching
205
+ servers that expose resources, so you can pick one and drill straight into
206
+ its resource list. On submit, the referenced resource is read and its contents are
195
207
  appended to your message (text inline, binary blobs as attachments); the
196
208
  `@server:uri` reference is preserved in the prompt so the model knows what
197
209
  it is looking at. The `server` prefix must match a configured MCP server —
@@ -333,11 +345,15 @@ OAuth configuration properties:
333
345
 
334
346
  OAuth tokens are automatically:
335
347
 
336
- - **Stored securely** in `~/.qwen/mcp-oauth-tokens-v2.json` (AES-256-GCM encrypted), with keychain storage preferred when available
348
+ - **Stored** in `~/.qwen/mcp-oauth-tokens.json` (plaintext, mode 0600) by default. If `QWEN_CODE_FORCE_ENCRYPTED_FILE_STORAGE=true` is set, Qwen Code uses keychain-backed storage where available, or `~/.qwen/mcp-oauth-tokens-v2.json` with AES-256-GCM encryption.
337
349
  - **Refreshed** when expired (if refresh tokens are available)
338
350
  - **Validated** before each connection attempt
339
351
 
340
- Use the `/mcp auth` command within Qwen Code to manage OAuth authentication interactively.
352
+ > [!WARNING]
353
+ > By default, OAuth tokens are stored unencrypted on disk. On shared or multi-user machines, set `QWEN_CODE_FORCE_ENCRYPTED_FILE_STORAGE=true` to protect credentials.
354
+
355
+ Use the `/mcp` dialog within Qwen Code to inspect MCP servers and manage
356
+ authentication interactively.
341
357
 
342
358
  ### Tool filtering (allow/deny tools per server)
343
359
 
@@ -163,7 +163,7 @@ If you want to restrict outbound network access to an allowlist, you can run a l
163
163
 
164
164
  This is especially useful with `*-proxied` Seatbelt profiles.
165
165
 
166
- For a working allowlist-style proxy example, see: [Example Proxy Script](/developers/examples/proxy-script).
166
+ For a working allowlist-style proxy example, see: [Example Proxy Script](../../developers/examples/proxy-script.md).
167
167
 
168
168
  ## Linux UID/GID handling
169
169
 
@@ -210,7 +210,7 @@ Then rebuild the sandbox image:
210
210
  QWEN_SANDBOX=docker BUILD_SANDBOX=1 qwen -s
211
211
  ```
212
212
 
213
- For more details on customizing the sandbox, see [Customizing the sandbox environment](/developers/tools/sandbox).
213
+ For more details on customizing the sandbox, see [Customizing the sandbox environment](../../developers/tools/sandbox.md).
214
214
 
215
215
  **Network issues**
216
216
 
@@ -174,5 +174,5 @@ If you do not want the extra cost, turn the feature off via `experimental.emitTo
174
174
 
175
175
  ## Related
176
176
 
177
- - [Compact Mode](../configuration/settings#ui.compactMode) — toggle with `Ctrl+O`; the summary replaces the generic tool-group header when compact mode is on.
177
+ - [Compact Mode](../configuration/settings#ui) — toggle with `Ctrl+O`; the summary replaces the generic tool-group header when compact mode is on.
178
178
  - [Followup Suggestions](./followup-suggestions) — another fast-model-driven UX enhancement that shares the same `fastModel` setting.
@@ -96,7 +96,7 @@ This workflow acts as a central dispatcher for Qwen Code CLI, routing requests t
96
96
 
97
97
  ### Issue Triage
98
98
 
99
- This action can be used to triage GitHub Issues automatically or on a schedule. For a detailed guide on how to set up the issue triage system, go to the [GitHub Issue Triage workflow documentation](./examples/workflows/issue-triage).
99
+ This action can be used to triage GitHub Issues automatically or on a schedule. For a working issue triage setup, see the [automated issue triage workflow](https://github.com/QwenLM/qwen-code/blob/main/.github/workflows/qwen-automated-issue-triage.yml).
100
100
 
101
101
  ### Pull Request Review
102
102
 
@@ -208,7 +208,7 @@ The Qwen Code CLI can be extended with additional functionality through extensio
208
208
  These extensions are installed from source from their GitHub repositories.
209
209
 
210
210
  For detailed instructions on how to set up and configure extensions, go to the
211
- [Extensions documentation](../developers/extensions/extension).
211
+ [Extensions documentation](./extension/introduction.md).
212
212
 
213
213
  ## Best Practices
214
214
 
@@ -40,7 +40,7 @@ cd your-project
40
40
  qwen
41
41
  ```
42
42
 
43
- Choose your authentication method **API Key** or **[Alibaba Cloud Coding Plan](https://bailian.console.aliyun.com/cn-beijing/?tab=coding-plan#/efm/coding-plan-index)** ([intl](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index)) and follow the prompts to configure. See the API setup guide ([Beijing](https://bailian.console.aliyun.com/cn-beijing/?tab=doc#/doc/?type=model&url=3023091) / [intl](https://modelstudio.console.alibabacloud.com/ap-southeast-1?tab=doc#/doc/?type=model&url=2974721)) for step-by-step instructions. Then let's start with understanding your codebase. Try one of these commands:
43
+ On first launch you'll be prompted to connect a model provider. The menu offers **Alibaba ModelStudio** (Coding Plan, Token Plan, or Standard API Key), **Third-party Providers** (built-in providers such as DeepSeek, MiniMax, Z.AI, and OpenRouter, connected with an API key), and **Custom Provider** (a local server, proxy, or unsupported provider). For the [Alibaba Cloud Coding Plan](https://bailian.console.aliyun.com/cn-beijing/?tab=coding-plan#/efm/coding-plan-index) ([intl](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index)), choose **Alibaba ModelStudio Coding Plan**; to use a ModelStudio API key, choose **Alibaba ModelStudio → Standard API Key** and follow the API setup guide ([Beijing](https://bailian.console.aliyun.com/cn-beijing/?tab=doc#/doc/?type=model&url=3023091) / [intl](https://modelstudio.console.alibabacloud.com/ap-southeast-1?tab=doc#/doc/?type=model&url=2974721)). Then let's start with understanding your codebase. Try one of these commands:
44
44
 
45
45
  ```
46
46
  what does this project do?
@@ -10,7 +10,7 @@ Make sure you have:
10
10
 
11
11
  - A **terminal** or command prompt open
12
12
  - A code project to work with
13
- - An API key from Alibaba Cloud Model Studio ([Beijing](https://bailian.console.aliyun.com/) / [intl](https://modelstudio.console.alibabacloud.com/)), or an Alibaba Cloud Coding Plan ([Beijing](https://bailian.console.aliyun.com/cn-beijing/?tab=coding-plan#/efm/coding-plan-index) / [intl](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index)) subscription
13
+ - An API key from Alibaba Cloud ModelStudio ([Beijing](https://bailian.console.aliyun.com/) / [intl](https://modelstudio.console.alibabacloud.com/)), or an Alibaba Cloud Coding Plan ([Beijing](https://bailian.console.aliyun.com/cn-beijing/?tab=coding-plan#/efm/coding-plan-index) / [intl](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index)) subscription
14
14
 
15
15
  ## Step 1: Install Qwen Code
16
16
 
@@ -66,10 +66,14 @@ qwen
66
66
  /auth
67
67
  ```
68
68
 
69
- Choose your preferred authentication method:
69
+ The first-run menu lets you connect a model provider. Choose one of:
70
70
 
71
- - **Alibaba Cloud Coding Plan**: Select `Alibaba Cloud Coding Plan` for a fixed monthly fee with diverse model options. See the [Coding Plan guide](https://bailian.console.aliyun.com/cn-beijing/?tab=coding-plan#/efm/coding-plan-index) ([intl](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index)) for setup instructions.
72
- - **API Key**: Select `API Key`, then enter your API key from Alibaba Cloud Model Studio ([Beijing](https://bailian.console.aliyun.com/) / [intl](https://modelstudio.console.alibabacloud.com/)). See the API setup guide ([Beijing](https://bailian.console.aliyun.com/cn-beijing/?tab=doc#/doc/?type=model&url=3023091) / [intl](https://modelstudio.console.alibabacloud.com/ap-southeast-1?tab=doc#/doc/?type=model&url=2974721)) for details.
71
+ - **Alibaba ModelStudio** the recommended setup. Opens a sub-menu:
72
+ - **Coding Plan**: for individual developers, with an included weekly quota and diverse model options. See the [Coding Plan guide](https://bailian.console.aliyun.com/cn-beijing/?tab=coding-plan#/efm/coding-plan-index) ([intl](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index)) for setup instructions.
73
+ - **Token Plan**: usage-based billing with a dedicated endpoint, aimed at teams and companies.
74
+ - **Standard API Key**: connect with an existing API key from Alibaba Cloud ModelStudio ([Beijing](https://bailian.console.aliyun.com/) / [intl](https://modelstudio.console.alibabacloud.com/)). See the API setup guide ([Beijing](https://bailian.console.aliyun.com/cn-beijing/?tab=doc#/doc/?type=model&url=3023091) / [intl](https://modelstudio.console.alibabacloud.com/ap-southeast-1?tab=doc#/doc/?type=model&url=2974721)) for details.
75
+ - **Third-party Providers** — choose a built-in provider (DeepSeek, MiniMax, Z.AI, ModelScope, OpenRouter, Requesty, and more) and connect with an API key.
76
+ - **Custom Provider** — manually connect a local server, proxy, or unsupported provider.
73
77
 
74
78
  > ⚠️ **Note**: Qwen OAuth was discontinued on April 15, 2026. If you were previously using Qwen OAuth, please switch to one of the methods above.
75
79
 
@@ -86,7 +90,7 @@ Choose your preferred authentication method:
86
90
  Open your terminal in any project directory and start Qwen Code:
87
91
 
88
92
  ```bash
89
- # optiona
93
+ # optional
90
94
  cd /path/to/your/project
91
95
  # start qwen
92
96
  qwen
@@ -87,7 +87,11 @@ operators: `GET /daemon/status`, `GET /workspace/mcp`,
87
87
  `GET /workspace/skills`, `GET /workspace/providers`, `GET /workspace/env`,
88
88
  `GET /workspace/preflight`,
89
89
  `GET /session/:id/context`, `GET /session/:id/supported-commands`, and
90
- `GET /session/:id/tasks`.
90
+ `GET /session/:id/tasks`, and `GET /session/:id/lsp`.
91
+
92
+ `GET /session/:id/lsp` returns structured per-session LSP status. Start the
93
+ daemon with `--experimental-lsp` to enable LSP in spawned agent sessions;
94
+ otherwise the route returns `enabled: false` with no servers.
91
95
 
92
96
  `GET /daemon/status` is the consolidated troubleshooting snapshot. The default
93
97
  `detail=summary` reads only in-memory daemon state (sessions, permissions,
@@ -234,7 +238,7 @@ The token comparison is constant-time (SHA-256 + `crypto.timingSafeEqual`); 401
234
238
  | `--http-bridge` | `true` | Stage 1 mode: one `qwen --acp` child per daemon (bound to one workspace at boot, per [#3803](https://github.com/QwenLM/qwen-code/issues/3803) §02); N sessions multiplex onto that child via ACP `newSession()`. Stage 2 native in-process becomes available later. |
235
239
  | `--allow-origin <pat>` | — | T2.4 ([#4514](https://github.com/QwenLM/qwen-code/issues/4514)). Cross-origin allowlist for browser webui clients. Repeatable. Each value is `*` (any origin — boot refuses if no bearer token is configured; `--require-auth` on loopback is recommended so `/health` and `/demo` are also bearer-gated, since both are pre-auth on loopback by default) or a canonical URL origin (`<scheme>://<host>[:<port>]`, no trailing slash / path / userinfo / query). **Subdomain wildcards (`https://*.example.com`) are intentionally unsupported** — list each subdomain explicitly, or use `*` with a configured token (and `--require-auth` for full hardening). Matched origins receive CORS response headers (`Access-Control-Allow-Origin`, `Vary: Origin`, methods, headers, max-age, and exposed `Retry-After`); unmatched origins still get a 403 with the same envelope as today's wall. `Origin: null` (sandboxed iframes, file:// docs) is always rejected, even under `*`. Pre-flight via `caps.features.allow_origin`. Loopback self-origin hits are unaffected. |
236
240
  | `--web` / `--no-web` | `true` | Serve the built Web Shell SPA at the daemon root (`GET /`, `/assets/*`, and SPA deep-link fallback). The static shell is registered **before** the bearer-auth gate — a browser can't attach a token to a `<script>` subresource or an address-bar navigation, the shell carries no secrets, and every API route stays token-gated regardless. On non-loopback binds a one-line stderr warning notes the UI is reachable without auth. Use `--no-web` for an API-only daemon. No effect when the build omits the Web Shell assets (the daemon logs a breadcrumb and runs API-only). |
237
- | `--open` | `false` | After the listener is up, open the Web Shell in your default browser at the daemon URL (with `#token=` appended as a URL fragment when a token is configured — a fragment is never sent to the server, keeping the token out of access logs and Referer headers). No-op with `--no-web`, or in headless / CI / SSH environments where no browser is available. |
241
+ | `--open` | `false` | After the listener is up, open the Web Shell in your default browser at the daemon URL (with `#token=` appended as a URL fragment when a token is configured — a fragment is never sent to the server, keeping the token out of access logs and Referer headers). No-op with `--no-web`, or in headless / CI / SSH environments where no browser is available. |
238
242
 
239
243
  > **Sizing the load knobs.** `--max-sessions` is the **new-child** cap.
240
244
  > Three other layers also limit load — when sizing for a high-concurrency
@@ -461,7 +465,15 @@ The bridge keeps **one channel per daemon** (one daemon per workspace, per §02)
461
465
 
462
466
  ## Logging in to a remote daemon (issue #4175 PR 21)
463
467
 
464
- When the daemon runs on a remote pod (no shared display with you), you can still log in to a Qwen account by triggering an OAuth device flow over HTTP. The daemon polls the IdP itself; your job is just to open a URL on whatever device has a browser.
468
+ When the daemon runs on a remote pod (no shared display with you), a client can
469
+ trigger an OAuth device flow over HTTP. The daemon polls the IdP itself; your job
470
+ is just to open a URL on whatever device has a browser.
471
+
472
+ > [!note]
473
+ >
474
+ > Qwen OAuth free tier was discontinued on 2026-04-15. The `qwen-oauth`
475
+ > examples below document the device-flow protocol shape and legacy provider
476
+ > identifier; new setups should use a currently supported auth provider.
465
477
 
466
478
  ```bash
467
479
  # 1. Start a flow. The daemon contacts the IdP, returns a code + URL.
@@ -109,4 +109,4 @@ You can switch between Qwen OAuth, Alibaba Cloud Coding Plan, and your own API k
109
109
  2. **Within the CLI**: Use the `/auth` command to reconfigure your authentication method
110
110
  3. **Environment variables**: Set up `.env` files for automatic API key authentication
111
111
 
112
- For detailed instructions, see the [Authentication Setup](../configuration/settings#environment-variables-for-api-access) documentation.
112
+ For detailed instructions, see the [Authentication Setup](../configuration/auth.md) documentation.