Skip to content

revert(codex): revert first-party marketplace allowlist#89998

Merged
kevinslin merged 1 commit into
mainfrom
codex/revert-82219
Jun 3, 2026
Merged

revert(codex): revert first-party marketplace allowlist#89998
kevinslin merged 1 commit into
mainfrom
codex/revert-82219

Conversation

@kevinslin

Copy link
Copy Markdown
Contributor

Summary

Codex contract checked locally: ../codex/codex-rs/core-plugins/src/lib.rs defines openai-curated and openai-bundled; ../codex/codex-rs/cli/src/plugin_cmd.rs names openai-primary-runtime; ../codex/codex-rs/core-plugins/src/discoverable.rs lists bundled discoverable plugins.

Verification

  • git diff --check origin/main
  • node scripts/run-vitest.mjs extensions/codex/src/app-server/config.test.ts extensions/codex/src/app-server/plugin-activation.test.ts extensions/codex/src/app-server/session-binding.test.ts extensions/codex/src/migration/provider.test.ts extensions/sms/src/channel.test.ts extensions/sms/src/inbound.test.ts extensions/sms/src/twilio.test.ts src/config/sessions.cache.test.ts src/gateway/server.agent.gateway-server-agent-b.test.ts src/agents/tools/skill-workshop-tool.test.ts test/scripts/lint-suppressions.test.ts
  • npx oxfmt --check extensions/codex/src/app-server/config.test.ts extensions/codex/src/app-server/config.ts extensions/codex/src/app-server/plugin-activation.test.ts extensions/codex/src/app-server/plugin-activation.ts extensions/codex/src/app-server/plugin-inventory.ts extensions/codex/src/app-server/session-binding.test.ts extensions/codex/src/app-server/session-binding.ts extensions/codex/src/migration/apply.ts extensions/codex/src/migration/provider.test.ts extensions/sms/src/channel.test.ts extensions/sms/src/channel.ts extensions/sms/src/inbound.test.ts extensions/sms/src/twilio.test.ts src/agents/tools/skill-workshop-tool.ts src/config/sessions.cache.test.ts src/gateway/server.agent.gateway-server-agent-b.test.ts

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation gateway Gateway runtime agents Agent runtime and tooling extensions: codex plugin: migrate-hermes plugin: migrate-claude channel: sms Channel integration: sms size: M maintainer Maintainer-authored PR labels Jun 3, 2026
@clawsweeper

clawsweeper Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed June 3, 2026, 5:20 PM ET / 21:20 UTC.

Summary
This PR reverts the merged Codex first-party marketplace allowlist work back to openai-curated-only behavior and also reverts related docs, Codex tests, SMS status tests, and small adjacent test/tool edits.

PR surface: Source -99, Tests -204, Docs -67. Total -370 across 22 files.

Reproducibility: yes. Source inspection of the PR head shows non-curated Codex marketplaces are filtered out and SMS runtime fields are omitted; I did not run live behavior because this was a read-only review.

Review metrics: 2 noteworthy metrics.

  • Codex Marketplace Enum: 2 accepted values removed. The PR removes openai-bundled and openai-primary-runtime from a user-facing plugin config enum, which is compatibility-sensitive before merge.
  • SMS Runtime Status Projection: 6 runtime fields removed. Dropping running, connected, and last activity/error fields changes gateway health/readiness behavior for configured SMS accounts.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🧂 unranked krab
Patch quality: 🧂 unranked krab
Result: blocked until real behavior proof is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P1] Add redacted terminal or live-output proof from a real after-revert Codex or SMS setup, avoiding private IPs, API keys, phone numbers, and non-public endpoints.
  • Restore current-main Codex first-party marketplace handling and non-curated session policy parsing, or document a maintainer-approved rollback with migration proof.
  • Preserve SMS runtime status fields so gateway health/readiness can see running configured SMS accounts.

Proof guidance:

  • [P1] Needs real behavior proof before merge: The PR body lists static checks and local source inspection only; it needs redacted terminal/live output from a real after-revert Codex or SMS setup, then the contributor should update the PR body to trigger re-review or ask a maintainer to comment @clawsweeper re-review.

Risk before merge

  • [P1] Merging as-is would invalidate current-main Codex configs and docs that use openai-bundled or openai-primary-runtime, dropping those plugin entries before inventory or activation.
  • [P1] Existing current-main Codex session bindings with bundled or primary-runtime plugin app policy context would stop parsing and lose per-plugin policy state.
  • [P1] SMS status snapshots would omit live runtime fields, so configured running SMS accounts can be evaluated as not-running by gateway health/readiness.
  • [P1] The PR body lists static checks only; it does not show a real after-revert Codex or SMS setup behaving correctly.

