stablyai/orca · error · RuntimeClientError
accessibility_error
accessibility_error
Error message
desktop provider returned invalid JSON: ${error instanceof Error ? error.message : String(error)} What it means
callBridge writes the request to a temp file, execs the desktop provider script, and parses stdout as JSON. If JSON.parse fails, it throws accessibility_error with the parse failure detail. This signals the provider script crashed or emitted non-JSON output (a stack trace, log lines, or a different format).
Source
Thrown at src/main/computer/desktop-script-provider-client.ts:215
if (!capabilities.supports.actions[actionKey]) {
throw new RuntimeClientError(
'unsupported_capability',
`${capabilities.provider} does not support actions.${actionKey}`
)
}
}
private async callBridge(request: BridgeRequest): Promise<BridgeResponse> {
const operationDirectory = await mkdtemp(join(tmpdir(), 'orca-computer-use-'))
const operationPath = join(operationDirectory, 'operation.json')
try {
await writeFile(operationPath, JSON.stringify(request), { encoding: 'utf8', mode: 0o600 })
const { stdout, stderr } = await execBridge(this.platform, this.scriptPath, operationPath)
let response: BridgeResponse
try {
response = JSON.parse(stdout) as BridgeResponse
} catch (error) {
throw new RuntimeClientError(
'accessibility_error',
`desktop provider returned invalid JSON: ${error instanceof Error ? error.message : String(error)}`
)
}
if (!response.ok) {
throw mapBridgeError(response.error ?? stderr)
}
return response
} finally {
await rm(operationDirectory, { force: true, recursive: true })
}
}
private async readCapabilities(): Promise<ComputerProviderCapabilities> {
if (this.providerCapabilities) {
return this.providerCapabilities
}
const response = await this.callBridge({ tool: 'handshake' })View on GitHub (pinned to 1136503c6a)
Solutions
- Run the provider script manually with a sample operation.json to inspect its stdout.
- Rebuild or reinstall the desktop provider script.
- Inspect the script's stderr and exit code for the underlying crash.
- Ensure the script prints only JSON to stdout (redirect logs to stderr).
Defensive patterns
Strategy: fallback
Try / catch
try {
return await client.action(method, params)
} catch (err) {
if (err instanceof RuntimeClientError && err.code === 'accessibility_error' && /invalid JSON/.test(err.message)) {
// log the script path, surface a provider-repair instruction; do not retry unchanged
}
throw err
} Prevention
- Verify the provider script path resolves and is executable.
- Smoke-test the script's handshake output on startup.
- Keep client and provider script versions in sync.
When it happens
Trigger: Provider script exits with a Python/Node traceback printed to stdout; script writes log lines before the JSON; the script binary is missing or crashes on launch; an incompatible script version outputs a different schema.
Common situations: Provider script not built or installed correctly; runtime error inside the script; stderr/stdout mixing; client and provider script versions out of sync.
Understand the failure class
- Parsing and encoding errors: unexpected token, malformed input — why parsers reject input and how to find the real culprit.
Related errors
- accessibility_error
- ${commandLabel} ${args.join(' ')} ok=false: ${JSON.stringify
- Failed to load ${path.basename(jsonPath)}: ${error.message}
- [verify-packaged-plugin-resources] invalid ${label} at ${pat
- [verify-skills-cli-runtime] ${label} emitted invalid JSON:\n
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/1578b663d581da87.
Report an issue: GitHub.