effectcraft/crates/automation/src
Claude 8fb4281632
MCP: --automation-read-root / --automation-write-root confine the agent's file access (#500)
`effectcraft-cli mcp` had no way to keep an agent's file access to a folder;
the flags were unknown options. Both now take a folder (repeatable, as in
PhotoCraft): with either given, files are read only under a read or write root
and written only under a write root (none: no writes). Defaults are unchanged.

automation::confine::Confinement checks every engine command the backend runs
(execute_command, command_run, open/save_project, each engine.batch step), in
both headless and bridge mode, before it runs: the file parameters of the
commands that read or write files must be absolute paths inside the roots
(symbolic links resolved through the longest existing ancestor, `..` refused),
as must any other absolute path in a command's parameters. Commands that write
where they aren't told are checked against the target they would write: Save /
Increment and Save the open project's file, renderQueue.render every queued
output (renderQueue.list). Scripts, Execute File, Reveal in Finder, Open Recent
by index, `$N` file-path references in a batch, render_frame/screenshot paths
outside a write root and the bridge's UI-driving tools are refused while
confined. docs/mcp.md describes it.

Test: a confined headless server opens and saves inside its roots and is refused
outside them, for a relative path, `..`, a batch step, a `$N` path, Save to a
read-only root's project, the Render Queue's default output there, a symbolic
link out of the write root, and scripts; the unconfined server still writes
anywhere.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 22:54:57 +00:00
..
autosave.rs Fix #258: preserve unsaved headless MCP work with opt-in checkpoints 2026-10-08 14:38:24 +02:00
backend.rs MCP: --automation-read-root / --automation-write-root confine the agent's file access (#500) 2026-10-10 22:54:57 +00:00
base64.rs M14.1: MCP server + agent CLI 2026-10-01 21:40:31 -04:00
bridge.rs M14.1: MCP server + agent CLI 2026-10-01 21:40:31 -04:00
confine.rs MCP: --automation-read-root / --automation-write-root confine the agent's file access (#500) 2026-10-10 22:54:57 +00:00
lib.rs MCP: --automation-read-root / --automation-write-root confine the agent's file access (#500) 2026-10-10 22:54:57 +00:00
long_job.rs MCP: report render progress and handle cancellation 2026-10-09 00:20:22 -07:00
server.rs MCP: return on write errors while stdin is open; document requests during a render 2026-10-09 10:26:57 -07:00
tests.rs MCP: --automation-read-root / --automation-write-root confine the agent's file access (#500) 2026-10-10 22:54:57 +00:00
tools.rs MCP: --automation-read-root / --automation-write-root confine the agent's file access (#500) 2026-10-10 22:54:57 +00:00