You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 7b997cb
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: README.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -306,6 +306,8 @@ The MCP window-state tools `ac_window_minimize`, `ac_window_maximize` and `ac_wi
306
306
307
307
**Opt-in hardening.** Each of these is off until configured, and a server without them behaves as before. `JE_AUTOCONTROL_RBAC_USERS=<user store file>` makes the REST API and the MCP HTTP transport resolve the bearer token to a user and authorise each route, tool and privileged `AC_*` command by role (viewer / operator / admin); the shared token is then refused. `JE_AUTOCONTROL_MCP_PATH_ROOTS` (directories separated by the OS path separator) confines every MCP tool argument that is a file path to those directories, `JE_AUTOCONTROL_MCP_PATH_ROOTS_FROM_CLIENT=1` adds the client's `roots/list`, and `JE_AUTOCONTROL_MCP_ENV_REF_ALLOW` limits which `env://` names `ac_resolve_ref` may read. `JE_AUTOCONTROL_ACTION_SIGNING_PUBLIC_KEY` makes an endpoint verify Ed25519-signed action files without being able to sign them (`create_signing_keypair`; the private key stays on the signing machine). A remote-desktop viewer writes files pushed by a host only below `~/Downloads/AutoControl` (`JE_AUTOCONTROL_REMOTE_DOWNLOAD_DIR`); that one is on by default.
308
308
309
+
The REST GUI shows RBAC mode and disables the shared-token field while a user store is active. `rest_api_registry.status()` includes `rbac_enabled` and returns `token: null` in that mode; use an individual user token. Custom REST gates that only implement `check()` remain supported in shared-token mode; RBAC requires an authenticated user context and refuses an identityless success.
310
+
309
311
Delayed interval/cron jobs, triggers, hotkeys, watchdog rules, webhooks, e-mail triggers and observer callbacks retain their registrant’s identity. Store-backed users and roles are checked again on dispatch; deleted users, unavailable stores and viewers cannot execute deferred work. Starting a daemon does not transfer its registrations to the starter. Ownership metadata retains no RBAC bearer token; explicit Python `AuthorizationContext` values without `store_path` keep their captured role, and work registered outside RBAC clears worker identity. Observer/watchdog callbacks get fresh variable scopes, and failed watchdog actions do not count as dismissed popups. Nested callbacks retain the caller’s failure count; a webhook with a revoked owner returns HTTP 403 and `fired: false`.
-**What**: REST registry status now includes `rbac_enabled` and suppresses the inactive shared token when a user store is configured. The GUI explains user-token authentication in all four languages, disables the shared-token field and restores it after stopping RBAC. The Python server's existing `token` property remains unchanged.
363
+
-**Compatibility/security**: custom gates implementing only `check()` retain their verdicts and rate limiting under shared-token authentication. Store-backed servers require an authenticated user context independently of the gate implementation; an identityless success returns HTTP 401, including from a replacement gate with `authenticate()`.
364
+
-**Validation**: 170 REST/RBAC regression tests pass; 14 final focused/thread-safety cases pass, covering real local HTTP, explicit/environment stores, shared tokens, mode transitions and GUI copy behavior. 75 additional endpoint, schema, metrics and documentation/budget checks pass. Three-platform mypy reports zero error modules; English and Traditional Chinese strict Sphinx builds pass.
365
+
-**Files**: REST server/registry, GUI REST panel and four language catalogs, regression tests, three READMEs, Sphinx roles guide, changelog and architecture maps.
366
+
-**Open items**: user management surfaces, sensitive viewer tool classification and real-client/TLS RBAC acceptance remain in `Progress.md`.
0 commit comments