tracking(serve): Track ACP gaps for cd, permissions, trust, lsp, and setup-github
Progress
What would you like to be added?
Please track and address the remaining daemon/ACP capability gaps for these CLI slash commands:
| Command |
Current remote behavior |
Requested capability |
/cd |
POST /session/:id/prompt accepts the prompt but ACP rejects the command because it is interactive-only. A session can be created with a cwd, but an existing session cannot change working directory. |
Add a daemon/ACP-safe way to change an active session's working directory, including validation, trust handling, and session context refresh. |
/permissions |
ACP rejects the command because it is interactive-only. The workspace settings API does not currently expose permissions.allow, permissions.ask, or permissions.deny as a substitute. |
Add a structured way for remote clients to inspect and update permission rules, or explicitly expose the relevant settings with validation and reload semantics. |
/trust |
ACP rejects the command because it is interactive-only. The current flow opens a local trust dialog and writes local trusted-folder state. |
Add a structured trust-management surface for remote clients, or document that trust remains operator-only and provide a supported alternative for web/daemon clients. |
/lsp |
ACP rejects /lsp; /status or /about can provide only coarse information. |
Add ACP support or a structured status endpoint for LSP server state. |
/setup-github |
ACP rejects the command because it is interactive-only. Generic file-write or shell routes can manually approximate parts of the flow, but they do not invoke the setup workflow itself. |
Add a daemon/ACP-safe setup flow, or document the supported remote-client replacement. |
This should be tracked separately from the broad daemon backlog because these commands are not covered by generic slash-command passthrough. Sending them through:
POST /session/:id/prompt
{"prompt":[{"type":"text","text":"/cd /path"}]}
does not execute the command successfully. The prompt is accepted, but the ACP slash-command path filters commands by mode and rejects commands that do not support acp.
Why is this needed?
Remote clients should be able to determine which CLI capabilities are intentionally unavailable, which have structured daemon replacements, and which are missing daemon/ACP capabilities.
Today these five commands create ambiguity:
- They look like ordinary slash commands to users.
- They can be sent through the same
/prompt shape used by ACP-compatible commands.
- The request may be accepted asynchronously, but the command later fails because it is not supported in ACP mode.
- Some nearby capabilities exist, such as session creation with
cwd, permission mediation, /status, file write, or optional shell execution, but those are not equivalent to the CLI command behavior.
Tracking them together would give downstream web-shell, IDE, and SDK clients a concrete compatibility checklist instead of treating each command as an isolated surprise.
Additional context
Related issues:
Observed behavior:
- Built-in commands without
acp support are filtered out of the ACP command set.
- Known commands that are filtered out return an unsupported slash-command result rather than falling through as normal model prompts.
- Dialog-returning commands such as
/permissions and /trust need more than simply adding acp to supportedModes.
/setup-github also needs an ACP-safe result shape or a dedicated remote workflow because generic file writes do not reproduce the command's release lookup and setup behavior.
Suggested acceptance criteria:
- The daemon exposes an explicit support decision for each of the five commands.
- Commands that remain unsupported in ACP are documented with a recommended remote-client alternative.
- Commands that should be supported remotely have a structured route, ACP method, SDK helper, or ACP-safe slash implementation.
- Web-shell and SDK clients can preflight support without sending a command that later fails asynchronously.
中文
希望添加什么?
请跟踪并补齐以下 CLI slash commands 在 daemon/ACP 场景下的剩余能力缺口:
| 命令 |
当前远程行为 |
期望能力 |
/cd |
POST /session/:id/prompt 会接收 prompt,但 ACP 会因为该命令仅支持交互模式而拒绝。创建 session 时可以指定 cwd,但已有 session 不能动态切换工作目录。 |
增加 daemon/ACP 安全的 active session 切换工作目录能力,包括校验、trust 处理和 session context 刷新。 |
/permissions |
ACP 会因为该命令仅支持交互模式而拒绝。当前 workspace settings API 也不能作为替代暴露 permissions.allow、permissions.ask、permissions.deny。 |
增加远程客户端可用的权限规则查询和更新能力,或以受控方式暴露相关 settings,并定义校验和重载语义。 |
/trust |
ACP 会因为该命令仅支持交互模式而拒绝。当前流程会打开本地 trust dialog 并写入本地 trusted-folder 状态。 |
增加结构化 trust 管理能力,或明确文档说明 trust 仍由 operator 管理,并给 web/daemon client 提供受支持替代方案。 |
/lsp |
ACP 会拒绝 /lsp;/status 或 /about 只能提供粗粒度信息。 |
增加 /lsp 的 ACP 支持,或增加结构化 LSP server status endpoint。 |
/setup-github |
ACP 会因为该命令仅支持交互模式而拒绝。通用 file-write 或 shell route 可以手工模拟部分流程,但不会调用 setup workflow 本身。 |
增加 daemon/ACP 安全的 setup flow,或文档化远程客户端应使用的替代路径。 |
这应该和大的 daemon backlog 分开跟踪,因为这些命令并不能被普通 slash-command passthrough 覆盖。发送下面这样的请求:
POST /session/:id/prompt
{"prompt":[{"type":"text","text":"/cd /path"}]}
不会成功执行命令。请求会被接收,但 ACP slash-command 路径会按 mode 过滤命令,并拒绝不支持 acp 的命令。
为什么需要?
远程客户端需要明确知道哪些 CLI 能力是刻意不可用,哪些已有结构化 daemon 替代,哪些仍缺少 daemon/ACP 能力。
目前这五个命令容易产生歧义:
- 对用户来说它们看起来像普通 slash command。
- 它们可以用 ACP-compatible commands 相同的
/prompt 形状发送。
- 请求可能异步接收成功,但随后因为不支持 ACP mode 而失败。
- 周边存在一些能力,例如创建 session 时指定
cwd、permission mediation、/status、file write、可选 shell execution,但这些都不等价于 CLI 命令行为。
把它们放在一个 issue 中跟踪,可以给 web-shell、IDE 和 SDK 下游客户端一个明确的兼容性清单,而不是让每个命令都成为单独的意外。
额外上下文
相关 issue:
已观察到的行为:
- 不支持
acp 的 built-in commands 会从 ACP command set 中被过滤掉。
- 已知但被过滤的命令会返回 unsupported slash-command result,而不是退回成普通模型 prompt。
/permissions、/trust 这类返回 dialog 的命令,不能简单通过给 supportedModes 加 acp 来解决。
/setup-github 还需要 ACP-safe result shape 或专用远程 workflow,因为通用 file write 不能复现该命令的 release 查询和 setup 行为。
建议验收标准:
- daemon 对这五个命令分别给出明确支持决策。
- 继续不支持 ACP 的命令,有文档说明推荐的远程客户端替代方案。
- 应该远程支持的命令,提供结构化 route、ACP method、SDK helper,或 ACP-safe slash 实现。
- web-shell 和 SDK client 可以在发送命令前预检支持情况,而不是先发送再异步失败。
tracking(serve): Track ACP gaps for cd, permissions, trust, lsp, and setup-github
Progress
/lsp— AddedacptosupportedModes, ACP clients can invoke/lspdirectly. → fix(cli): enable /lsp in ACP mode #5689/permissions— Added structured REST API:GET /workspace/permissions(read) +POST /workspace/permissions(update rules), registered in ACP route table. → feat(cli): Add workspace permissions rules API #5743, feat(serve): Add daemon workspace voice and control APIs #5765/trust— AddedGET /workspace/trust(query status) +POST /workspace/trust/request(request trust change), registered in ACP route table. → feat(serve): Add daemon workspace voice and control APIs #5765/setup-github— AddedPOST /workspace/setup-githubACP endpoint, registered in ACP route table. → feat(serve): Add daemon workspace voice and control APIs #5765/cd— No daemon/ACP-safe session cwd change mechanism exists. The command remainsinteractive-only with no equivalent REST endpoint or ACP route.What would you like to be added?
Please track and address the remaining daemon/ACP capability gaps for these CLI slash commands:
/cdPOST /session/:id/promptaccepts the prompt but ACP rejects the command because it is interactive-only. A session can be created with acwd, but an existing session cannot change working directory./permissionspermissions.allow,permissions.ask, orpermissions.denyas a substitute./trust/lsp/lsp;/statusor/aboutcan provide only coarse information./setup-githubThis should be tracked separately from the broad daemon backlog because these commands are not covered by generic slash-command passthrough. Sending them through:
does not execute the command successfully. The prompt is accepted, but the ACP slash-command path filters commands by mode and rejects commands that do not support
acp.Why is this needed?
Remote clients should be able to determine which CLI capabilities are intentionally unavailable, which have structured daemon replacements, and which are missing daemon/ACP capabilities.
Today these five commands create ambiguity:
/promptshape used by ACP-compatible commands.cwd, permission mediation,/status, file write, or optional shell execution, but those are not equivalent to the CLI command behavior.Tracking them together would give downstream web-shell, IDE, and SDK clients a concrete compatibility checklist instead of treating each command as an isolated surprise.
Additional context
Related issues:
qwen serveHTTP/SSE backlog and explicitly distinguishes ACP-compatible slash passthrough from capabilities that need dedicated HTTP/SSE/SDK support.Observed behavior:
acpsupport are filtered out of the ACP command set./permissionsand/trustneed more than simply addingacptosupportedModes./setup-githubalso needs an ACP-safe result shape or a dedicated remote workflow because generic file writes do not reproduce the command's release lookup and setup behavior.Suggested acceptance criteria:
中文
希望添加什么?
请跟踪并补齐以下 CLI slash commands 在 daemon/ACP 场景下的剩余能力缺口:
/cdPOST /session/:id/prompt会接收 prompt,但 ACP 会因为该命令仅支持交互模式而拒绝。创建 session 时可以指定cwd,但已有 session 不能动态切换工作目录。/permissionspermissions.allow、permissions.ask、permissions.deny。/trust/lsp/lsp;/status或/about只能提供粗粒度信息。/lsp的 ACP 支持,或增加结构化 LSP server status endpoint。/setup-github这应该和大的 daemon backlog 分开跟踪,因为这些命令并不能被普通 slash-command passthrough 覆盖。发送下面这样的请求:
不会成功执行命令。请求会被接收,但 ACP slash-command 路径会按 mode 过滤命令,并拒绝不支持
acp的命令。为什么需要?
远程客户端需要明确知道哪些 CLI 能力是刻意不可用,哪些已有结构化 daemon 替代,哪些仍缺少 daemon/ACP 能力。
目前这五个命令容易产生歧义:
/prompt形状发送。cwd、permission mediation、/status、file write、可选 shell execution,但这些都不等价于 CLI 命令行为。把它们放在一个 issue 中跟踪,可以给 web-shell、IDE 和 SDK 下游客户端一个明确的兼容性清单,而不是让每个命令都成为单独的意外。
额外上下文
相关 issue:
qwen serveHTTP/SSE backlog,并明确区分 ACP-compatible slash passthrough 和需要专用 HTTP/SSE/SDK 支持的能力。已观察到的行为:
acp的 built-in commands 会从 ACP command set 中被过滤掉。/permissions、/trust这类返回 dialog 的命令,不能简单通过给supportedModes加acp来解决。/setup-github还需要 ACP-safe result shape 或专用远程 workflow,因为通用 file write 不能复现该命令的 release 查询和 setup 行为。建议验收标准: