#150949·OpenClaw

`computer` launch_app always rejected with COMPUTER_STALE_OBSERVATION on macOS (app-provided embedded CUA driver, 2026.9.4)

Author: dangladeCreated Sep 17, 2026Updated Sep 17, 2026
LabelsP2issue-rating: 🦪 silver shellfishimpact:other

Summary

The computer tool's launch_app action is rejected 100% of the time with COMPUTER_STALE_OBSERVATION: refresh list_apps and retry on macOS when the CUA driver is the app-provided embedded one. Refreshing list_apps (or even taking a fresh screenshot) immediately before retrying does not help. All other actions work normally.

Environment

  • OpenClaw 2026.9.4 (3a9d69d) — gateway/CLI installed via npm (Homebrew node), macOS app 2026.9.4 via Homebrew cask
  • macOS 26.3.2, Apple M1 (Macmini9,1)
  • Topology: external gateway (LaunchAgent from the npm install); OpenClaw.app paired as a node in attach-only mode
  • Computer Control enabled in app Settings → This Mac → Capabilities, provider = CUA
  • Driver: app-bundled OpenClaw.app/Contents/Resources/cua-driver, spawned by the app as serve --embedded --no-permissions-gate --socket "~/Library/Application Support/OpenClaw/cua/<id>/cua.sock" --host-bundle-id ai.openclaw.mac --permission-mode unrestricted --dangerously-bypass-approvals, with a gateway-side cua-driver mcp --embedded bridging the same socket
  • Accessibility + Screen Recording granted (node reports accessibility=yes, screenRecording=yes)
  • Vision-capable models via OpenRouter (reproduced with anthropic/claude-fable-5.1 and qwen/qwen3.7-flash)

Reproduction

  1. Agent turn: list_appslaunch_app (TextEdit) → rejected with COMPUTER_STALE_OBSERVATION: refresh list_apps and retry
  2. Refresh list_appslaunch_app again → same rejection
  3. screenshot (fresh frame) → launch_app → same rejection
  4. Quit + relaunch OpenClaw.app and restart the gateway so both serve --embedded and mcp --embedded are freshly spawned → same rejection on first try

What works

screenshot, list_apps, list_windows, bring_to_front, pointer and keyboard input all behave correctly in the same sessions. Launching apps via AppleScript (osascript through exec) works as a workaround, and agents eventually fall back to it on their own after burning retries.

Possibly related

  • #148541 (computer tool in paired scope hardcoding the V1 action set — this setup is a paired node and launch_app is a V2 action)
  • PR #143113 (stale-build admission for desktop observe/launch in the cloud-workers lane)
  • trycua/cua#3390 (state-scoped observations RFC — the semantics that produce this rejection)