stablyai/orca · error · RuntimeClientError

accessibility_error

accessibility_error

Error message

Orca Computer Use.app was not found

What it means

Thrown at the top of MacOSNativeProviderClient.send on every non-handshake call when resolveMacOSComputerUseExecutablePath() returns null — i.e. the .app exists but its Contents/MacOS/orca-computer-use-macos binary is missing, or the .app itself is gone. The provider cannot start a socket transport without the executable, so the call fails fast under code 'accessibility_error'.

Source

Thrown at src/main/computer/macos-native-provider-client.ts:99

      clearTimeout(pending.timer)
      pending.reject(
        new RuntimeClientError('accessibility_error', 'native macOS provider shut down')
      )
      this.pending.delete(id)
    }
    this.cleanupSocketDirectory()
  }
  private async call(method: NativeMethod, params: unknown): Promise<unknown> {
    if (method !== 'handshake') {
      await this.ensureCompatible()
    }
    return await this.send(method, params)
  }
  private async send(method: NativeMethod, params: unknown): Promise<unknown> {
    const id = this.nextId++
    const helperExecutablePath = resolveMacOSComputerUseExecutablePath()
    if (!helperExecutablePath) {
      throw new RuntimeClientError('accessibility_error', 'Orca Computer Use.app was not found')
    }
    const transport = await this.ensureSocketStarted(helperExecutablePath)
    const token = this.socketToken
    const line = `${JSON.stringify({ id, method, params, token })}\n`
    const result = new Promise<unknown>((resolve, reject) => {
      const timer = setTimeout(() => {
        this.pending.delete(id)
        this.shutdown()
        reject(
          new RuntimeClientError('action_timeout', `native macOS provider ${method} timed out`)
        )
      }, REQUEST_TIMEOUT_MS)

      this.pending.set(id, { resolve, reject, timer })
    })
    try {
      await writeNativeProviderLine(transport, line)
    } catch (error) {

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Rebuild the native helper (`pnpm build:computer-macos`) to restore Contents/MacOS/orca-computer-use-macos.
  2. Inspect the resolved .app: `ls -la 'Orca Computer Use.app/Contents/MacOS/'` — the executable must exist and be runnable.
  3. If using ORCA_COMPUTER_MACOS_HELPER_APP_PATH, point it at a complete .app, not a partial tree.
  4. Clear quarantine attributes if Gatekeeper stripped the binary: `xattr -dr com.apple.quarantine 'Orca Computer Use.app'`.

Example fix

// before: stale .app missing the inner executable
await client.snapshot({})

// after: ensure the executable is present before any provider call
const execPath = resolveMacOSComputerUseExecutablePath()
if (!execPath) {
  // surface a setup hint, do not call the provider
}
await client.snapshot({})
Defensive patterns

Strategy: validation

Validate before calling

import { resolveMacOSComputerUseExecutablePath } from './macos-native-provider-paths'

function nativeProviderExecutableAvailable(): boolean {
  return process.platform === 'darwin' && resolveMacOSComputerUseExecutablePath() !== null
}

// guard before any client.listApps/snapshot/action call

Try / catch

try {
  await client.snapshot(params)
} catch (e) {
  if (e instanceof RuntimeClientError && e.code === 'accessibility_error' && /was not found/.test(e.message)) {
    // rebuild/reinstall helper, do not retry blindly
  } else throw e
}

Prevention

When it happens

Trigger: Any provider method (listApps, snapshot, action, etc.) called after the helper .app was deleted, partially copied, or had its MacOS executable stripped; or when the .app resolves via the override env var but the inner binary path does not.

Common situations: A rebuild interrupted mid-copy leaving a half-populated .app; a packaged install where the executable lacks the executable bit; ORCA_COMPUTER_MACOS_HELPER_APP_PATH pointing at a stale .app skeleton; antivirus/Gatekeeper quarantine removing the unsigned inner binary.

Related errors


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/f191f6f282b83359. Report an issue: GitHub.