Skip to content

Scope the Codex plugin probe to the 37signals marketplace - #995

Merged
robzolkos merged 2 commits into
mainfrom
fix-codex-probe-remote-marketplace
Nov 1, 2026
Merged

robzolkos merged 2 commits into
mainfrom
fix-codex-probe-remote-marketplace

Conversation

@robzolkos

@robzolkos robzolkos commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

Why

On a new machine with Codex signed in, basecamp setup codex installs the plugin and then reports "Cannot query Codex plugins". basecamp doctor reports the same thing every time it runs afterward (card). The probe runs codex plugin list --available --json. When Codex is signed in, that command first fetches OpenAI's remote plugin catalog, which takes about 35 seconds on a cold cache. Our 5 second deadline stops Codex before it saves that catalog, so the cache never warms and every later probe times out too.

What changed

  • The probe asks for the 37signals marketplace only (--marketplace 37signals). Codex skips the remote catalog whenever --marketplace names a local marketplace (source).
  • The hint in doctor shows the same command.
  • The test stub of Codex answers only the scoped listing, like a signed-in Codex does when the deadline expires.

Scope

  • Covers setup verification, the doctor checks and the legacy-ID check. All three share one probe.
  • --marketplace has been on codex plugin list since before --available existed, so any Codex that ran the old probe also runs this one.

Verification

  • On a fresh HOME with Codex signed in and nothing cached: on main, basecamp setup codex fails after 18s with "Cannot query Codex plugins", and doctor fails both Codex checks. On this branch, setup succeeds in 3s, and doctor shows "Installed and enabled" and "Up to date (0.22.0)".
  • Before setup, doctor on this branch still reports "Plugin not installed". Codex returns empty lists for a marketplace that has not been added.
  • The first commit adds the stubbed tests and fails with the error from the card. The second commit makes them pass. bin/ci passes.

Summary by cubic

Fixes the Codex plugin probe timing out on machines with Codex signed in by scoping the query to the 37signals marketplace.

The probe previously ran codex plugin list --available --json, which fetches OpenAI's remote plugin catalog (~35s on a cold cache) and exceeds the 5s deadline, so setup and doctor always failed with "Cannot query Codex plugins". Now the probe passes --marketplace 37signals, which skips the remote catalog and returns in milliseconds. The failure hint shows the same scoped command, and the test stub now answers only the scoped listing.

Written for commit cc8181f. Summary will update on new commits.

View guided diff Turn on auto-fix

A signed-in Codex answers `plugin list --available --json` only after it
fetches the remote openai-curated catalog, which on a cold cache takes
about 35 seconds. The Codex stub now answers only the listing scoped to
the 37signals marketplace, and these tests fail the way a new machine
does: setup installs the plugin, then reports "Cannot query Codex
plugins".
On a signed-in Codex, `codex plugin list --available --json` first
fetches the remote openai-curated catalog: about 35 seconds and 10,000+
plugins on a cold cache. The probe's 5 second deadline killed it before
Codex wrote that cache, so setup verification and doctor failed with
"Cannot query Codex plugins" on every run, even though the plugin had
installed. Asking for the 37signals marketplace alone answers in tens of
milliseconds and returns both plugin IDs the checks read.

`--marketplace` has been on `codex plugin list` since before
`--available`, so every Codex that ran the old probe runs this one.
Copilot AI balanced review requested due to automatic review settings November 1, 2026 16:49
@robzolkos
robzolkos requested a review from a team as a code owner November 1, 2026 16:49
@github-actions github-actions Bot added commands CLI command implementations tests Tests (unit and e2e) labels Nov 1, 2026

@cubic-dev-ai cubic-dev-ai 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.

No issues found across 4 files

Tip: Get a Slack DM when cubic finishes reviewing your PRs. Connect Slack

View guided diff | Turn on auto-fix | Re-trigger cubic

Copilot AI 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.

🟢 Approved

No active review issues are reported for the marketplace-scoped Codex probe change.

No open issues 🎉

What changed in this PR

Scopes the shared Codex plugin probe to the 37signals marketplace, avoiding remote catalog fetches that can exceed the timeout during setup and doctor checks.

Changes:

  • Adds --marketplace 37signals to the probe and diagnostic hints.
  • Updates test assertions and the Codex stub to require the scoped command.

[!TIP]
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.

File Description
internal/​harness/​codex.go Scopes the plugin query and updates failure hints.
internal/​harness/​codex_test.go Verifies scoped query arguments and hints.
internal/​commands/​wizard_codex_test.go Updates setup expectations and the Codex stub.
internal/​commands/​doctor_test.go Verifies doctor makes one scoped query.

Review effort: Balanced

@robzolkos
robzolkos merged commit d953987 into main Nov 1, 2026
32 checks passed
@robzolkos
robzolkos deleted the fix-codex-probe-remote-marketplace branch November 1, 2026 16:58
@robzolkos robzolkos mentioned this pull request Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commands CLI command implementations tests Tests (unit and e2e)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants