Skip to content

Commit a10fe5a

Browse files
greenpoloclaude
andcommitted
release: v2.0.1 — bug-fix release for the ACP hangs + silent errors
Bumps marketplace.json + all six plugin.json to 2.0.1, adds the v2.0.1 CHANGELOG entry, README badges, and GitHub issue templates. Behavior changes are entirely in 64ce3c0 / 0e012f7 / 3cd9592 / 63e4a45 / b94bd2a — this commit packages them as a release. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent b94bd2a commit a10fe5a

12 files changed

Lines changed: 202 additions & 25 deletions

File tree

.claude-plugin/marketplace.json

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,49 +6,61 @@
66
},
77
"metadata": {
88
"description": "Marketplace for cc-multi-cli-plugin — delegation to Codex, Gemini, Cursor, and GitHub Copilot CLIs from Claude Code.",
9-
"version": "2.0.0"
9+
"version": "2.0.1"
1010
},
1111
"plugins": [
1212
{
1313
"name": "multi",
1414
"description": "Hub — companion runtime, subagents, setup wizard, customization skills. Install first.",
15-
"version": "2.0.0",
16-
"author": { "name": "greenpolo" },
15+
"version": "2.0.1",
16+
"author": {
17+
"name": "greenpolo"
18+
},
1719
"source": "./plugins/multi"
1820
},
1921
{
2022
"name": "gemini",
2123
"description": "Adds /gemini:explore (Gemini 3 Flash, fast code ingestion) and /gemini:research (Gemini 3.1 Pro, deep external research). Requires multi.",
22-
"version": "2.0.0",
23-
"author": { "name": "greenpolo" },
24+
"version": "2.0.1",
25+
"author": {
26+
"name": "greenpolo"
27+
},
2428
"source": "./plugins/gemini"
2529
},
2630
{
2731
"name": "codex",
2832
"description": "Adds /codex:execute. Requires multi.",
29-
"version": "2.0.0",
30-
"author": { "name": "greenpolo" },
33+
"version": "2.0.1",
34+
"author": {
35+
"name": "greenpolo"
36+
},
3137
"source": "./plugins/codex"
3238
},
3339
{
3440
"name": "cursor",
3541
"description": "Adds /cursor:write, /cursor:plan, /cursor:debug. Requires multi.",
36-
"version": "2.0.0",
37-
"author": { "name": "greenpolo" },
42+
"version": "2.0.1",
43+
"author": {
44+
"name": "greenpolo"
45+
},
3846
"source": "./plugins/cursor"
3947
},
4048
{
4149
"name": "copilot",
4250
"description": "Adds /copilot:research, /copilot:review. Requires multi.",
43-
"version": "2.0.0",
44-
"author": { "name": "greenpolo" },
51+
"version": "2.0.1",
52+
"author": {
53+
"name": "greenpolo"
54+
},
4555
"source": "./plugins/copilot"
4656
},
4757
{
4858
"name": "qwen",
4959
"description": "Adds /qwen:write (Qwen3-Coder via Qwen Code CLI ACP). Requires multi.",
50-
"version": "2.0.0",
51-
"author": { "name": "greenpolo" },
60+
"version": "2.0.1",
61+
"author": {
62+
"name": "greenpolo"
63+
},
5264
"source": "./plugins/qwen"
5365
}
5466
]
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: Bug report
2+
description: Something doesn't work — a CLI hangs, errors silently, or behaves wrong.
3+
labels: [bug]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thanks for taking the time to file a bug! A few quick things that make these much faster to triage:
9+
10+
- **Try `ACP_TRACE=1`** if the issue is silent/stalling. Re-run the failing command with that env var set and paste the stderr — it shows the JSON-RPC traffic between Claude and the CLI and almost always points at the cause.
11+
- **Note your CLI version** for whichever CLI is involved (`<cli> --version` or `<cli> about`).
12+
- **Check [README › Known issues](../../#known-issues)** for documented upstream bugs already being tracked.
13+
14+
- type: dropdown
15+
id: cli
16+
attributes:
17+
label: Which CLI is involved?
18+
options:
19+
- codex
20+
- gemini
21+
- cursor
22+
- copilot
23+
- qwen
24+
- other / N/A
25+
validations:
26+
required: true
27+
28+
- type: input
29+
id: cli-version
30+
attributes:
31+
label: CLI version
32+
placeholder: "e.g. 2026.04.17-787b533"
33+
34+
- type: textarea
35+
id: what-happened
36+
attributes:
37+
label: What happened?
38+
description: What did you run, what did you expect, what did you get?
39+
placeholder: |
40+
I ran `/cursor:debug investigate the bug in foo.js`.
41+
I expected Cursor to read foo.js and propose a fix.
42+
Instead the subagent returned "Cursor debugger failed: no output" after 8 minutes.
43+
validations:
44+
required: true
45+
46+
- type: textarea
47+
id: trace
48+
attributes:
49+
label: ACP_TRACE output (if applicable)
50+
description: Re-run with `ACP_TRACE=1 node ...multi-cli-companion.mjs ... 2>&1` and paste the stderr.
51+
render: shell
52+
53+
- type: input
54+
id: os
55+
attributes:
56+
label: OS
57+
placeholder: "Windows 11 / macOS 14 / Ubuntu 24"

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Add a CLI yourself (no issue needed)
4+
url: https://github.com/greenpolo/cc-multi-cli-plugin/blob/master/plugins/multi/skills/multi-cli-anything/SKILL.md
5+
about: With this plugin installed, ask Claude Code "add <CLI> to cc-multi-cli-plugin" — the multi-cli-anything skill scaffolds everything.
6+
- name: Customize an existing CLI/role
7+
url: https://github.com/greenpolo/cc-multi-cli-plugin/blob/master/plugins/multi/skills/customize/SKILL.md
8+
about: Swap which CLI handles which role, hardcode a model, restrict tools — Claude does the file edits via the customize skill.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Feature request
2+
description: Add a new CLI, role, or capability to the plugin.
3+
labels: [enhancement]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Adding a new CLI is supported out-of-the-box via the `multi-cli-anything` skill — open Claude Code with this plugin installed and ask: *"add `<cli-name>` to cc-multi-cli-plugin."* Claude scaffolds the new plugin, adapter, subagents, and commands. No issue needed for that path.
9+
10+
Use this template for: a new built-in CLI (shipped by default), a new role for an existing CLI, a behavior/UX improvement, or anything else.
11+
12+
- type: textarea
13+
id: what
14+
attributes:
15+
label: What would you like to add or change?
16+
validations:
17+
required: true
18+
19+
- type: textarea
20+
id: why
21+
attributes:
22+
label: Why? (concrete use case)
23+
description: What task can't you do today that this would unblock?
24+
validations:
25+
required: true
26+
27+
- type: textarea
28+
id: alternatives
29+
attributes:
30+
label: Alternatives you've considered

CHANGELOG.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,36 @@
11
# Changelog
22

3+
## v2.0.1 — 2026-04-26
4+
5+
Bug-fix release. Real-world prompts beyond a one-shot text reply silently broke before this — agents stalled, errors vanished, the forwarding subagents reported success on empty output. This release fixes the entire ACP traffic path.
6+
7+
### Fixed
8+
9+
- **ACP session hangs across all CLIs.** The shared ACP client now responds to incoming JSON-RPC requests from the agent (previously dropped). `buildAutoApproveRequestHandler` services `session/request_permission`, `cursor/ask_question`, and the full `terminal/*` family — without these, agents stalled forever waiting for our response.
10+
- **Silently-dropped errors.** Non-codex adapter branches now exit 0 on in-protocol errors (with the failure message in rendered output). Previously, exit 1 tripped the forwarding subagent's "if Bash fails, return nothing" rule and the user saw nothing at all.
11+
- **Cursor `agent acp` Terminal hang.** Plugin now auto-injects a permissive allowlist (`Shell(*)`, `Read/Write/Edit(**)`, `MCP(*)`) into `~/.cursor/cli-config.json` before each Cursor invocation. Without this, Cursor's out-of-band permission gate silently stalls every `execute` tool call.
12+
- **Gemini `--model auto` hang.** Companion now treats `auto` as "skip `session/set_model`" so the CLI's native alias resolver picks a real model id. Calling `set_model("auto")` over ACP was silently accepted but caused `session/prompt` to hang.
13+
- **MCP server schema.** `env` is now an array of `{name, value}` per ACP spec (was a `Record<string, string>`).
14+
15+
### Added
16+
17+
- **MCP wiring (Exa + Context7) into ACP `session/new`** for all four ACP adapters (Gemini, Cursor, Copilot, Qwen). Reads keys from `~/.claude/plugins/cc-multi-cli-plugin/config.json` (already populated by `/multi:setup`).
18+
- **Client-side ACP terminal services** (`scripts/lib/acp-terminals.mjs`) — `terminal/create`, `terminal/output`, `terminal/wait_for_exit`, `terminal/kill`, `terminal/release` backed by `child_process.spawn` with a 1 MiB output ring buffer. Handshake declares `clientCapabilities.terminal: true`.
19+
- **Yolo / max-permission defaults.** Gemini approval mode is now always `yolo`; Codex sandbox for `--write` tasks is `danger-full-access`; Cursor spawn includes `--yolo --approve-mcps acp` and explicitly sets ACP mode based on role.
20+
- **`ACP_TRACE=1` env var** for full incoming-message tracing — single most useful diagnostic when an agent silently hangs.
21+
- **One-time stderr warning** when Cursor 2026.04.17-787b533 (the build with the documented MCP/Terminal regression) is detected. Auto-quiet on other versions.
22+
- **Operator escape hatches**: `CURSOR_AGENT_PATH` env var is now honored for pinning a specific Cursor build. Documented in the `customize` skill.
23+
24+
### Changed
25+
26+
- **All 10 multi/agents/*.md** loosened forwarding contract: capture stderr (`2>&1`), forbid ad-hoc polling/sleep/cat, return a structured one-line failure summary on Bash failure (instead of silently returning nothing). `--write` defaults added to writer-style agents (cursor-debugger, cursor-writer, qwen-writer).
27+
- **Skills** (`multi-cli-anything`, `customize`) now document the ACP gotchas we hit empirically — out-of-band permission gates, terminal capability semantics, MCP wiring quirks, mode-setting variance, version sensitivity. `cursor.mjs` is cited as the worked example.
28+
- **README** Known Issues section with documented Cursor 2026.04.17 upstream regressions (forum links).
29+
30+
### Known issues (upstream, not fixable from the plugin)
31+
32+
- Cursor 2026.04.17 `agent acp` does not send `session/request_permission` over the wire and silently stalls Terminal/MCP tool calls. Workaround: pre-approval via `cli-config.json` allowlist (auto-applied) keeps simple shell exec working; complex multi-tool runs may still hang. Pin an older build via `CURSOR_AGENT_PATH` if needed.
33+
334
## v2.0.0 — 2026-04-24
435

536
### Breaking — renamed from `skill-gemini` to `cc-multi-cli-plugin`

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
# cc-multi-cli-plugin
44

5+
[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
6+
[![Latest release](https://img.shields.io/github/v/release/greenpolo/cc-multi-cli-plugin?include_prereleases&sort=semver&label=release)](https://github.com/greenpolo/cc-multi-cli-plugin/releases)
7+
[![Built for Claude Code](https://img.shields.io/badge/built_for-Claude_Code-d97757)](https://docs.anthropic.com/en/docs/claude-code)
8+
[![CLIs supported](https://img.shields.io/badge/CLIs-Codex_·_Gemini_·_Cursor_·_Copilot_·_Qwen-555)](#commands)
9+
[![Stars](https://img.shields.io/github/stars/greenpolo/cc-multi-cli-plugin?style=social)](https://github.com/greenpolo/cc-multi-cli-plugin/stargazers)
10+
511
If you have access to multiple AI coding CLIs (Codex, Gemini, Cursor, Copilot, etc.), this plugin lets Claude Code delegate to whichever one is best for the task — without you having to switch tools or run them yourself.
612

713
Each CLI is wired up through its native protocol (ACP, ASP, JSON-RPC). This allows you to pick and choose all the best features from each CLIs; like /debug mode from Cursor, /research from Copilot, etc... Sessions, streaming, tool calls, and background jobs all work normally.
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
{
22
"name": "codex",
33
"description": "Delegate plan execution to Codex CLI via ASP. Part of cc-multi-cli-plugin. Requires the `multi` plugin.",
4-
"version": "2.0.0",
4+
"version": "2.0.1",
55
"author": {
66
"name": "greenpolo",
77
"url": "https://github.com/greenpolo"
88
},
99
"license": "Apache-2.0",
10-
"keywords": ["claude-code", "codex", "execute", "asp"]
10+
"keywords": [
11+
"claude-code",
12+
"codex",
13+
"execute",
14+
"asp"
15+
]
1116
}
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
{
22
"name": "copilot",
33
"description": "Delegate GitHub-context research and code review to GitHub Copilot CLI via ACP. Part of cc-multi-cli-plugin. Requires the `multi` plugin.",
4-
"version": "2.0.0",
4+
"version": "2.0.1",
55
"author": {
66
"name": "greenpolo",
77
"url": "https://github.com/greenpolo"
88
},
99
"license": "Apache-2.0",
10-
"keywords": ["claude-code", "copilot", "research", "review", "acp"]
10+
"keywords": [
11+
"claude-code",
12+
"copilot",
13+
"research",
14+
"review",
15+
"acp"
16+
]
1117
}
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
{
22
"name": "cursor",
33
"description": "Delegate coding, planning, and debugging to Cursor CLI via ACP. Part of cc-multi-cli-plugin. Requires the `multi` plugin.",
4-
"version": "2.0.0",
4+
"version": "2.0.1",
55
"author": {
66
"name": "greenpolo",
77
"url": "https://github.com/greenpolo"
88
},
99
"license": "Apache-2.0",
10-
"keywords": ["claude-code", "cursor", "write", "debug", "acp"]
10+
"keywords": [
11+
"claude-code",
12+
"cursor",
13+
"write",
14+
"debug",
15+
"acp"
16+
]
1117
}
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
{
22
"name": "gemini",
33
"description": "Delegate research to Gemini CLI via ACP. Part of cc-multi-cli-plugin. Requires the `multi` plugin.",
4-
"version": "2.0.0",
4+
"version": "2.0.1",
55
"author": {
66
"name": "greenpolo",
77
"url": "https://github.com/greenpolo"
88
},
99
"license": "Apache-2.0",
10-
"keywords": ["claude-code", "gemini", "research", "acp"]
10+
"keywords": [
11+
"claude-code",
12+
"gemini",
13+
"research",
14+
"acp"
15+
]
1116
}

0 commit comments

Comments
 (0)