Treat CloudBase MCP as a keep-alive stdio server#193
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed June 9, 2026, 11:41 PM ET / 03:41 UTC. Summary Reproducibility: no. high-confidence end-to-end reproduction is available from this review. Source inspection shows current main does not classify CloudBase as keep-alive by default, and maintainer comments describe partial live AUTH_PENDING behavior, but completed credential persistence has not been demonstrated. Review metrics: none identified. 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 detailsBest possible solution: Land the narrow allowlist change only after redacted real CloudBase device-code auth proof shows polling continues after AUTH_PENDING and credentials persist, while keeping explicit ephemeral config authoritative. Do we have a high-confidence way to reproduce the issue? No high-confidence end-to-end reproduction is available from this review. Source inspection shows current main does not classify CloudBase as keep-alive by default, and maintainer comments describe partial live AUTH_PENDING behavior, but completed credential persistence has not been demonstrated. Is this the best way to solve the issue? Unclear until live CloudBase authorization is proven. If that proof is added, the current approach is a narrow maintainable fix because it extends the existing lifecycle allowlist and leaves explicit ephemeral config on the config-aware path. AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against 3e27b64021c9. Label changesLabel changes:
Label justifications:
Evidence reviewedWhat 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
|
|
Maintainer-side local verification for current head
This confirms the unit-level lifecycle behavior on the PR head. It does not replace the requested real CloudBase device-code auth proof; that still requires a real CloudBase authorization flow showing the process remains alive after |
c4e6760 to
360f688
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 360f688f52
ℹ️ 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".
|
|
||
| const FORCE_EXIT_GRACE_MS = 50; | ||
| const DAEMON_FAST_PATH_SERVERS = new Set(['chrome-devtools', 'mobile-mcp', 'playwright']); | ||
| const DAEMON_FAST_PATH_SERVERS = new Set(['chrome-devtools', 'mobile-mcp', 'playwright', 'cloudbase']); |
There was a problem hiding this comment.
Respect CloudBase ephemeral overrides before fast-pathing
When a user names a server cloudbase but sets lifecycle: "ephemeral", this new fast-path entry routes mcporter call cloudbase.<tool> directly to the daemon before the config is loaded, so the explicit opt-out in resolveLifecycle is never consulted. This is specific to direct calls matching the server name in DAEMON_FAST_PATH_SERVERS; users would need an env disable to avoid the daemon even though the documented per-server override should be enough.
Useful? React with 👍 / 👎.
|
Maintainer fix pushed for the explicit lifecycle blocker. Change:
Verification on head
The remaining blocker is unchanged: real CloudBase device authorization must complete so credential persistence can be demonstrated. Prior live testing proved the real @clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
Best-effort live validation and maintainer decision:
Maintainer explicitly accepts the remaining credential-persistence uncertainty and the provider-specific keep-alive default. Explicit ephemeral configuration remains authoritative. |
|
Landed in Final proof:
Thanks @sevzq. |
Summary
@cloudbase/cloudbase-mcppackage invocations andcloudbase-mcpbinary invocationslifecycle: "ephemeral"overrides respectedContext
CloudBase MCP device-code auth returns
AUTH_PENDINGafter emitting the device challenge, then continues polling in the background so credentials can be persisted after the browser authorization succeeds. When CloudBase MCP is invoked as an ephemeral stdio server, that process exits immediately after returningAUTH_PENDING, so the polling loop is cut off before credentials can be written.Treating CloudBase MCP as keep-alive matches that stateful auth flow and lets the daemon keep the MCP process alive until device-code polling finishes.
Tests
pnpm exec vitest run tests/lifecycle.test.tspnpm format:checkpnpm typecheckpnpm lint:oxlintresolveLifecycle(...)for@cloudbase/cloudbase-mcp@latestreturns{ "mode": "keep-alive" }