@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.
- package/bundled/qc-helper/SKILL.md +13 -5
- package/bundled/qc-helper/docs/configuration/_meta.ts +1 -0
- package/bundled/qc-helper/docs/configuration/auth.md +68 -48
- package/bundled/qc-helper/docs/configuration/model-providers.md +217 -195
- package/bundled/qc-helper/docs/configuration/settings.md +30 -14
- package/bundled/qc-helper/docs/configuration/themes.md +7 -4
- package/bundled/qc-helper/docs/extension/extension-releasing.md +1 -1
- package/bundled/qc-helper/docs/extension/introduction.md +3 -15
- package/bundled/qc-helper/docs/features/arena.md +3 -3
- package/bundled/qc-helper/docs/features/channels/overview.md +1 -1
- package/bundled/qc-helper/docs/features/channels/plugins.md +1 -1
- package/bundled/qc-helper/docs/features/commands.md +6 -1
- package/bundled/qc-helper/docs/features/headless.md +1 -1
- package/bundled/qc-helper/docs/features/mcp.md +24 -8
- package/bundled/qc-helper/docs/features/sandbox.md +2 -2
- package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
- package/bundled/qc-helper/docs/integration-github-action.md +2 -2
- package/bundled/qc-helper/docs/overview.md +1 -1
- package/bundled/qc-helper/docs/quickstart.md +9 -5
- package/bundled/qc-helper/docs/qwen-serve.md +15 -3
- package/bundled/qc-helper/docs/support/tos-privacy.md +1 -1
- package/chunks/{agent-IPSDEZNB.js → agent-6KV474S5.js} +7 -7
- package/chunks/{agent-headless-ZMTUWMZJ.js → agent-headless-XO7MM6JT.js} +7 -7
- package/chunks/{anthropicContentGenerator-6MCH4X6S.js → anthropicContentGenerator-7352A7I5.js} +2 -2
- package/chunks/{artifact-tool-PBX64YTT.js → artifact-tool-5J4HUZAV.js} +1 -1
- package/chunks/{askUserQuestion-5ZQOWSRT.js → askUserQuestion-HF7HCWDD.js} +1 -1
- package/chunks/{chunk-PO5LVPK3.js → chunk-2QDQTWCI.js} +1 -1
- package/chunks/{chunk-255L5QYW.js → chunk-3BR4OIOE.js} +1 -1
- package/chunks/{chunk-KFR4QTV3.js → chunk-54J4JDWT.js} +123 -174
- package/chunks/{chunk-S7ILEIB4.js → chunk-76BDT2HH.js} +4 -5
- package/chunks/{chunk-YF3ORUIU.js → chunk-7QBKO4A6.js} +2348 -1817
- package/chunks/{chunk-GAAALA2X.js → chunk-C4JC2FL3.js} +7 -6
- package/chunks/{chunk-CICUTYTF.js → chunk-HNYTRFAM.js} +52 -45
- package/chunks/{chunk-JRVB4QUY.js → chunk-KBXLIVWQ.js} +1 -1
- package/chunks/{chunk-QKUAGMGE.js → chunk-NKJ6LRCR.js} +1 -1
- package/chunks/{chunk-57XRIZVC.js → chunk-NWLUISRA.js} +1 -1
- package/chunks/{chunk-VRIVIYRL.js → chunk-TKXRLRTF.js} +4 -4
- package/chunks/{computer-use-YYK42DD5.js → computer-use-WOKHYISX.js} +7 -7
- package/chunks/{contextCommand-BO45MUAA.js → contextCommand-JSYQAO3O.js} +9 -9
- package/chunks/{cron-create-DXKAP5KN.js → cron-create-A5637KCI.js} +9 -6
- package/chunks/{cron-delete-WGO4PZTF.js → cron-delete-AADOSEOZ.js} +1 -1
- package/chunks/{cron-list-EY7D3ZUC.js → cron-list-OFCPTT2Y.js} +1 -1
- package/chunks/{edit-QERNJN7K.js → edit-6EN6NO6G.js} +7 -7
- package/chunks/{en-UTXMGXIR.js → en-7OGNWWME.js} +1 -0
- package/chunks/{enter-worktree-6ZKH5IL3.js → enter-worktree-XJ4S74CL.js} +7 -7
- package/chunks/{enterPlanMode-B2PBF4MA.js → enterPlanMode-GQNQIH2V.js} +7 -7
- package/chunks/{exit-worktree-EOCMQO4I.js → exit-worktree-6MKLATVB.js} +7 -7
- package/chunks/{exitPlanMode-WSRXCBRZ.js → exitPlanMode-YACWA5GO.js} +7 -7
- package/chunks/{geminiContentGenerator-NTR4LTKS.js → geminiContentGenerator-OLJGOIWO.js} +1 -1
- package/chunks/{glob-IWDJQI2V.js → glob-YHSIN2LG.js} +7 -7
- package/chunks/{grep-2DV5BXMH.js → grep-5EMEAJBO.js} +7 -7
- package/chunks/{loop-wakeup-XVSDE7QR.js → loop-wakeup-DGSMT4N6.js} +2 -2
- package/chunks/{ls-LPY3ATQQ.js → ls-UGRZ4ZOM.js} +1 -1
- package/chunks/{lsp-ZT3AAXIF.js → lsp-72IJURW3.js} +1 -1
- package/chunks/{monitor-6HBDS2RS.js → monitor-ZGXTGINM.js} +7 -7
- package/chunks/{notebook-edit-J5AY5BRY.js → notebook-edit-O7WO3APR.js} +7 -7
- package/chunks/{openaiContentGenerator-ENABCJDM.js → openaiContentGenerator-N4FCEGU2.js} +6 -6
- package/chunks/{qwenContentGenerator-ISW42U7C.js → qwenContentGenerator-BOAZ7MMG.js} +9 -9
- package/chunks/{read-file-NRX2FSSQ.js → read-file-RB35MI5I.js} +3 -3
- package/chunks/{ripGrep-WF5CKHR5.js → ripGrep-CWJOA6JG.js} +7 -7
- package/chunks/{scheduler-PNPG5WJ3.js → scheduler-XUBHNI2Z.js} +7 -7
- package/chunks/{send-message-447W6NH6.js → send-message-URUZ7PLA.js} +1 -1
- package/chunks/{serve-ZBRCIIHW.js → serve-P356SCA2.js} +197 -31
- package/chunks/{shell-DLIL6MLU.js → shell-5TRHTPML.js} +7 -7
- package/chunks/{skill-32TXHY4A.js → skill-RW6N7GHL.js} +3 -3
- package/chunks/{src-PDDLF5BB.js → src-SPEHQKTK.js} +35 -9
- package/chunks/{syntheticOutput-GQRDRLGR.js → syntheticOutput-65FRJGWM.js} +2 -2
- package/chunks/{task-create-66DDSTVI.js → task-create-IH45HOFT.js} +2 -2
- package/chunks/{task-list-GOPXRSHG.js → task-list-FUB6JWSX.js} +1 -1
- package/chunks/{task-stop-M7NKGFX2.js → task-stop-P6IOHQM3.js} +1 -1
- package/chunks/{task-update-M5TBHLZV.js → task-update-RTUT7LJV.js} +2 -2
- package/chunks/{team-create-EHLDSJGI.js → team-create-D6GSPXCO.js} +7 -7
- package/chunks/{team-delete-DKKDS65W.js → team-delete-RXGYRMHC.js} +1 -1
- package/chunks/{todoWrite-4VX7X44D.js → todoWrite-O6JK24G6.js} +1 -1
- package/chunks/{tool-search-FU7IZAOO.js → tool-search-6YIMUUVD.js} +3 -3
- package/chunks/{web-fetch-YPP3V4FJ.js → web-fetch-KUMBROUI.js} +2 -2
- package/chunks/{workflow-WUDNBCGX.js → workflow-ML3XFTCN.js} +23 -15
- package/chunks/{write-file-NVFPX6CH.js → write-file-VLT6ODLK.js} +7 -7
- package/chunks/{zh-YOXVTJU5.js → zh-3RMSEO5M.js} +1 -0
- package/chunks/{zh-TW-J2TTW67R.js → zh-TW-R7WRLTJS.js} +1 -0
- package/cli.js +778 -382
- package/locales/en.js +1 -0
- package/locales/zh-TW.js +1 -0
- package/locales/zh.js +1 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-pxOt9B72.js → arc-DHUeMnnj.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-B9XuYYOT.js → architectureDiagram-3BPJPVTR-DlX12yyj.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-5yK68iu4.js → blockDiagram-GPEHLZMM-DTFUXMUT.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-B1LY-qNI.js → c4Diagram-AAUBKEIU-CWdB54fk.js} +1 -1
- package/web-shell/assets/channel-C3WhMjjP.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-DkgXg7cM.js → chunk-2J33WTMH-CF5C5jNR.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DdM45KFM.js → chunk-4BX2VUAB-Cw7Ydfji.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-CmdsDjD4.js → chunk-55IACEB6-CnbI1ZCw.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-CQ4pJ5GH.js → chunk-727SXJPM-DmSy00Pe.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-Dy6UWz37.js → chunk-AQP2D5EJ-DgNgXqBu.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CC8nFqap.js → chunk-FMBD7UC4-tz2IvOXv.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-CkmS7lx7.js → chunk-ND2GUHAM-DaBLEBPa.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-DynyqleZ.js → chunk-QZHKN3VN-DVCQST3O.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CQ6TXPif.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CQ6TXPif.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-DA0fzCsY.js → cose-bilkent-S5V4N54A-CAKTcdCQ.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-DHYXRqCo.js → dagre-BM42HDAG-BdkBwlKg.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-DWD6BcPs.js → diagram-2AECGRRQ-DYt3G65F.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-CX9wnqVc.js → diagram-5GNKFQAL-BWvROWjY.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BpE8Kbt8.js → diagram-KO2AKTUF-BvvgwIaQ.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-DLPcrP0C.js → diagram-LMA3HP47-E7NLSNKg.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CSUCBsCe.js → diagram-OG6HWLK6-CYmUBgpE.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-d3Z0uMXS.js → erDiagram-TEJ5UH35-BU5gY30h.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-C7vj5FX3.js → flowDiagram-I6XJVG4X-V_ZssSZ9.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BV9UvDV_.js → ganttDiagram-6RSMTGT7-QIShlsdI.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CoWp0mW4.js → gitGraphDiagram-PVQCEYII-DJxdu2YS.js} +1 -1
- package/web-shell/assets/index-BPnhI7gl.css +1 -0
- package/web-shell/assets/index-De4rqTsW.js +706 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DUswfJHA.js → infoDiagram-5YYISTIA-BqjdrFeO.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-WidEKukx.js → ishikawaDiagram-YF4QCWOH-BP_a2YZ2.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-D7IRK3VN.js → journeyDiagram-JHISSGLW-BXg-S3Lk.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-CwFJ6Cja.js → kanban-definition-UN3LZRKU-BksAkdEJ.js} +1 -1
- package/web-shell/assets/{linear-BQ8GvDRY.js → linear-D2m9-ODE.js} +1 -1
- package/web-shell/assets/{mermaid.core-CwF8A_xO.js → mermaid.core-dTtkZp2F.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-TR1s0iZi.js → mindmap-definition-RKZ34NQL-Bft9my8O.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-Cd91pMl9.js → pieDiagram-4H26LBE5-Cw8S-alZ.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BGxGDNMl.js → quadrantDiagram-W4KKPZXB-DaDoTMts.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-Cq3fWmYz.js → requirementDiagram-4Y6WPE33-Cp5kSpwj.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-ChLyGdq0.js → sankeyDiagram-5OEKKPKP-CW8RsJJZ.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-tazy79aB.js → sequenceDiagram-3UESZ5HK-DTfpIiJK.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-dIYLUNSf.js → stateDiagram-AJRCARHV-DixFVzEs.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DZgE04s3.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-BuENhrC2.js → timeline-definition-PNZ67QCA-DYsbXn5l.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DLtum9dF.js → vennDiagram-CIIHVFJN-HUpRpuUp.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-Bf7OSF3y.js → wardley-L42UT6IY-cT3nQH_T.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-slMw3OB3.js → wardleyDiagram-YWT4CUSO-Dmm7J6Qc.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-CdxOm8oC.js → xychartDiagram-2RQKCTM6-CX0L5p9C.js} +1 -1
- package/web-shell/index.html +3 -3
- package/web-shell/assets/channel-Cx7egbSX.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CwH_F8cH.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwH_F8cH.js +0 -1
- package/web-shell/assets/index-BDZiTAkl.css +0 -1
- package/web-shell/assets/index-CjTH6cLP.js +0 -516
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-luL7KTiX.js +0 -1
- package/chunks/{chunk-JDV3VBPY.js → chunk-F6XNTYNE.js} +202 -202
- 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`
|
|
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` |
|
|
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](
|
|
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](
|
|
645
|
-
| `--telemetry-target` | | Sets the telemetry target. | | See [telemetry](
|
|
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
|
|
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
|
|
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
|
|
708
|
-
-
|
|
709
|
-
- See the [Commands documentation](../features/commands) for full details on the `/memory` command
|
|
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"
|
|
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,
|
|
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 [
|
|
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](
|
|
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](
|
|
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](
|
|
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](
|
|
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](
|
|
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)](
|
|
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](
|
|
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/
|
|
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
|
|
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.
|
|
33
|
+
2. Start Qwen Code and open the MCP management dialog to view and manage
|
|
34
|
+
servers:
|
|
34
35
|
|
|
35
36
|
```bash
|
|
36
|
-
qwen
|
|
37
|
+
qwen
|
|
37
38
|
```
|
|
38
39
|
|
|
39
|
-
|
|
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
|
|
194
|
-
|
|
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
|
|
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
|
-
|
|
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](
|
|
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](
|
|
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
|
|
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
|
|
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](
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
69
|
+
The first-run menu lets you connect a model provider. Choose one of:
|
|
70
70
|
|
|
71
|
-
- **Alibaba
|
|
72
|
-
- **
|
|
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
|
-
#
|
|
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),
|
|
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/
|
|
112
|
+
For detailed instructions, see the [Authentication Setup](../configuration/auth.md) documentation.
|