-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
browser.profiles.*.cdpUrl does not support SecretRef interpolation #78337
Copy link
Copy link
Open
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.staleMarked as stale due to inactivityMarked as stale due to inactivity
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.staleMarked as stale due to inactivityMarked as stale due to inactivity
Type
Fields
Priority
None yet
Summary
browser.profiles.*.cdpUrlis the documented way to attach to a remote CDP service like Browserbase or Browserless, and the docs explicitly say "treat remote CDP URLs/tokens as secrets" (docs/tools/browser.md§Security). However, this field is not on the supported SecretRef surface, and the runtime reads the URL raw with no interpolation pass. The consequence is that the API key must live in cleartext insideopenclaw.json.This is a quiet trap: the field accepts arbitrary strings, the SecretRef resolver can be configured correctly, the WebSocket library would accept the URL — but the gateway routes the literal placeholder string to the remote service, which then fails with an opaque "not reachable" error.
Repro
browser.profiles.browserbase.cdpUrl:wss://connect.browserbase.com?apiKey={{SECRET:onepassword_browserbase}}wss://connect.browserbase.com?apiKey=${secret:onepassword_browserbase}string.profile=browserbase. Connection fails because the literal interpolation token is sent as the API key.cdpUrlworks (and is the only path that does).Source evidence
dist/config-qEt9W89m.js:docs/reference/secretref-credential-surface.md"Supported credentials" section does not listbrowser.profiles.*.cdpUrl. Critically, the omission is silent — there is no entry under "Unsupported credentials" either.Why this matters
Today's debugging took ~30 minutes before reading the dist source revealed
resolveProfilereads the URL raw. The user had to fall back to inlining the resolved API key intoopenclaw.json, which the docs themselves discourage ("avoid embedding long-lived tokens directly in config files" —docs/tools/browser.md§Security).Existing related issues:
cdpUrl, soconfig.getdoesn't leak the key. Good. But the file at rest still does.Suggested fix
Two options, in order of preference:
Option 1 (preferred): Add SecretRef interpolation to
cdpUrlAdd a token-replacement pass at profile resolve time, expanding
${secret:<provider>}placeholders against the resolved secrets map. This matches user expectation, the docs' security guidance, and how other credential-bearing fields already work.Option 2 (doc-only fallback): Document the exclusion explicitly
Add
browser.profiles.*.cdpUrlto the "Unsupported credentials" list indocs/reference/secretref-credential-surface.md, and add a short note indocs/tools/browser.md§Browserbase saying SecretRef interpolation is not supported and the resolved key must be inlined.Option 2 is a doc-only fix and unblocks users immediately; Option 1 is the correct long-term answer.
Environment
325df3e)