Skip to content

feat(desktop): D5, bots work while the owner is away, after a risks screen - #181

Merged
httpsphl merged 1 commit into
mainfrom
feat/desktop-unattended
Oct 5, 2026
Merged

httpsphl merged 1 commit into
mainfrom
feat/desktop-unattended

Conversation

@httpsphl

@httpsphl httpsphl commented Oct 4, 2026

Copy link
Copy Markdown
Owner

D5 of Desktop Use (spec 24.8, 24.10, 24.12).

What changes

  • Every desktop grant (see or use) has a While you are away switch, off from the start. Turning it on opens a risks screen: the bot sees everything open in the app, it can make mistakes, text in an app can trick it, nobody watches live, and what is never granted. Turn on stays disabled until I understand the risks is checked. Turning it off is immediate.
  • desktop.setOptions {grantId, unattended, acceptedRisks}. The daemon refuses to turn it on without acceptedRisks: true and saves accepted_risks_at.
  • Presence rule (5 minutes idle, or the app closed) now runs after the window is known. With the owner away, a window passes only when a grant with the option covers it at the needed level. Nobody is asked while the owner is away. desktop_windows shows only those grants' titles, and refuses if there are none.
  • Return notice: each use while away is kept in memory, one line per bot and app (DesktopAwayUse), and sent as desktop.away. The app shows "Scout used Excel while you were away" above the main pane. See in the chat opens the chat at the item where it began. Got it calls desktop.dismissAway.
  • With the screen locked, the real mouse and keyboard already refuse (D4). UI Automation goes on if Windows allows it.

Tests

  • Store: the option keeps accepted_risks_at.
  • Daemon unit test for the away list.
  • Integration test tests/desktop_away.rs with the real test window. With the owner away an hour: refused without the option; setOptions refused without accepted risks; with them, windows and look work; desktop.away arrives; acting still needs a use grant and nobody is asked; the owner dismisses the notice.
  • App: the risks dialog gating, the notice and its link, and pt-BR words.

Manual, with real Claude / Windows

  • Lock the screen (Win+L) with a bot running a routine on an app granted with the option on. Check that desktop_look and an accessibility click still work. Check that desktop_press says the screen is locked. Record the result in spec 19.
  • Come back and see the notice above the chat; See in the chat lands where the bot started.

…r accepted the risks

Each desktop grant gets a "While you are away" switch. Turning it on opens
a risks screen whose confirm button lights only after "I understand the
risks" is checked; desktop.setOptions refuses it without acceptedRisks and
keeps when they were accepted.

With the owner away (app closed or 5 minutes idle), a window passes only
when a grant with the option covers it at the level the tool needs, and
nobody is asked. desktop_windows then lists only those grants' titles.

Each use while away is kept in memory per bot and app and sent as
desktop.away; the app shows "<bot> used <app> while you were away" above
the main pane, with a link to the chat where it began, until the owner
dismisses it (desktop.awayUses, desktop.dismissAway).
@httpsphl
httpsphl enabled auto-merge October 4, 2026 23:56
@httpsphl
httpsphl merged commit 8693663 into main Oct 5, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant