Skip to content

4.3.0: all 'see' captures refused via the on-demand daemon ("response evidence did not match"); --no-remote works, and the PNG is written despite the refusal #710

Description

@gabrielexito-stack

On 4.3.0 every see capture is refused when the CLI hands the request to the on-demand daemon. The identical command with --no-remote succeeds. This is deterministic, survives killing the daemon (it respawns and fails the same way), and affects --mode frontmost, --mode screen and --app alike.

$ peekaboo --version
Peekaboo 4.3.0 (main/44eff916c, built: 2026-09-02T13:31:24-07:00)

Fails via daemon

$ peekaboo see --mode frontmost --path /tmp/fm.png
⛔ Action refused before dispatch; update the runtime before retrying
Error: The desktop observation provider returned response evidence that did not match the requested frontmost application snapshot identity.

$ peekaboo see --mode screen --path /tmp/sc.png
⛔ Action refused before dispatch; update the runtime before retrying
Error: The desktop observation provider returned response evidence that did not match the requested unexpected application evidence.

Three consecutive --mode frontmost runs produced the identical refusal. After pkill -f 'peekaboo daemon' the daemon respawns on demand and both commands fail identically, so this is not stale daemon state.

Works with --no-remote

$ peekaboo see --mode frontmost --path /tmp/fm-test.png --no-remote
🖼️  Screenshot saved to: /tmp/fm-test.png
📱 Application: ChatGPT
[win] Window: ChatGPT
🧊 Detection method: AXorcist
📊 UI elements detected: 16
⚙️  Interactable elements: 2
⏱️  Execution time: 1.92s

--mode screen --no-remote likewise succeeds. Same binary, same TCC grants (Screen Recording, Accessibility and Event Synthesizing all Granted), only the runtime host differs. --json confirms the failing path:

DEBUG: Runtime host: remote onDemand via /Users/agent/Library/Application Support/Peekaboo/daemon-8a6bfeca4f613a42.sock (build 4.3.0 (4.3.0))
VERBOSE [Capture]: Using desktop observation pipeline {target=frontmost}
VERBOSE [Operation]: Operation completed {operation=see_command, success=false, error=The desktop observation provider returned response evidence that did not match the requested frontmost application snapshot identity.}

Daemon and CLI are the same build (4.3.0), so this is not version skew.

Two secondary problems

1. The refusal still writes the PNG. Every refused run left a full screenshot on disk:

-rw-------@ 1 agent  wheel  459473 Sep  8 20:54 /tmp/fm1.png
-rw-------@ 1 agent  wheel  459651 Sep  8 20:54 /tmp/fm2.png
-rw-------@ 1 agent  wheel  459616 Sep  8 20:54 /tmp/fm3.png

A caller that checks for the output file rather than parsing stderr will consume an image the tool declined to vouch for. If the evidence check fails, the artifact should not be left behind.

2. Malformed error string. The --mode screen variant renders as "did not match the requested unexpected application evidence" — the template appears to interpolate a fallback descriptor into a slot expecting a target description. The frontmost variant reads correctly, so it looks like a missing case in the message builder rather than a distinct failure.

Also, ⛔ ... update the runtime before retrying is misleading here: the runtime is current and the same build succeeds locally. The actionable hint would be to name the daemon path.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Urgent regression or broken agent/channel workflow affecting real users now.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:otherThis issue has meaningful maintainer-visible impact outside the owned taxonomy.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions