Skip to content

implement-review: wire the reserved /implement-review mcp channel via codex mcp-server (Windows antivirus caveat) #11

@yzhao062

Description

@yzhao062

Summary

The implement-review skill reserves a /implement-review mcp trigger as a "forward-compat slot" but does not implement it (skills/implement-review/SKILL.md:165: an MCP-based Codex channel, "currently out of scope"). On Windows the codex mcp-server MCP transport now drives a Codex review fully automatically, sidestepping the fragile codex exec subprocess path. This issue tracks promoting MCP to a real, preferred auto channel, with the important caveat that the MCP/Codex path has previously tripped Windows antivirus and is currently working for reasons not yet understood.

Current channels

SKILL.md supports three paths to Codex:

  • Terminal-relay (default, manual copy-paste)
  • Auto-terminal (codex exec subprocess via dispatch-codex.{ps1,sh}, plus a Copilot backend dispatch-copilot.{ps1,sh} for the agent-fungibility case)
  • Plugin (user-initiated)

MCP is only a reserved trigger slot, not a channel.

What works now (Windows)

  • claude mcp list shows the Codex MCP server connected:
    codex: .../npm/codex mcp-server -c approval_policy=on-failure - Connected
  • In a session where its tools are exposed, Claude can call the Codex MCP tool directly: Codex reviews in-process and returns findings. No terminal spawn, no codex exec, no copy-paste. A recent watchlist-monitor review used this path successfully.

Why this was deferred: Windows antivirus

Previously, exercising the /implement-review mcp / codex mcp-server path tripped the system antivirus on Windows (maintainer-observed). That interaction is a likely reason MCP was kept out of scope. It is working again now for unknown reasons (AV definitions update, an added exclusion, or a changed binary). The intermittency is the core risk: an AV false-positive that blocks codex mcp-server would silently break the channel.

Reliability gotcha: "connected" is not "callable"

Observed this session: claude mcp list reports the codex server Connected, yet its tools were not exposed to the agent (ToolSearch could not surface a codex tool; it was absent from the session's deferred-tool list). A connected server does not guarantee the channel is usable in a given session. This argues against making MCP the only auto path.

Proposed design

Per AGENTS.md "Agent Fungibility" (keep alternatives reachable):

  • Implement the reserved trigger pattern: /implement-review mcp slash arg plus plain phrases (use mcp, mcp mode) under the existing negation guard (SKILL.md:165).
  • Dispatch via the Codex MCP tool instead of codex exec.
  • Make MCP the preferred auto channel on Windows when the server is reachable.
  • Keep codex exec (Auto-terminal) and the Copilot backend as fallbacks: when the MCP server is not running, not exposed in the session, or AV-blocked; and for the fungibility case (Claude absent, Codex cannot self-review, so Copilot reviews).

Open questions / to investigate

  1. AV root cause and mitigation: what exactly did the antivirus flag (the codex mcp-server process, a dispatch script, a temp file)? Document a recommended AV exclusion, or detection-and-graceful-fallback so an AV block degrades to codex exec / terminal-relay instead of hanging.
  2. Tool-exposure reliability: detect when the codex MCP tools are connected-but-not-callable and fall back automatically.
  3. Dispatch implementation: how the skill invokes the MCP tool (the MCP call replaces the dispatch-codex subprocess), including the prompt/response file contract the existing health-check and review-loop machinery rely on.
  4. Cross-agent parity: the same MCP-as-reviewer idea for the Claude / Copilot backends.

Acceptance criteria

  • /implement-review mcp (and use mcp / mcp mode) selects an MCP-dispatched Codex review.
  • A bare /implement-review auto prefers MCP when reachable, else falls back to codex exec, else terminal-relay, with the chosen channel logged.
  • The AV interaction is documented (exclusion or graceful degradation), so an AV block does not hang the loop.
  • Fallback channels remain reachable per fungibility.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions