openai / openai/codex-plugin-cc

Connector (codex_apps) MCP tool calls are auto-rejected: app-server client stubs all server→client requests with -32601

Open
#499 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
33.3k
Forks
2.3k
PR merge metrics
No merged PRs in 30d

Description

Summary

When a Codex session run through this plugin calls a ChatGPT connector tool (the codex_apps MCP server — DainOS, GitHub, Slack, etc.), the call is refused before it runs. The root cause is that the plugin's app-server JSON-RPC client stubs every inbound server→client request with a -32601 error, so the approval/elicitation request that connector tool calls depend on is never answered.

Where

scripts/lib/app-server.mjs (plugin v1.0.6):

handleServerRequest(message) {
  this.sendMessage({
    id: message.id,
    error: buildJsonRpcError(-32601, `Unsupported server request: ${message.method}`)
  });
}

Inbound messages that carry both an id and a method (server→client requests, including approval elicitations) are routed here and unconditionally rejected. Only notifications (method, no id) are handled, via notificationHandler.

Impact

Sol/Codex cannot use any ChatGPT connector through the plugin's runners:

  • The background rescue agent (codex:rescue) returns user rejected MCP tool call instantly.
  • codex mcp-server (driven from Claude Code) and plain codex exec hang on the unanswered elicitation (observed ~20+ min at 0% CPU).

Repro

  1. Sign in to Codex with a ChatGPT account that has at least one connector/app enabled.
  2. From the plugin (or codex exec), ask the model to call any connector tool (a read-only one is enough).
  3. Observe user rejected MCP tool call (rescue agent) or an indefinite hang (codex exec / codex mcp-server).

Workaround

codex exec --dangerously-bypass-approvals-and-sandbox bypasses the approval handshake entirely and the connector call succeeds. Note: approval_policy = "never" in ~/.codex/config.toml alone is not sufficient — the connector elicitation still blocks. The interactive codex TUI works because it answers the elicitation itself.

Suggested fix

Implement handleServerRequest to respond to approval / elicitation requests (auto-approve per the session's approval_policy, or surface them to the caller) instead of blanket-rejecting with -32601.

Environment

  • Plugin: codex@openai-codex v1.0.6 (marketplace openai/codex-plugin-cc)
  • codex-cli 0.144.4
  • Claude Code on macOS

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in scripts/lib/app-server.mjs by reading handleServerRequest and notificationHandler, then reproduce the connector call using the steps in the issue. Done means approval or elicitation requests are handled according to the session's approval_policy instead of being blanket-rejected, and connector calls no longer immediately fail or hang.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
api, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.