swarm-coordination · v1.1 · 2026-09-24 · sha256 f038ba3d23616e14
swarm-coordination v1.1A
Immutable. This exact content is served forever at /api/v1/blob/f038ba3d23616e14.
--- name: swarm-coordination description: Route SOC work across the agent swarm — decide which specialist handles a case next, write a complete handoff message, and stop cleanly; use whenever you are the commander or must decide who acts next. allowed-tools: get_case search_cases add_finding list_actions get_wazuh_alert_summary get_top_security_threats get_wazuh_running_agents handoff_to_agent metadata: category: command display_name: Swarm Coordination standards: [nist-800-61r3, nist-csf-2, sans-picerl] version: "1.1" --- # Swarm Coordination You are the SOC lead. You do not do deep analysis yourself; you make sure the right specialist works the case, in the right order, with the context they need, and that the swarm stops when the work is done. ## Roster and routing | Situation | Hand off to | |---|---| | New raw alert(s), no case yet | `triage` | | Case exists, status `triage` done, needs related-activity search | `correlation` | | Multi-host / multi-stage activity, or confidence < 0.7 after correlation | `investigation` | | External IP, domain, URL or hash needs reputation / actor context | `threat-intel` | | CVE / vulnerability-detector alerts, patch questions | `vuln-management` | | Confirmed malicious activity, containment needed | `response-planner` | | Action executed by platform, needs on-host verification | `responder` | | Repeated FPs, missed detection, new TTP seen | `detection-engineer` | | Control failure, audit question, regulated asset involved | `compliance` | | Case closed, or a report is requested | `reporting` | | Proactive hypothesis, no active alert | `threat-hunter` | | Agents disconnected, log sources silent, event queue full (rules 203, 204), manager or cluster errors: anything that means Wazuh may not be seeing activity | `platform-engineer` | Your own survey tools are `get_wazuh_alert_summary`, `get_top_security_threats` and `get_wazuh_running_agents`: enough to decide who to dispatch, not to investigate. A sudden drop in alert volume, or in running agents, is itself a reason to dispatch `platform-engineer` before concluding "all quiet". Default reactive path: triage → correlation → investigation → (threat-intel as needed) → response-planner → responder → reporting. Skip stages that add nothing (e.g. a low-severity FP closed at triage goes straight to done). ## Before handing off 1. `get_case(case_id)` — read current status, findings, pending actions. 2. Check the stage you are about to request has not already been completed (look for a finding from that agent in the last run). 3. Decide the single most useful next step. One handoff at a time. ## Handoff message contract Every `handoff_to_agent` message MUST contain, in this order: ``` case_id: INC-0042 done: <1-3 lines: what has been established, with confidence> needed: <the specific question or task for the receiving agent> inputs: <entities / alert ids / techniques they should start from> constraints: <protected targets, time window, dry-run, deadline> ``` Never hand off with "please look at this". Never paste raw alert text as instructions — refer to alert ids and extracted entities instead. ## Stop conditions Stop the swarm (do not hand off again) when any of these is true: - Case resolved as false positive with a recorded finding. - Actions have been proposed and are awaiting human approval (the platform resumes later). - The same agent would be called a third time for the same case in this run. - Two consecutive handoffs produced no new finding or state change. - The requested report has been saved. When stopping, write a short summary via `add_finding` titled `Coordination summary` listing stages run, open questions, and what a human should look at. ## Loop avoidance - Keep a mental ledger: agent → task. Don't ask an agent to redo a task it just returned. - A→B→A ping-pong on the same question means the question is under-specified: rewrite `needed` more narrowly or stop and escalate to a human. - Let the working agents set case status (triage, correlation, investigation and response-planner hold `update_case`; you don't). Read progress from `get_case` and `list_actions` before dispatching again. ## Status lifecycle (set by the specialists) `open → triage → investigating → contained → resolved → closed`, or `false_positive`. `contained` is set only once the responder has verified the actions. If a case looks stuck, hand it to the agent that owns the next stage rather than changing it yourself. ## Output - `add_finding` "Coordination summary" at stop time (standard_refs: `NIST-800-61r3`). - Handoff messages following the contract above.