diff --git a/README.md b/README.md index 159ac706f..328d59f8c 100644 --- a/README.md +++ b/README.md @@ -861,6 +861,21 @@ Even with `restrict_to_workspace: false`, the `exec` tool blocks these dangerous * `shutdown`, `reboot`, `poweroff` — System shutdown * Fork bomb `:(){ :|:& };:` +#### Known Limitation: Child Processes From Build Tools + +The exec safety guard only inspects the command line PicoClaw launches directly. It does not recursively inspect child +processes spawned by allowed developer tools such as `make`, `go run`, `cargo`, `npm run`, or custom build scripts. + +That means a top-level command can still compile or launch other binaries after it passes the initial guard check. In +practice, treat build scripts, Makefiles, package scripts, and generated binaries as executable code that needs the same +level of review as a direct shell command. + +For higher-risk environments: + +* Review build scripts before execution. +* Prefer approval/manual review for compile-and-run workflows. +* Run PicoClaw inside a container or VM if you need stronger isolation than the built-in guard provides. + #### Error Examples ``` diff --git a/docs/tools_configuration.md b/docs/tools_configuration.md index 8c8eb31f0..43810d5f8 100644 --- a/docs/tools_configuration.md +++ b/docs/tools_configuration.md @@ -84,6 +84,22 @@ By default, PicoClaw blocks the following dangerous commands: - Git: `git push`, `git force` - Other: `eval`, `source *.sh` +### Known Architectural Limitation + +The exec guard only validates the top-level command sent to PicoClaw. It does **not** recursively inspect child +processes spawned by build tools or scripts after that command starts running. + +Examples of workflows that can bypass the direct command guard once the initial command is allowed: + +- `make run` +- `go run ./cmd/...` +- `cargo run` +- `npm run build` + +This means the guard is useful for blocking obviously dangerous direct commands, but it is **not** a full sandbox for +unreviewed build pipelines. If your threat model includes untrusted code in the workspace, use stronger isolation such +as containers, VMs, or an approval flow around build-and-run commands. + ### Configuration Example ```json