feat: add codex supervisor plugin#87849
Conversation
Dependency Changes DetectedThis PR changes dependency-related files. Maintainers should confirm these changes are intentional. Changed files:
Maintainer follow-up:
|
Dependency graph change authorizedThis PR includes dependency graph changes. A member of
A later push changes the PR head SHA and requires a fresh security approval. |
|
Codex review: needs real behavior proof before merge. Reviewed May 28, 2026, 10:32 PM ET / 02:32 UTC. Summary PR surface: Source +1781, Tests +1084, Docs +268, Config +46, Other +19. Total +3198 across 35 files. Reproducibility: yes. for the review blockers: source inspection shows invalid endpoint records are filtered, and the upstream Codex app-server docs require Review metrics: 3 noteworthy metrics.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Land only after malformed config and elicitation decline are fixed, redacted live Codex app-server or MCP proof is added, and maintainers explicitly accept bundling the supervisor control plane and raw socket/dependency surface. Do we have a high-confidence way to reproduce the issue? Yes for the review blockers: source inspection shows invalid endpoint records are filtered, and the upstream Codex app-server docs require Is this the best way to solve the issue? No, not yet. The plugin direction is plausible, but the current branch needs fail-fast config parsing, the correct MCP decline contract, live proof, and explicit security/product acceptance before it is the safest implementation. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against fce00ccb6eab. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +1781, Tests +1084, Docs +268, Config +46, Other +19. Total +3198 across 35 files. View PR surface stats
Security concerns:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3cdefc8141
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| .map(endpointFromToken) | ||
| .filter((entry): entry is CodexSupervisorEndpoint => Boolean(entry)), |
There was a problem hiding this comment.
Reject invalid supervisor endpoints
When OPENCLAW_CODEX_SUPERVISOR_ENDPOINTS contains an invalid token (for example prod=https://host or a typo in a comma-separated fleet), this filter silently drops it instead of failing startup. If the typo is the only endpoint the supervisor starts with zero endpoints, and if it is mixed with valid endpoints it supervises only part of the configured fleet with no operator-facing error, which is risky for a new control-plane config surface. Please report the bad entry and fail fast instead of filtering it away.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: dbf289351d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (method === "mcpServer/elicitation/request") { | ||
| return { action: "decline" }; |
There was a problem hiding this comment.
Include null content when declining MCP elicitations
When a supervised Codex turn invokes an MCP server that triggers mcpServer/elicitation/request, this response omits the content field even though the Codex app-server contract documents decline/cancel responses as {"action":"decline","content":null} (see https://github.com/openai/codex/blob/main/codex-rs/app-server/README.md#mcp-server-elicitations). In that scenario the app-server can treat the client reply as malformed or fail to resolve the pending elicitation, which can leave the turn blocked instead of failing closed cleanly; return { action: "decline", content: null } here.
Useful? React with 👍 / 👎.
…nsion # Conflicts: # src/cron/schedule-identity.test.ts
|
/allow-dependencies-change codex supervisor bundled extension dependencies |
|
/allow-dependencies-change codex supervisor bundled extension dependencies |
…nsion # Conflicts: # src/tui/gateway-chat.test.ts
|
/allow-dependencies-change codex supervisor bundled extension dependencies |
Summary
Behavior addressed:
Codex sessions can be supervised through OpenClaw plugin tools or the standalone MCP server while preserving explicit transcript and write-control policy gates.
Real environment tested:
Local macOS checkout plus Blacksmith Testbox tbx_01ksrpfzbm5dx436nftran264m.
Exact steps or command run after this patch:
Evidence after fix:
Observed result after fix:
The codex-supervisor plugin registers its five tools, supports loaded-only session listing and endpoint inference, uses thread/read for target reads, and keeps stored-history enumeration behind includeStored.
What was not tested:
pnpm check:changed did not complete green because typecheck all failed outside this patch in src/cron/schedule-identity.test.ts and extensions/memory-wiki/src/apply.ts. The Testbox run id was tbx_01ksrpfzbm5dx436nftran264m.