Repository navigation
feat(desktop): bots list, read and picture the owner's windows, app by app as the owner allows - #171
Merged
Merged
Conversation
…y app as the owner allows The daemon part of D1 (spec 24.2, 24.6, 24.8, 24.11): - desktop_grants (migration 20): one grant per bot and app, by the executable's path case aside, that only goes up from see to act; deleting the bot deletes them. desktop.grants and desktop.revoke, and the bot.desktop notification; ids with the dsk_ prefix. - Tools desktop_windows, desktop_look and desktop_screenshot. The list hides the titles of apps not granted yet and names what is never available. Reading or picturing a window of a new app asks the owner with the bot's why (mcp__botloft__desktop); allowed, the grant is kept. The bot's permission mode never opens the desktop. - The owner must be there: the app open (a connection past hello) and the computer used in the last 5 minutes (GetLastInputInfo); tests stand in for the owner. One desktop action at a time across bots. Tested end to end on Windows with a real window of the test's own: the title hidden, then the request, the reading without the password, the grant kept and told, the picture, revoked and refused; and nothing seen while the owner is away.
httpsphl
enabled auto-merge
October 4, 2026 21:37
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The daemon part of D1 (spec 24.2, 24.6, 24.8, 24.11). It sits on top of #170 and #169, so this diff shows them too until they merge. The app part (the request card and the Desktop section in the bot's settings) comes next, in D1d.
desktop_grantstable (migration 20):desktop.grants {botId}lists a bot's grants.desktop.revoke {grantId}takes one away and returns the rest.bot.desktopnotification goes out on every change.dsk_prefix, which is also added toCLAUDE.md.desktop_windowslists the windows. Titles of apps not granted yet stay hidden, and what is never available is named with the reason.desktop_look {window, why, from?}reads a window through its accessibility tree.desktop_screenshot {window, why}takes a picture of one window.mcp__botloft__desktopwith{app, path, level, why}. When the owner allows it, the grant is saved.auto,bypass_permissions) never opens the desktop.session.hello) and the computer was used in the last 5 minutes (GetLastInputInfo). Tests replace that with a stand-in owner.whyis required, and the protocol is listed.Checks
cargo fmt,clippy -D warnings,cargo test --workspaceandpnpm checkpass.FakeBotloftgainsdesktop.*.tests/desktop.rs(Windows only), using a real window of the test's own:bot.desktop;Manual check on the real app (after D1d)
Ask a bot to read a Notepad window. Allow it in the chat, check the reading, then revoke it in the bot's settings.