Maintainer options:

  1. Restore Current-Main Runtime Contracts (recommended)
    Restore the first-party Codex marketplace allowlist, non-curated session policy parsing, and SMS runtime status projection before this PR is considered mergeable.
  2. Accept An Explicit Rollback
    Maintainers can intentionally re-narrow Codex/SMS behavior, but the PR should document the config, session, and status fallout and include real proof that the chosen rollback is acceptable.
  3. Pause Or Close The Broad Revert
    If the goal is to address a narrower concern from the merged marketplace work, close or pause this revert and open a focused PR for that concern instead.

Next step before merge

  • [P1] The protected maintainer label plus compatibility, session-state, availability, and missing-proof blockers require human maintainer handling rather than an automated repair lane.

Security
Cleared: The diff does not add dependencies, downloaded code, secret handling, permissions, or package-resolution changes; the concrete blockers are functional compatibility, session-state, and availability regressions.

Review findings

  • [P1] Keep the first-party Codex marketplace allowlist — extensions/codex/src/app-server/config.ts:63
  • [P1] Preserve non-curated plugin app policy contexts — extensions/codex/src/app-server/session-binding.ts:260
  • [P2] Preserve SMS runtime fields in status snapshots — extensions/sms/src/channel.ts:259-267
Review details

Best possible solution:

Keep current-main first-party Codex marketplace support and SMS runtime status projection unless maintainers approve a targeted rollback with migration/docs/proof for the user-visible fallout.

Do we have a high-confidence way to reproduce the issue?

Yes. Source inspection of the PR head shows non-curated Codex marketplaces are filtered out and SMS runtime fields are omitted; I did not run live behavior because this was a read-only review.

Is this the best way to solve the issue?

No. A broad revert is not the best fix because current main matches upstream Codex marketplace names and preserves SMS health state; any real concern should be handled by a targeted rollback or policy change with upgrade proof.

Full review comments:

  • [P1] Keep the first-party Codex marketplace allowlist — extensions/codex/src/app-server/config.ts:63
    This narrows native Codex plugin config back to openai-curated only. Current main accepts openai-bundled and openai-primary-runtime, and the upstream Codex checkout names those first-party marketplaces, so existing current-main configs for chrome, computer-use, documents, etc. would be dropped before inventory or activation can see them.
    Confidence: 0.95
  • [P1] Preserve non-curated plugin app policy contexts — extensions/codex/src/app-server/session-binding.ts:260
    This parser now accepts only openai-curated policy context entries. Sessions saved on current main with bundled or primary-runtime plugin apps will read back without pluginAppPolicyContext, losing the per-plugin destructive-action and MCP server policy state used by later Codex thread/app handling.
    Confidence: 0.91
  • [P2] Preserve SMS runtime fields in status snapshots — extensions/sms/src/channel.ts:259-267
    The replacement SMS snapshot hook ignores the runtime argument and returns no running, connected, last error, or activity timestamps. Gateway status passes the live runtime snapshot into this hook, and health evaluation treats missing running as not-running, so a configured running SMS account can appear unhealthy or stopped.
    Confidence: 0.92

Overall correctness: patch is incorrect
Overall confidence: 0.94

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 7b82901e58d3.

Label changes

Label justifications:

  • P1: The PR would break current-main Codex plugin configuration/session behavior and SMS health reporting for real gateway users if merged.
  • merge-risk: 🚨 compatibility: The diff narrows a current-main user-facing Codex config enum and docs back to openai-curated-only, invalidating existing non-curated entries.
  • merge-risk: 🚨 session-state: The diff changes session-binding parsing so saved plugin app policy contexts for bundled or primary-runtime marketplaces are discarded.
  • merge-risk: 🚨 availability: The diff removes SMS runtime fields used by health/readiness, causing active configured SMS accounts to appear not-running.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🧂 unranked krab and patch quality is 🧂 unranked krab.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs real behavior proof before merge: The PR body lists static checks and local source inspection only; it needs redacted terminal/live output from a real after-revert Codex or SMS setup, then the contributor should update the PR body to trigger re-review or ask a maintainer to comment @clawsweeper re-review.
Evidence reviewed

PR surface:

Source -99, Tests -204, Docs -67. Total -370 across 22 files.

View PR surface stats
Area Files Added Removed Net
Source 8 64 163 -99
Tests 9 18 222 -204
Docs 5 19 86 -67
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 22 101 471 -370

What I checked:

  • Repository policy applied: Root and scoped repository policy were read fully; the Codex dependency gate and compatibility/session-state review rules directly affected this verdict. (AGENTS.md:1, 7b82901e58d3)
  • Current main accepts all first-party Codex marketplaces: Current main defines CODEX_PLUGINS_MARKETPLACE_NAMES with openai-curated, openai-bundled, and openai-primary-runtime, and resolveCodexPluginsPolicy keeps entries whose marketplaceName is in that allowlist. (extensions/codex/src/app-server/config.ts:70, 7b82901e58d3)
  • PR head narrows Codex config back to one marketplace: The PR head replaces the allowlist with a single CODEX_PLUGINS_MARKETPLACE_NAME constant and drops non-curated pluginPolicies before inventory or activation can see them. (extensions/codex/src/app-server/config.ts:63, 3595795e7e14)
  • Codex upstream names bundled and primary-runtime marketplaces: The required sibling Codex checkout shows openai-curated and openai-bundled constants, the CLI names openai-primary-runtime, and implicit system-root handling recognizes that primary-runtime marketplace path. (../codex/codex-rs/cli/src/plugin_cmd.rs:29, 0eb7e6d79b44)
  • PR head rejects saved non-curated plugin policy contexts: The PR head session-binding parser accepts only openai-curated in pluginAppPolicyContext entries, so bundled or primary-runtime policy context saved by current main reads back as undefined. (extensions/codex/src/app-server/session-binding.ts:260, 3595795e7e14)
  • Current main preserves SMS runtime fields for health: Current main's SMS snapshot helper carries running, connected, lastConnectedAt, lastError, lastInboundAt, and lastOutboundAt, while gateway health treats missing or false running as not-running. (extensions/sms/src/channel.ts:44, 7b82901e58d3)

Likely related people:

  • Vincent Koc: Current-main blame for the Codex allowlist and SMS status snapshot helper points to commit d31f4e2, which recently touched the central files now being reverted. (role: recent area contributor; confidence: medium; commits: d31f4e2d6235; files: extensions/codex/src/app-server/config.ts, extensions/sms/src/channel.ts)
  • yaanfpv: The linked merged PR that introduced the first-party Codex marketplace support is credited to this GitHub author in the provided GitHub context; the merge commit is the behavior this PR attempts to revert. (role: related fix PR author; confidence: medium; commits: 4f3d8a57ddd3; files: extensions/codex/src/app-server/config.ts, extensions/codex/src/app-server/plugin-inventory.ts, extensions/codex/src/app-server/session-binding.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d8ce81ab18

ℹ️ 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".

Comment on lines +259 to +267
buildAccountSnapshot: ({ account }) => {
const configured = isSmsAccountConfigured(account);
return {
accountId: account.accountId,
name: account.fromNumber || account.messagingServiceSid || "SMS",
enabled: account.enabled,
configured,
statusState: !account.enabled ? "disabled" : configured ? "configured" : "unconfigured",
};

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve SMS runtime fields in status snapshots

When an SMS account is configured and running, channels.status passes the live runtime snapshot into this hook, but the new implementation only reads account and returns no running, lastError, lastInboundAt, or lastOutboundAt fields. The gateway then evaluates that snapshot as not running (evaluateChannelHealth treats missing running as false), so SMS appears unhealthy/stopped even while the channel task is active; the removed helper immediately above this diff preserved those runtime fields.

Useful? React with 👍 / 👎.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P1 High-priority user-facing bug, regression, or broken workflow. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. labels Jun 3, 2026
@kevinslin
kevinslin force-pushed the codex/revert-82219 branch from d8ce81a to 3595795 Compare June 3, 2026 21:13
@kevinslin

Copy link
Copy Markdown
Contributor Author

Landing per maintainer request with the current runner-failure checks ignored.

Summary:

Verification:

  • CI run: https://github.com/openclaw/openclaw/actions/runs/26913381602
  • Green lanes include build-artifacts, check-lint, check-prod-types, check-test-types, check-dependencies, check-shrinkwrap, check-docs, and the majority of Node shards.
  • The three red checks are checks-node-agentic-plugin-sdk, check-additional-boundaries-bcd, and checks-node-agentic-gateway-core; their check-run annotations report that the self-hosted runner lost communication with the server, not a source/test assertion failure.
  • No local tests were run for this finalization pass; validation source is GitHub CI/log inspection.

@kevinslin
kevinslin merged commit fce002a into main Jun 3, 2026
156 of 159 checks passed
@kevinslin
kevinslin deleted the codex/revert-82219 branch June 3, 2026 22:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling channel: sms Channel integration: sms docs Improvements or additions to documentation extensions: codex gateway Gateway runtime maintainer Maintainer-authored PR merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. P1 High-priority user-facing bug, regression, or broken workflow. plugin: migrate-claude plugin: migrate-hermes rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. size: M status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant