Skip to content

Refuse whole-Mac changes in System Settings unless the user allowed them - #14

Merged
max1874 merged 2 commits into
mainfrom
max/machine-wide-gate
Nov 8, 2026
Merged

max1874 merged 2 commits into
mainfrom
max/machine-wide-gate

Conversation

@max1874

@max1874 max1874 commented Nov 8, 2026

Copy link
Copy Markdown
Owner

Why

On 2026-11-08 an agent used act to press Light in System Settings › Appearance while its user was working. It wanted data for a README demo, had only announced the run, and then failed to switch back (the second act was stale). The skill it followed said reversible toggles were fine to try. Changing the whole Mac is the user's call, so the executor should not do it by default.

What

  • Desktop.act: in System Settings (com.apple.systempreferences), only navigation (CLICK, SCROLL_UP/SCROLL_DOWN, PRESS_ESCAPE, WAIT) runs unless machine_wide=True. Everything else is refused before dispatch, not_delivered. observe is unaffected.
  • Agent(machine_wide=False) and CLI act --machine-wide pass it through. The eval runner's System Settings tasks are navigation-only already, so they need no change.
  • Skill: the "reversible toggles are fine" line now says that only the task's own app is the agent's to change, and that whole-Mac changes need the user's yes every time.
  • docs/design.md records the boundary. tests/test_cli.py: refused PRESS sends no act, CLICK still goes through, machine_wide=True lets PRESS through.

Acceptance (this branch, real System Settings, background)

The Appearance pane was opened with open -g. act "System Settings" <fp> PRESS e26 was run without the flag; the target was Auto, which was already selected, so a gate failure would have changed nothing. Result: {"outcome": "refused", "delivery": "not_delivered", "took_focus": false, ...}. AppleInterfaceStyle / SwitchesAutomatically read Dark / 1 before and after. An independent activation recorder logged no System Settings activation. The flag-allowed path is covered only by the unit test, not exercised on the maintainer's Mac.

🤖 Generated with Claude Code

max1874 and others added 2 commits November 8, 2026 23:29
On 2026-11-08 an agent pressed Light in System Settings for a README demo
without asking, then failed to switch back. Desktop.act now lets only
navigation through in System Settings unless the caller passes
machine_wide=True (CLI --machine-wide), refusing before dispatch as
not_delivered. The skill drops the line that called reversible toggles
fine to try.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@max1874
max1874 merged commit e7005b3 into main Nov 8, 2026
2 checks passed
@max1874
max1874 deleted the max/machine-wide-gate branch November 8, 2026 15:33
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