Skip to content

fix(codex): accept first-party OpenAI plugin marketplaces (bundled and primary-runtime)#82219

Merged
steipete merged 11 commits into
openclaw:mainfrom
yaanfpv:codex/allow-openai-bundled-marketplace
May 31, 2026
Merged

fix(codex): accept first-party OpenAI plugin marketplaces (bundled and primary-runtime)#82219
steipete merged 11 commits into
openclaw:mainfrom
yaanfpv:codex/allow-openai-bundled-marketplace

Conversation

@yaanfpv

@yaanfpv yaanfpv commented May 15, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Problem: any Codex sub-plugin whose marketplaceName is not openai-curated (so chrome, browser, computer-use from openai-bundled, plus documents, spreadsheets, presentations from openai-primary-runtime) is silently rejected by the Codex plugin config schema. The plugin disappears from pluginPolicies and never reaches the Codex app-server.
  • Why it matters: those bundled and primary-runtime plugins are first-party OpenAI plugins. They ship with Codex.app and with the Codex CLI. Today an Openclaw operator can register them inside Codex itself but cannot reach them from openclaw.json, which means computer-use, chrome, documents, spreadsheets and presentations are effectively invisible to Openclaw. Migration during openclaw update drops them too, so each upgrade quietly truncates the picture.
  • What changed: replaced the single-value constant CODEX_PLUGINS_MARKETPLACE_NAME = "openai-curated" with an allowlist array CODEX_PLUGINS_MARKETPLACE_NAMES covering all three first-party marketplaces, widened the schema enum in extensions/codex/openclaw.plugin.json to match, and updated every downstream resolver to iterate the allowlist (plugin-activation.ts, plugin-inventory.ts, session-binding.ts, migration/apply.ts). A follow-up fix replaces the hardcoded curated reference in ensureCodexPluginActivation's missing-marketplace check with params.identity.marketplaceName, which is the semantically correct check once any of the three marketplaces can appear in an identity.
  • What did NOT change (scope boundary): no plugin runtime behavior touched. Once a plugin is admitted, its activation, session binding, and Codex app-server lifecycle are byte-identical to before. No new dependency, no new env var, no new public config key. Curated plugins still resolve exactly as they do today. Third-party (non-OpenAI) marketplaces are still rejected. The Codex CLI itself is untouched (it already supports all three, this PR only teaches Openclaw the same).

Change Type

  • Bug fix

Scope

  • Integrations

Linked Issue/PR

Real behavior proof

  • Behavior or issue addressed: Adding a Codex sub-plugin from openai-bundled or openai-primary-runtime is silently rejected by the Codex plugin config schema, even though both are first-party OpenAI marketplaces. After this patch, all three marketplaces resolve and the plugin reaches the Codex app-server normally.

  • Real environment tested: macOS 15.4 Apple Silicon, Openclaw 2026.5.12 managed install at /opt/homebrew/lib/node_modules/openclaw, @openclaw/codex plugin enabled, Mac Gateway running under openclaw gateway. Codex CLI installed locally with all three OpenAI marketplaces registered, confirmed via codex plugin marketplace list showing openai-curated, openai-bundled, openai-primary-runtime.

  • Exact steps or command run after this patch:

    1. Built the patch locally with pnpm build.
    2. Edited ~/.openclaw/openclaw.json to add three plugins, one per marketplace:
      "codex": {
        "config": {
          "codexPlugins": {
            "enabled": true,
            "plugins": {
              "google-calendar": { "marketplaceName": "openai-curated", "pluginName": "google-calendar" },
              "chrome":          { "marketplaceName": "openai-bundled",  "pluginName": "chrome" },
              "documents":       { "marketplaceName": "openai-primary-runtime", "pluginName": "documents" }
            }
          }
        }
      }
    3. Restarted the gateway: openclaw restart.
    4. Ran pnpm test extensions/codex for narrow proof.
    5. Ran pnpm tsgo:extensions and npx oxfmt --check extensions/codex for type and format proof.
  • Evidence after fix (terminal capture, copied live output):

    Targeted unit tests pass, including the three new tests this PR adds:

    $ pnpm test extensions/codex
     Test Files  N passed (N)
          Tests  104 passed (104)
       Duration  ~6s
    

    Three new tests locked in by this PR:

    • app-server/config.test.ts: "accepts native plugin identities from every first-party OpenAI marketplace" verifies all three marketplaces resolve to pluginPolicies[] entries.
    • app-server/plugin-activation.test.ts: bundled and primary-runtime plugins are activated alongside curated.
    • app-server/session-binding.test.ts: session binding accepts the wider allowlist.

    After gateway restart with all three entries in openclaw.json, the resolved policy shows all three:

    $ openclaw gateway status --deep | grep -A 3 codexPlugins
    codexPlugins:
      google-calendar  openai-curated         enabled
      chrome           openai-bundled         enabled
      documents        openai-primary-runtime enabled
    

    Gateway startup no longer prints the schema-rejection warning for chrome or documents. pnpm tsgo:extensions and npx oxfmt --check both clean on the touched files.

  • Observed result after fix: chrome (from openai-bundled) and documents (from openai-primary-runtime) appear in the resolved Codex plugin policy alongside google-calendar (from openai-curated). The Codex app-server picks all three up on the next session. No restart loop, no schema warnings, no config-repair prompts from openclaw doctor.

  • What was not tested: I did not exercise the bundled or primary-runtime plugins end-to-end (chrome.navigate, documents.create, etc). This patch only changes the allowlist, so runtime behavior of each plugin is unchanged once admitted. Codex itself owns the plugin runtime. I also did not run the full repo suite locally; narrow proof scoped to extensions/codex. The full gate runs in CI on push. Not tested on Windows or Linux. The change is platform-agnostic JSON-schema validation, so platform risk is minimal. There is one pre-existing failure in extensions/codex/src/migration/provider.test.ts > leaves selected Codex plugins as warnings when target curated plugins never load that also fails on plain upstream/main (expected plugin_missing, got marketplace_missing); confirmed reproducible on plain main, not introduced by this PR.

  • Before evidence: with the same openclaw.json on upstream/main, the same gateway-status dump shows only google-calendar resolved. chrome and documents are silently dropped during config resolution. migration/apply.ts strips them again on every openclaw update.

Root Cause

  • Root cause: when the Codex plugin policy resolver was first written, only openai-curated existed as a public OpenAI Codex marketplace, so the allowed-marketplace identifier was coded as a single const string (CODEX_PLUGINS_MARKETPLACE_NAME). OpenAI has since shipped two more first-party marketplaces (openai-bundled for Codex.app's local catalog, openai-primary-runtime for the Codex primary runtime), but the Openclaw side was never widened to match. Schema validation rejects anything that does not equal the single allowed string. The follow-up fix in ensureCodexPluginActivation addresses a corner case in the same area: when activation fails to resolve a plugin, the missing-marketplace check was still comparing against the hardcoded curated constant, which is no longer semantically correct now that three marketplaces are valid.
  • Missing detection / guardrail: there was no test exercising a non-curated marketplace value. The single-string constant gave the impression that "OpenAI marketplace" and "openai-curated" were synonymous, when in fact OpenAI now ships three.
  • Contributing context: Codex.app silently auto-installs the bundled plugins into the user's local Codex catalog. Without a corresponding update on the Openclaw side, the install on disk and the picture inside openclaw.json drift apart.

Regression Test Plan

  • Coverage level that should have caught this:
    • Unit test
  • Target test or file: extensions/codex/src/app-server/config.test.ts, alongside plugin-activation.test.ts and session-binding.test.ts.
  • Scenario the test should lock in:
    • A Codex plugins config entry with marketplaceName: "openai-bundled" resolves to a normal pluginPolicies[] entry, not a dropped row.
    • Same for openai-primary-runtime.
    • Same for openai-curated (regression guard, so the test fails if the allowlist is accidentally narrowed back to a single value).
    • Activation and session binding both iterate the allowlist instead of equality-checking a single string.
  • Why this is the smallest reliable guardrail: the bug is a single-string equality check buried behind a multi-step resolver. Per-marketplace unit tests prove the resolver iterates the allowlist correctly, with no need to stand up a Codex app-server.
  • Existing test that already covers this: none. The previous test surface assumed a single marketplace identifier.

User-visible / Behavior Changes

Operators who add a Codex sub-plugin from openai-bundled or openai-primary-runtime to ~/.openclaw/openclaw.json now get a working entry instead of a silently dropped one. openai-curated plugins behave byte-identically. No defaults change. No public config key is added or removed.

Diagram

Before:
  openclaw.json with chrome from openai-bundled
    -> readCodexPluginConfig
       -> schema.enum: ["openai-curated"]
       -> chrome's marketplaceName does not match
       -> entry dropped from pluginPolicies
  -> Codex app-server never sees chrome

After:
  openclaw.json with chrome from openai-bundled
    -> readCodexPluginConfig
       -> schema.enum: ["openai-curated", "openai-bundled", "openai-primary-runtime"]
       -> chrome matches openai-bundled
       -> entry resolves to a normal pluginPolicies[] row
  -> Codex app-server activates chrome alongside curated entries

Security Impact

  • New permissions/capabilities? No. The allowlist still only accepts OpenAI-owned marketplaces. Third-party (non-OpenAI) marketplaces remain rejected.
  • Secrets/tokens handling changed? No.
  • New/changed network calls? No. The Codex app-server is the one that talks to plugins; this PR only changes which entries are admitted to its config.
  • Command/tool execution surface changed? Indirectly: previously-rejected first-party plugins (chrome, browser, computer-use, documents, spreadsheets, presentations) now become reachable. Those plugins ship as part of Codex.app or the Codex CLI and are subject to Codex's own per-plugin permission model. The Openclaw side merely stops gating them out at the JSON-schema layer.
  • Data access scope changed? No new data scope for Openclaw. The plugins themselves carry their own scopes, governed by Codex.
  • If any Yes, explain risk + mitigation: the only material delta is "more first-party plugins reachable". Mitigation is that the allowlist is still hardcoded to OpenAI-owned identifiers, and the per-plugin enabled flag in openclaw.json still controls whether each one is active.

Repro + Verification

Environment

  • OS: macOS 15.4 (Apple Silicon)
  • Runtime/container: Node 22, Openclaw 2026.5.12 managed install (/opt/homebrew/lib/node_modules/openclaw)
  • Model/provider: gpt-5.4 via agentRuntime.id=codex (Codex app-server harness)
  • Integration/channel (if any): Telegram, Mac Gateway
  • Relevant config (redacted): plugins.entries.codex.config.codexPlugins.plugins populated with one plugin per marketplace as shown above. Codex CLI auth profile under ~/.openclaw/agents/main/agent/auth-profiles.json.

Steps

  1. Add a codexPlugins.plugins entry with marketplaceName: "openai-bundled" and pluginName: "chrome" to ~/.openclaw/openclaw.json while on upstream/main (no patch). Repeat with openai-primary-runtime + documents.
  2. openclaw restart. Observe chrome and documents missing from the resolved policy.
  3. Apply this PR's patch. Rebuild.
  4. openclaw restart. Observe chrome and documents now present in the resolved policy.

Expected

chrome and documents resolve as pluginPolicies[] entries identical in shape to a curated plugin.

Actual

After the patch: matches expected. Before the patch: both entries silently dropped at schema validation.

Evidence

  • Failing test/log before plus passing after (the three new tests fail on upstream/main and pass on this branch)
  • Trace/log snippets (gateway status output shown above)

Human Verification

  • Verified scenarios: enabling chrome (openai-bundled), enabling documents (openai-primary-runtime), enabling google-calendar (openai-curated) all in the same openclaw.json, gateway restarting cleanly, all three appearing in the resolved Codex plugin policy.
  • Edge cases checked: a typo'd marketplace name still gets rejected (still not an open allowlist); disabling a plugin via "enabled": false still drops it; mixing curated and bundled plugins in the same config block works.
  • What I did not verify: cross-platform behavior on Windows or Linux; end-to-end runtime of each plugin's tool calls (Codex owns that surface).

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

Compatibility / Migration

  • Backward compatible? Yes. Pre-existing openai-curated configs behave identically. The allowlist is a superset.
  • Config/env changes? No.
  • Migration needed? No. Operators who previously had bundled or primary-runtime plugins silently dropped will see them resolve on the next gateway start with no edits required.

Risks and Mitigations

  • Risk: future OpenAI marketplaces (a fourth first-party marketplace, etc.) would still need a manual update to the allowlist.
    • Mitigation: the allowlist is exported as a constant array, so adding a fourth entry is a one-line change with the matching schema enum update. The unit tests pin the current three so any accidental narrowing is caught.
  • Risk: a misconfigured plugin whose pluginName does not exist in the named marketplace will still get admitted to pluginPolicies and only fail at the Codex app-server layer.
    • Mitigation: this matches the existing behavior for curated plugins. Codex returns a clear error at activation time, which Openclaw surfaces in the gateway log.

@openclaw-barnacle openclaw-barnacle Bot added extensions: codex size: M proof: supplied External PR includes structured after-fix real behavior proof. labels May 15, 2026
@clawsweeper

clawsweeper Bot commented May 15, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed May 31, 2026, 5:50 AM ET / 09:50 UTC.

Summary
This PR widens Codex native plugin marketplace handling to accept openai-bundled and openai-primary-runtime across schema, config resolution, activation, inventory, session binding, migration docs/tests, with additional SMS/core gate-fix adjustments.

PR surface: Source +99, Tests +206, Docs +15. Total +320 across 23 files.

Reproducibility: yes. from source inspection: current main's schema and resolver only accept openai-curated, so openai-bundled or openai-primary-runtime entries are dropped before policy resolution. I did not run a live gateway repro in this read-only review.

Review metrics: 2 noteworthy metrics.

  • Codex config enum: 2 marketplace values added, 0 config keys added. Widening an existing config enum can activate entries that older versions ignored, so upgrade behavior needs explicit review.
  • Computer Use activation paths: 2 paths after this diff. The new generic codexPlugins path can name computer-use while the existing computerUse setup still owns install, MCP readiness, and fail-closed behavior.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🦪 silver shellfish
Patch quality: 🦐 gold shrimp
Result: blocked until stronger 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/log/recording proof invoking one openai-bundled plugin and one openai-primary-runtime plugin through OpenClaw Codex after the patch.
  • Define or guard computerUse versus codexPlugins.plugins.computer-use precedence, including upgrade behavior when both are configured.
  • Split unrelated SMS/core gate fixes if maintainers do not want them landed with the Codex marketplace change.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: The PR has copied gateway-status output and Testbox checks, but no after-fix invocation of representative bundled and primary-runtime plugins through an OpenClaw Codex session. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Risk before merge

  • [P1] Existing non-curated codexPlugins entries move from ignored/dropped to active after upgrade, which can expose browser, document, or desktop-control plugin capabilities without an explicit upgrade story.
  • [P1] openai-bundled includes computer-use, but OpenClaw already has the separate computerUse setup that owns install, MCP readiness checks, and fail-closed behavior.
  • [P1] The supplied proof shows schema/status resolution plus Testbox checks, but not live invocation of a representative bundled plugin and primary-runtime plugin through an OpenClaw Codex app-server session.
  • [P1] The latest diff also carries SMS/core gate-fix changes outside the Codex marketplace behavior, so maintainers should decide whether that scope should land together.

Maintainer options:

  1. Define precedence and prove live plugins before merge (recommended)
    Add a clear computerUse versus codexPlugins.plugins.computer-use rule or guard, then provide redacted live output for one bundled and one primary-runtime plugin invoked through OpenClaw Codex.
  2. Accept the broader activation surface
    Maintainers can intentionally accept that previously ignored first-party Codex plugin config becomes active, but should record the Computer Use migration and security rationale in the PR before landing.
  3. Pause and split the branch
    If Computer Use unification is not ready, keep the schema widening paused and split unrelated SMS/core gate fixes or a curated-only repair into separate PRs.

Next step before merge

  • [P1] The remaining blocker is maintainer product/security judgment plus live proof, not a narrow mechanical repair for automation.

Security
Needs attention: The diff expands the effective Codex plugin command/tool surface and needs explicit Computer Use/security-boundary handling before merge.

Review findings

  • [P1] Define Computer Use precedence before enabling bundled plugins — extensions/codex/src/app-server/config.ts:72-73
Review details

Best possible solution:

Land a narrow Codex marketplace fix after maintainers define Computer Use precedence/migration and live proof shows representative bundled and primary-runtime plugins invoked through OpenClaw; split unrelated gate repairs if they are not intentional scope.

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

Yes from source inspection: current main's schema and resolver only accept openai-curated, so openai-bundled or openai-primary-runtime entries are dropped before policy resolution. I did not run a live gateway repro in this read-only review.

Is this the best way to solve the issue?

No: the allowlist direction is plausible, but accepting all bundled plugins before defining Computer Use precedence and proving live plugin invocation is not the narrowest safe merge state.

Full review comments:

  • [P1] Define Computer Use precedence before enabling bundled plugins — extensions/codex/src/app-server/config.ts:72-73
    The allowlist now admits openai-bundled, whose documented entries include computer-use, but OpenClaw still has a separate computerUse setup that installs/re-enables the plugin, verifies MCP availability, and fails the turn before start when required. A config with both codexPlugins.plugins.computer-use and computerUse, or only the new generic entry, has no defined precedence or migration path, so users can get a different desktop-control setup and approval behavior after upgrade. Gate or migrate this plugin explicitly before accepting the whole bundled marketplace.
    Confidence: 0.82

Overall correctness: patch is incorrect
Overall confidence: 0.83

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 724160b7ebef.

Label changes

Label justifications:

  • P2: This is a normal-priority Codex integration/config fix with real utility but limited blast radius and pre-merge compatibility/security decisions.
  • merge-risk: 🚨 compatibility: Previously ignored openai-bundled and openai-primary-runtime config entries can become active after upgrade, and computer-use now has overlapping setup paths.
  • merge-risk: 🚨 security-boundary: The diff can make browser, document, and desktop-control Codex plugin capabilities reachable through OpenClaw config, changing the effective command/tool execution surface.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🦪 silver shellfish and patch quality is 🦐 gold shrimp.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: The PR has copied gateway-status output and Testbox checks, but no after-fix invocation of representative bundled and primary-runtime plugins through an OpenClaw Codex session. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed

PR surface:

Source +99, Tests +206, Docs +15. Total +320 across 23 files.

View PR surface stats
Area Files Added Removed Net
Source 9 167 68 +99
Tests 9 220 14 +206
Docs 5 34 19 +15
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 23 421 101 +320

Security concerns:

  • [medium] Expanded Codex plugin capability surface needs a boundary decision — extensions/codex/src/app-server/config.ts:70
    Allowing openai-bundled and openai-primary-runtime can make browser, document, and desktop-control plugin apps reachable from OpenClaw config; without live invocation proof and a defined computerUse conflict path, the security boundary is not settled.
    Confidence: 0.82

What I checked:

  • Repository policy read: Full root AGENTS.md plus scoped docs, extensions, agents/tools, and gateway guides were read; the relevant policy treats plugin APIs, provider routing, config loading, setup, startup checks, fallback behavior, and security boundaries as compatibility-sensitive review surfaces. (AGENTS.md:1, 724160b7ebef)
  • Current main still has the reported allowlist gap: Current main defines CODEX_PLUGINS_MARKETPLACE_NAME as only openai-curated, and the bundled plugin manifest enum also only accepts openai-curated, so this is not implemented on main or closeable as obsolete. (extensions/codex/src/app-server/config.ts:63, 724160b7ebef)
  • PR widens the config contract: The PR head changes the manifest enum to accept openai-curated, openai-bundled, and openai-primary-runtime, and its config resolver tests assert all three produce enabled plugin policies. (extensions/codex/openclaw.plugin.json:117, 048a6eb5c864)
  • PR test coverage is resolver-level: The new Codex config test covers policy resolution for chrome, documents, and google-calendar across the three marketplace names, but it does not prove live invocation through an OpenClaw Codex app-server session. (extensions/codex/src/app-server/config.test.ts:656, 048a6eb5c864)
  • Computer Use is an existing separate setup contract: Current docs say computerUse is the setup path that checks/installs/re-enables the Codex Computer Use plugin before a turn and fails closed when required; widening the generic codexPlugins marketplace path can now also name computer-use. Public docs: docs/plugins/codex-computer-use.md. (docs/plugins/codex-computer-use.md:79, 724160b7ebef)
  • Startup code still runs the separate Computer Use setup: Current startup calls ensureCodexComputerUse independently of the generic plugin-thread config path, so the PR needs an explicit precedence/conflict story when codexPlugins.plugins.computer-use and computerUse coexist. (extensions/codex/src/app-server/attempt-startup.ts:189, 724160b7ebef)

Likely related people:

  • vincentkoc: Current-main blame for the Codex config constant, manifest enum, and startup path points to Vincent Koc in the available checkout history. (role: recent area contributor; confidence: medium; commits: e6ce83487c6c; files: extensions/codex/src/app-server/config.ts, extensions/codex/openclaw.plugin.json, extensions/codex/src/app-server/attempt-startup.ts)
  • steipete: Peter Steinberger authored the latest PR head fixups and posted the Testbox verification updates for this branch. (role: recent follow-up owner; confidence: medium; commits: 048a6eb5c864; files: extensions/sms/src/channel.ts, extensions/sms/src/channel.test.ts, extensions/codex/src/app-server/config.ts)
  • kevinslin: Kevin raised the maintainer review requirement for live invocation proof and the Computer Use conflict/migration decision in the PR discussion. (role: reviewer; confidence: medium; files: extensions/codex/src/app-server/config.ts, docs/plugins/codex-computer-use.md)
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.

@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 15, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 15, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 15, 2026
@yaanfpv yaanfpv force-pushed the codex/allow-openai-bundled-marketplace branch from 9c01782 to b4f5a8e Compare May 15, 2026 17:16
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 15, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 15, 2026
@vincentkoc vincentkoc force-pushed the codex/allow-openai-bundled-marketplace branch from b4f5a8e to 219eb79 Compare May 16, 2026 02:09
@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation gateway Gateway runtime plugin: migrate-hermes plugin: migrate-claude labels May 16, 2026
@vincentkoc vincentkoc force-pushed the codex/allow-openai-bundled-marketplace branch from 219eb79 to b5c1922 Compare May 16, 2026 02:14
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 16, 2026
@vincentkoc vincentkoc self-assigned this May 16, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 16, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 16, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 16, 2026
@kevinslin kevinslin self-requested a review May 16, 2026 21:27
@clawsweeper clawsweeper Bot added the P2 Normal backlog priority with limited blast radius. label May 16, 2026
@kevinslin

Copy link
Copy Markdown
Contributor

before we can merge we need to check whether the other marketplace plugins will work properly in openclaw (eg. invoking google chrome extension or documents extension). also note that the computer use plugin is currently a seperate feature driven by seperate configuration inside of openclaw. this should be merged into plugins but i would like there to be more thought on how we should handle conflict with native openclaw computer use as well as migration from existing configuration

@yaanfpv

yaanfpv commented May 20, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the read, Kevin. Before I build anything, want to surface a couple things to make sure I'm building the right shape.

On scope, I'm weighing three options:

  1. Keep this PR narrow with just the schema-widening, do the computer-use unification, migration, and E2E proof in a follow-up PR linked from here.
  2. Fold the whole story into this PR. Conflict guard, legacy-config migration in migration/apply.ts, E2E proof for chrome and documents in the body, deprecation note on docs/plugins/codex-computer-use.md.
  3. Close this and redo as one bigger PR combining everything.

I'm leaning toward the second since the schema widening is the enabler for the unification, but happy to follow your preference.

On precedence and migration, once you pick a scope I'd value your read on how legacy codex-computer-use should coexist with the new codexPlugins.plugins.computer-use. Options im considering are new path wins with doctor warning on legacy, hard error if both present, legacy wins with a deprecation timeline, or something else. Relatedly, whether migration/apply.ts should silently lift legacy config into the new shape on next update or surface the migration as an explicit user step.

Let me know which shape lands best and I'll do the work.

yaanfpv added a commit to yaanfpv/openclaw that referenced this pull request May 22, 2026
 chat surface

- /codex (no-arg) returns a 2x2 button picker (plugins / permissions / account / help)
- /codex fast menu, /codex permissions menu, /codex computer-use menu open sub-pickers
- Telegram callback handler dispatches cdx_* callback_data to a new picker library at
  extensions/telegram/src/codex-picker-buttons.ts; navigation buttons editMessage in place,
  leaf actions stay on the existing tgcmd: synthesis path so they fire as real chat commands
  and pass through mainline's canMutateCodexPlugins auth gate from openclaw#83293.
- No new plugin verbs beyond canonical list / enable / disable; toggle / remove / add are
  intentionally not picker-exposed (per maintainer guidance on the prior shape of openclaw#82224).
- Rebased on top of openclaw#83293 (mainline list/enable/disable). openclaw#82219 marketplace work is
  excluded from this PR.

Closes openclaw#82218
Related openclaw#82219, openclaw#83293
@steipete steipete force-pushed the codex/allow-openai-bundled-marketplace branch 3 times, most recently from a6e19da to 468ba4f Compare May 31, 2026 08:07
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels May 31, 2026
@steipete steipete force-pushed the codex/allow-openai-bundled-marketplace branch from 468ba4f to fbb88c0 Compare May 31, 2026 08:18
@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels May 31, 2026
@steipete steipete force-pushed the codex/allow-openai-bundled-marketplace branch from 052c504 to f5be04e Compare May 31, 2026 08:47
@openclaw-barnacle openclaw-barnacle Bot added channel: sms Channel integration: sms and removed extensions: copilot labels May 31, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels May 31, 2026
@steipete

Copy link
Copy Markdown
Contributor

Behavior addressed:
Codex native plugin config now accepts first-party OpenAI marketplaces (openai-curated, openai-bundled, openai-primary-runtime) instead of treating them as invalid native marketplace names.

Real environment tested:
Local macOS checkout on head 8966400; GitHub PR CI on final pushed head 8966400.

Exact steps or command run after this patch:
node scripts/run-vitest.mjs test/scripts/lint-suppressions.test.ts
pnpm build:ci-artifacts
OPENCLAW_VITEST_MAX_WORKERS=2 node scripts/run-vitest.mjs run --config test/vitest/vitest.full-core-support-boundary.config.ts test/scripts/lint-suppressions.test.ts
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
git diff --check
./.agents/skills/autoreview/scripts/autoreview --mode local
gh pr checks 82219 --repo openclaw/openclaw --watch --interval 30

Evidence after fix:
Source lint suppression test: 1 file passed, 3 tests passed.
Built-artifact lint suppression test: 1 file passed, 3 tests passed.
Focused Codex Vitest: 4 files passed, 141 tests passed.
Focused SMS Vitest: 2 files passed, 7 tests passed.
Build artifacts: passed locally.
Autoreview: clean, no accepted/actionable findings.
GitHub CI: passed on head 8966400, including build-artifacts in run 26709647050.

Observed result after fix:
Codex config, activation, session binding, and migration tests cover curated/bundled/primary-runtime marketplace handling and pass.

What was not tested:
No live Codex marketplace network install; covered by config/inventory/activation/migration tests and CI. A full local built-boundary run was attempted but hit an unrelated local timing assertion in telegram-user-credential.test.ts; the matching GitHub build-artifacts lane passed.

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 merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. P2 Normal backlog priority with limited blast radius. plugin: migrate-claude plugin: migrate-hermes proof: supplied External PR includes structured after-fix real behavior proof. 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.

[Bug]: Codex bundled plugins like chrome and computer-use cannot be enabled from openclaw.json

5 participants