Reference
Errors and Troubleshooting
OpenSteer errors are split between protocol errors, high-level runtime errors, and cloud control-plane error codes.
Errors and Troubleshooting
OpenSteer has three error layers you will actually run into: protocol errors, high-level SDK or CLI runtime errors, and cloud control-plane errors.
Protocol errors
The published protocol codes are:
invalid-request
invalid-argument
invalid-ref
unsupported-version
unsupported-operation
unsupported-capability
not-found
stale-node-ref
session-closed
page-closed
frame-detached
timeout
navigation-failed
permission-denied
conflict
profile-unavailable
auth-failure
auth-recovery-failed
browser-required
rate-limited
operation-failed
internal
SDK and transport layers can surface these as OpensteerProtocolError.
High-level runtime errors
These messages cover the main migration and setup failures:
Specify exactly one of element, selector, or persist.
waitForPage timed out
route() is not available for this session runtime.
interceptScript() is not available for this session runtime.
browser.* helpers are only available in local mode.
browser.clone() requires a persistent workspace browser.
browser.reset() requires a persistent workspace browser.
browser.delete() requires a persistent workspace browser.
provider=cloud requires OPENSTEER_API_KEY or provider.apiKey.
provider=cloud requires OPENSTEER_BASE_URL or provider.baseUrl.
record with provider=cloud requires OPENSTEER_CLOUD_APP_BASE_URL or "--cloud-app-base-url".
Cloud mode does not support browser.mode="attach".
record does not support browser.mode="attach".
record requires engine=playwright.
record requires a headed browser. Remove "--headless true".
ABP is not supported for provider=cloud. Cloud provider currently requires Playwright.
Saved-network operations require Node's built-in SQLite support. Use a Node runtime with node:sqlite enabled.
Cloud control-plane codes
The published cloud codes include:
CLOUD_AUTH_FAILED
CLOUD_SESSION_NOT_FOUND
CLOUD_ARTIFACT_NOT_FOUND
CLOUD_SESSION_CLOSED
CLOUD_UNSUPPORTED_METHOD
CLOUD_INVALID_REQUEST
CLOUD_MODEL_NOT_ALLOWED
CLOUD_ACTION_FAILED
CLOUD_CAPACITY_EXHAUSTED
CLOUD_RUNTIME_UNAVAILABLE
CLOUD_RUNTIME_MISMATCH
CLOUD_SESSION_STALE
CLOUD_CONTROL_PLANE_ERROR
CLOUD_CONTRACT_MISMATCH
CLOUD_PROXY_UNAVAILABLE
CLOUD_PROXY_REQUIRED
CLOUD_BILLING_LIMIT_REACHED
CLOUD_PLAN_RESTRICTED
CLOUD_RATE_LIMITED
CLOUD_BROWSER_PROFILE_NOT_FOUND
CLOUD_BROWSER_PROFILE_BUSY
CLOUD_BROWSER_PROFILE_DISABLED
CLOUD_BROWSER_PROFILE_NOT_READY
CLOUD_BROWSER_PROFILE_PROXY_UNAVAILABLE
CLOUD_BROWSER_PROFILE_SYNC_FAILED
CLOUD_INTERNAL
Fast troubleshooting
DOM actions fail
- Re-run
snapshot actionand use fresh counters. - Make sure you are not mixing up
element,selector, andpersist. - If you intended a saved target, use
persistthrough the SDK instead of reusing an old element number.
Network inspection is empty
- Confirm you actually captured traffic with
captureNetwork. - Query the same workspace that created the capture.
- If you are using saved-network features locally, make sure the Node runtime has
node:sqlite. - In managed cloud mode, raw discovery records are session-scoped scratch data. Inspect or promote what you need before the runtime goes away. Local-cloud development keeps that history in the local workspace.
Recording fails
recordonly supports the Playwright engine.recordrequires a headed browser.recorddoes not support attach mode.record --provider cloudalso needsOPENSTEER_CLOUD_APP_BASE_URLor--cloud-app-base-url.
Instrumentation helpers fail
route()andinterceptScript()only work on runtimes that expose instrumentation.- If you see the runtime-availability error, switch to a local or cloud Playwright session instead of ABP or an unsupported attachment flow.
Cloud mode fails immediately
- Verify
OPENSTEER_API_KEY. - Verify
OPENSTEER_BASE_URL. - Verify
OPENSTEER_CLOUD_APP_BASE_URLif you are using cloud recording. - Do not use ABP in cloud mode.
- Do not use attach mode in cloud mode.
Browser helpers fail
opensteer.browser.status(), clone(), reset(), and delete() are local-only. clone(), reset(), and delete() also require a persistent workspace browser.
