stablyai/orca · warning · RuntimeClientError
accessibility_error
accessibility_error
Error message
computer sidecar queue was invalidated; retry the computer-use request
What it means
ComputerSidecarProcess serializes calls through queueTail and snapshots queueGeneration when enqueueing. shutdown(), handleExit, handleError, and failActiveChild all bump queueGeneration. When a queued request wakes and its captured generation no longer matches, it throws 'accessibility_error' ('computer sidecar queue was invalidated; retry the computer-use request') instead of dispatching onto a dead/replaced child.
Source
Thrown at src/main/computer/sidecar-client.ts:132
return null
}
}
class ComputerSidecarProcess {
private child: ChildProcess | null = null
private childListenerCleanup: (() => void) | null = null
private nextId = 1
private pending = new Map<number, PendingRequest>()
private queueTail: Promise<void> | null = null
private queueGeneration = 0
constructor(private readonly entryPath: string) {}
call(method: ComputerSidecarMethod, params: unknown): Promise<unknown> {
const generation = this.queueGeneration
const run = () => {
if (generation !== this.queueGeneration) {
throw new RuntimeClientError(
'accessibility_error',
'computer sidecar queue was invalidated; retry the computer-use request'
)
}
return this.send(method, params)
}
const result = this.queueTail ? this.queueTail.then(run, run) : run()
const tail = result.then(
() => undefined,
() => undefined
)
this.queueTail = tail
void tail.finally(() => {
if (this.queueTail === tail) {
this.queueTail = null
}
})
return resultView on GitHub (pinned to 1136503c6a)
Solutions
- Retry the computer-use request — the next ensureStarted forks a fresh child.
- Inspect the sidecar child's stderr/stdout for the crash root cause if retries keep failing.
- If the crash is reproducible for a specific action, validate params (e.g. pasteText) before enqueueing via the public callComputerSidecar* wrappers.
Defensive patterns
Strategy: retry
Type guard
import { RuntimeClientError } from './runtime-client-error'
function isSidecarQueueInvalidated(e: unknown): e is RuntimeClientError {
return (
e instanceof RuntimeClientError &&
e.code === 'accessibility_error' &&
/queue was invalidated/.test(e.message)
)
} Try / catch
try {
await callComputerSidecarAction('click', params)
} catch (e) {
if (isSidecarQueueInvalidated(e)) {
// queue was bumped because the child died; retry — ensureStarted forks fresh
} else throw e
} Prevention
- Wrap sidecar calls in a bounded retry for transient queue invalidation.
- Capture the forked child's stderr/stdout to diagnose recurring crashes.
- Validate params (e.g. pasteText) via the public wrappers before enqueueing.
When it happens
Trigger: Sidecar IPC child died (exit/error) or was explicitly shut down while one or more computer-use calls were queued behind an in-flight request; the next caller catches this rather than a raw IPC error.
Common situations: The sidecar child crashed mid-action and N requests were queued; an idle-shutdown or test reset killed the child; OOM or a native crash inside the forked process between two queued sends.
Related errors
- invalid_argument
- {action} is not a valid secondary action
- element value is not settable
- accessibility_error
- accessibility_error
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/fca8c5d0a2ea51fe.
Report an issue: GitHub.