Context
Cat Café (multi-agent orchestrator) integrates DARE via headless CLI mode. Currently we use --auto-approve to bypass approval prompts, but this prevents us from implementing fine-grained approval control from the orchestrator side.
Request
When running in --headless mode, allow external integrators to write to DARE's stdin using the client-control-stdin.v1 protocol to:
- Grant/deny approvals selectively (
approvals:grant, approvals:deny) instead of blanket --auto-approve
- Query runtime state (
status:get, actions:list)
- Manage MCP tools at runtime (
mcp:reload, mcp:show-tool)
- List available skills (
skills:list)
Current Behavior
--headless mode outputs structured JSON events to stdout (works great)
--control-stdin flag exists in the codebase (client/render/control.py) but it's unclear if it's fully wired up for external consumption
- External integrators currently have no way to send control commands during a headless session
Desired Behavior
# Integrator spawns DARE with stdin pipe
python -m client --adapter openrouter --model zhipu/glm-5 \
run --task "do something" --headless --control-stdin
# Integrator can write to stdin:
echo '{"schema_version":"client-control-stdin.v1","id":"1","action":"approvals:list","params":{}}' > /proc/$PID/fd/0
Why This Matters
Without stdin control, integrators must choose between:
--auto-approve (no safety boundary)
- No approval at all (task hangs on
approval.pending)
The control-stdin protocol would allow orchestrators to implement their own approval policies while preserving DARE's audit trail.
Related
Context
Cat Café (multi-agent orchestrator) integrates DARE via headless CLI mode. Currently we use
--auto-approveto bypass approval prompts, but this prevents us from implementing fine-grained approval control from the orchestrator side.Request
When running in
--headlessmode, allow external integrators to write to DARE's stdin using theclient-control-stdin.v1protocol to:approvals:grant,approvals:deny) instead of blanket--auto-approvestatus:get,actions:list)mcp:reload,mcp:show-tool)skills:list)Current Behavior
--headlessmode outputs structured JSON events to stdout (works great)--control-stdinflag exists in the codebase (client/render/control.py) but it's unclear if it's fully wired up for external consumptionDesired Behavior
Why This Matters
Without stdin control, integrators must choose between:
--auto-approve(no safety boundary)approval.pending)The control-stdin protocol would allow orchestrators to implement their own approval policies while preserving DARE's audit trail.
Related
docs/features/F050-a2a-external-agent-onboarding.md