-
Notifications
You must be signed in to change notification settings - Fork 2k
ACP Zed integration: mode switching and session management not working #2015
Description
ACP Zed Integration Issues
Problem Summary
When integrating Qwen Code with Zed editor (via ACP protocol), several incompatibilities with @zed-industries/claude-agent-acp's protocol format were discovered, causing the following features to malfunction:
- Unable to switch Mode (plan/yolo/auto-edit etc.)
- Session list display issues
- Session resume functionality not working
Root Causes
Our ACP implementation had the following differences from @zed-industries/claude-agent-acp's protocol format:
1. session/new Response Missing Critical Fields
@zed-industries/claude-agent-acp (expected format):
{
"sessionId": "xxx",
"models": { ... },
"modes": {
"currentModeId": "default",
"availableModes": [...]
},
"configOptions": [
{
"id": "mode",
"name": "Mode",
"type": "select",
"currentValue": "default",
"options": [...]
},
{
"id": "model",
"name": "Model",
"type": "select",
"currentValue": "default",
"options": [...]
}
]
}Qwen Code (actual format):
{
"sessionId": "xxx",
"models": { ... }
// Missing modes and configOptions
}Impact: Zed client uses configOptions to render Mode/Model switching UI. Without these fields, users cannot switch modes.
2. session/list Response Format Mismatch
@zed-industries/claude-agent-acp (expected format):
{
"sessions": [
{
"sessionId": "...",
"cwd": "...",
"title": "(session)",
"updatedAt": "2026-02-28T02:34:57.639Z"
}
]
}Qwen Code (actual format):
{
"items": [...],
"hasMore": false,
"nextCursor": 20
}Issues:
- Field name mismatch:
itemsshould besessions - Missing fields:
title,updatedAt - Extra fields:
hasMore,nextCursor
Additional issue: listSessionsRequestSchema had cwd as required, but Zed sends empty params {}.
Error message:
{
"code": -32602,
"message": "Invalid params",
"data": {
"details": "{\"_errors\": [], \"cwd\": {\"_errors\": [\"Required\"]}}"
}
}3. initialize Response Missing sessionCapabilities
@zed-industries/claude-agent-acp (expected format):
{
"agentCapabilities": {
"loadSession": true,
"promptCapabilities": { ... },
"sessionCapabilities": {
"fork": {},
"list": {},
"resume": {}
}
}
}Qwen Code (actual format):
{
"agentCapabilities": {
"loadSession": true,
"promptCapabilities": { ... }
// Missing sessionCapabilities
}
}Impact: Zed client cannot discover session list/resume capabilities.
Affected Files
packages/cli/src/acp-integration/schema.tspackages/cli/src/acp-integration/acpAgent.ts
Recommendations
-
Reference Implementation: Consider referencing
@zed-industries/claude-agent-acp's ACP implementation to ensure format compatibility. -
Test Coverage: Add ACP protocol compatibility tests that compare our responses against
@zed-industries/claude-agent-acp's responses. -
Documentation: Update ACP integration documentation to describe supported features and known limitations.