Repository navigation
Description
Relocated from dezren39/darwin-nix#218 on 2026-10-28 (placement audit): mcpx's single source lives in developing-today/code (pkgs/mcpx); re-home tracked at #309. Original body below; issue references inside it are historical (dezren39/nix numbering).
Parent: #181
Summary
opencode v2 wraps every MCP server in its own code mode unless the server is configured codemode: false, and this machine's v1 does the same because OPENCODE_EXPERIMENTAL is set. So mcpx's /mcp ends up as a tool called from a program the model wrote for opencode's interpreter, and nothing in mcpx's docs says to opt out. v2 also appends ?codemode=false to remote MCP URLs so servers that bundle code mode can expose raw tools; mcpx ignores it. opencode runs permission checks and plugin hooks per child call, shows live status, and cancels on abort. The plugin's mcpx_exec makes one blocking POST and ignores the abort signal (the session and field bugs are #189).
Found while writing the comparison register (pkgs/mcpx/docs/compare/) and checked against the code at 05c78b2. Each row below links its register entry, which carries the value, effort, risk, the specification text and every source.
Register rows
| row | difference | mcpx @ 05c78b2 | effort |
|---|---|---|---|
| CODE-53 | opencode wraps MCP servers in code mode by default | ✗ — docs never tell users to opt out | S |
| PLG-35 | ?codemode=false appended to remote MCP URLs |
✗ — neither sends nor honours it | M |
| PLG-36 | Hooks and permission checks per child call in code mode | ✗ — script calls bypass opencode permissions | L |
| PLG-37 | Live status of each child call during a script | ✗ — plugin makes one blocking POST | S |
| PLG-38 | Cancelling in the harness stops the script | ✗ — plugin ignores the abort signal | S |
What to do
Document codemode: false for mcpx in opencode config; decide whether ?codemode=false should expose upstream tools flat; plumb abort and live status through the plugin's mcpx_exec.
Ease · Impact · Related
Ease M · Impact med · Related: #189, #47, #48
Acceptance criteria
- mcpx documentation tells opencode users how mcpx interacts with opencode's default code-mode wrapping, including how to opt a server out (
codemode: false) (CODE-53). - mcpx honors
?codemode=falseon its/mcpURL: raw tools are exposed instead of the code-mode surface. - The plugin's
mcpx_execrespects the host abort signal — an aborted session cancels the in-flight call instead of blocking to completion. - Tests cover the query-parameter handling and the abort path.
Activity
dezren39 commentedon Oct 28, 2026
History carried over from dezren39/darwin-nix#218 (verbatim, oldest first):
@dezren39 · 2026-10-28T04:30:23Z
🤖 Intake review — fleet monitor, 2026-10-27 run
pkgs/mcpx/docs/compare/register/; the session/field bugs in the same plugin path are Phase 4: joiner misses an update made without knowing its concurrent add #189.05c78b2(2026-09-30). Re-verify each row against currentmainbefore fixing — a row may have moved since.developing-today commentedon Oct 28, 2026
CODE-865
dezren39 commentedon Oct 29, 2026
🤖 Agent note · picked up
141 remaining items
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
opencode, so this lane hands off per runbook §1b — the opencode claimant launches the bound session.dezren39 commentedon Nov 4, 2026
Launched and bound queue task 7794 to OpenCode session ses_e5e5a83d3f9ffekwNR3D2tPDXG via opencode-route/workhorse (build). The task claim remains owned by repo-worker-code.
dezren39 commentedon Nov 4, 2026
agent-note:v1
state: triaged — current-main revalidation (task 7794, 2026-11-04)
Verdict: still live; keep #1940 open. Fresh GitHub read: issue is OPEN. I fetched remote main into FETCH_HEAD at 8331a77 (local checkout was behind; no branch/worktree changes made). PR #2992 is merged and satisfies PLG-35, but the other issue-body rows are not all done.
Ordering / dependencies: 1) docs-only CODE-53 can proceed independently; 2) PLG-38 can wire cancellation through the existing generated client and fallback. #1910 is closed and PR #2569 merged, so preserve its session forwarding but it is no blocker. Coordinate ask-path/task-backed cancellation with the remaining work in #1864; outer /v1/exec request cancellation is a distinct layer. 3) PLG-37 needs its own streaming/status design and tests. 4) settle PLG-36's host mediation model before implementation. No evidence supports closing or marking the whole issue complete.