gensecaihq/wazuh-autopilot/wazuh-active-response
Claude Code and agent skill by gensecaihq/wazuh-autopilot
- community
Checking that the SKILL.md file is still in the repository.
How Wazuh active response actually works — commands, agent-side scripts, dispatch vs execution, permanence, blast radius, pre-checks and verification caveats — for planning and verifying containment; use before proposing or verifying any response action.
Install
npx vskill@latest install gensecaihq/wazuh-autopilot/wazuh-active-responseSKILL.md
Wazuh Active Response
Agents never execute actions. The response-planner proposes (propose_action); the autonomy policy and human approvers decide; the platform executor calls the Wazuh MCP action tool; the responder verifies. This skill explains what happens underneath so plans are realistic and verification is honest.
How Wazuh AR works
- The Wazuh API (via the MCP server) sends an active-response command to one or more agents.
- The agent runs a script of that name from its active-response bin directory. If the script
isn't deployed on that agent, nothing happens on the host.
- The API returns as soon as the manager accepts and dispatches the command
("AR command was sent to the agent") — this is not proof of execution.
- The script logs its outcome; Wazuh turns that log into an alert in the
active_responsegroup. - API-triggered AR is permanent: Wazuh ignores the timeout for API-triggered commands, so a block
stays until explicitly removed (rollback), unlike rule-triggered AR with a timeout.
What each platform action sends
| Platform action | MCP tool | AR command | Stock script? | Rollback | |
|---|---|---|---|---|---|
| block_ip | wazuh_block_ip | !firewall-drop (-srcip) on one agent or all_agents | Yes | wazuh_firewall_allow — per agent; needs an undo script configured on the MCP server | |
| firewall_drop | wazuh_firewall_drop | !firewall-drop | Yes | wazuh_firewall_allow | |
| host_deny | wazuh_host_deny | !host-deny (adds to /etc/hosts.deny, Linux) | Yes | wazuh_host_allow | |
| disable_user | wazuh_disable_user | !disable-account | Yes (Linux) | wazuh_enable_user | |
| isolate_host | wazuh_isolate_host | !host-isolation | No — custom script required | wazuh_unisolate_host | |
| kill_process | wazuh_kill_process | !kill-process (PID) | No — custom script required | None | |
| quarantine_file | wazuh_quarantine_file | !quarantine (path) | No — custom script required | wazuh_restore_file | |
| restart_wazuh | wazuh_restart | Wazuh API restart of agent or manager | n/a | n/a | |
| active_response | wazuh_active_response | Allowlisted command names only | Depends | Depends |
If the org hasn't deployed the custom scripts, isolate/kill/quarantine will be "dispatched" and do nothing. Say so in the plan and prefer actions with stock scripts, or recommend a manual step.
Blast radius
block_ipwith no agent meansall_agents=true: fleet-wide and permanent. Name the agents that
actually see the attacker (from the alerts) instead, unless the IP is confirmed malicious and internet-only. Fleet-wide blocks can only be rolled back agent by agent.
- Never target the manager (agent
000) — the MCP server refuses it by default. - Protected targets (policy) are refused before execution; don't propose them.
- Isolation cuts the host off except for the manager: confirm the business owner impact first.
Pre-checks (responder and response-planner)
- Agent connected?
check_agent_health agent_id="<id>"— AR to a disconnected agent is queued or lost. - Already done?
wazuh_check_blocked_ip/wazuh_check_agent_isolation/wazuh_check_user_status
before proposing a duplicate.
- Target still valid? For kill_process, confirm the PID with
get_agent_processes(syscollector is a
periodic inventory — PIDs can be stale or reused).
- Evidence preserved? Kill and quarantine destroy volatile evidence — record process details first.
Verification caveats
The wazuh_check_* tools infer state; they are not live host queries:
| Check | Evidence it uses | |
|---|---|---|
| wazuh_check_blocked_ip | AR alert history in the active_response group for that IP — e.g. rule 601 (level 3, "Host Blocked by firewall-drop Active Response") or its JSON-log equivalent rule 651 (level 3); host-deny: rule 603 / rule 653 (level 3) | |
| wazuh_check_agent_isolation | Agent connectivity plus AR history mentioning isolation | |
| wazuh_check_process | Syscollector process inventory (periodic) — a killed PID can still appear until the next scan; read inventory_scan_time | |
| wazuh_check_user_status | AR history mentioning the username | |
| wazuh_check_file_quarantine | A FIM "File deleted" alert — rule 553 (level 7) — for the exact path |
Unblock evidence: rule 602 / rule 652 (level 3, "Host Unblocked by firewall-drop Active Response"). rule 658 (level 5) means the AR was activated but may not have had an effect — treat as not verified. No AR alert at all usually means the script didn't run (missing script, agent offline, AR disabled).
Report verification as verified / not verified / inconclusive with the evidence, never as "done" because the API said so.
Roles
- response-planner: pick the least destructive action that contains the threat, order it
(evidence → contain → eradicate), include rollback and blast radius in the rationale, then propose. Hand off to responder only via the platform (verification runs automatically after execution).
- responder: run the matching
wazuh_check_*, look for the AR alerts above, record the finding,
and if something went wrong recommend rollback — hand off to response-planner for any new action.
Output
add_finding with action, target agent(s), AR command, stock/custom script status, pre-check results, verification evidence (rule and timestamp) and rollback path; refs such as MITRE-D3FEND:D3-ITF, NIST-800-61r3:Respond.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingbackend/app/skills/wazuh-active-response/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/gensecaihq/wazuh-autopilot/wazuh-active-response)