{ "cases": [ { "id": "simple-pipeline", "command": "echo ok | jq .foo", "ok": true, "executables": ["echo", "jq"] }, { "id": "chained-commands", "command": "ls && rm -rf /tmp/openclaw-allowlist", "ok": true, "executables": ["ls", "rm"] }, { "id": "quoted-chain-operators-remain-literal", "command": "echo \"a && b\"", "ok": true, "executables": ["echo"] }, { "id": "reject-command-substitution-unquoted", "command": "echo $(whoami)", "ok": false, "executables": [] }, { "id": "reject-command-substitution-double-quoted", "command": "echo \"output: $(whoami)\"", "ok": false, "executables": [] }, { "id": "allow-command-substitution-literal-in-single-quotes", "command": "echo 'output: $(whoami)'", "ok": true, "executables": ["echo"] }, { "id": "allow-escaped-command-substitution-double-quoted", "command": "echo \"output: \\$(whoami)\"", "ok": true, "executables": ["echo"] }, { "id": "reject-backticks-unquoted", "command": "echo `id`", "ok": false, "executables": [] }, { "id": "reject-backticks-double-quoted", "command": "echo \"output: `id`\"", "ok": false, "executables": [] }, { "id": "reject-process-substitution-unquoted-input", "command": "cat <(echo ok)", "ok": false, "executables": [] }, { "id": "reject-process-substitution-unquoted-output", "command": "echo >(cat)", "ok": false, "executables": [] }, { "id": "allow-process-substitution-literal-double-quoted-input", "command": "echo \"<(echo ok)\"", "ok": true, "executables": ["echo"] }, { "id": "allow-process-substitution-literal-double-quoted-output", "command": "echo \">(cat)\"", "ok": true, "executables": ["echo"] } ] }