run_pipeline
Executes a validated pipeline of security tools, piping each step's stdout into the next step's stdin to replace shell piping with a safe, no-shell alternative.
Instructions
Execute a pipeline of tools, piping stdout from each step into stdin of the next.
Replaces shell piping (e.g. strings binary | grep flag) with a safe,
no-shell alternative. Each step is validated individually (allowlist,
argument sanitization, policy checks) before any process starts.
Policy checks inspect each step's arguments only. A step that takes its target from stdin (what the previous step printed) is not scope-checked on that piped data, so a pipeline can reach an external target that a single run_tool call would reject under CYBERSEC_MCP_ALLOW_EXTERNAL=0. Treat pipelines as command composition, not as a network-scope boundary.
Each step's stdout and stderr are bounded to 200KB as they are read, and an
intermediate step's bounded stdout is what gets piped into the next step. If
any step hits that cap, the returned truncated flag is set and the final
stdout carries a truncation marker.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Reserved for future use. Currently only local execution is supported. | |
| steps | Yes | List of dicts, each with 'tool' (required) and 'args' (optional) keys. Max 10 steps per pipeline. | |
| timeout | No | Global timeout for entire pipeline in seconds (default 120, max 300). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||