You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+33-3Lines changed: 33 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,16 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
-
## [Unreleased]
8
+
## [1.0.0] - 2026-03-26
9
+
10
+
> **v1.0.0** is a clean semver reset marking the first production-ready release. All prior versions (2.0.0–2.4.3) were pre-release development iterations.
11
+
12
+
### Highlights
13
+
-**497 tests** across 14 files, all passing
14
+
-**48 MCP tools** supported via Wazuh MCP Server v4.2.1
15
+
-**7 SOC agents** with full playbooks and tool documentation
16
+
-**End-to-end audit** — critical, high, and medium findings resolved
17
+
-**Zero npm vulnerabilities**
9
18
10
19
### Security — Production Readiness Audit
11
20
-**[CRITICAL] Action type allowlist enforcement (C2)**: Response plans now validate action types against an explicit allowlist (`block_ip`, `firewall_drop`, `host_deny`, `isolate_host`, `kill_process`, `disable_user`, `quarantine_file`, `restart_wazuh`). Plans with unknown action types are rejected at creation time, preventing hallucinated or injected action types from reaching the MCP server.
@@ -19,7 +28,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
19
28
-**[MEDIUM] IP format validation on active response (M7)**: New `_validate_ip()` in Wazuh client validates IPv4/IPv6 format before passing to `block_ip`, `firewall_drop`, `host_deny`.
20
29
-**[MEDIUM] Flag injection prevention (M6)**: `_sanitize_ar_argument()` now rejects values starting with `-` to prevent flag injection in active response commands.
21
30
-**[MEDIUM] Error message sanitization (H8)**: Wazuh client HTTP 4xx errors no longer include raw API response bodies in exception messages. Full details logged server-side only.
22
-
-**Test coverage**: Added 38 new tests for `search-alerts` (8 tests), `get-agent` (6 tests), action type allowlist (3 tests), plus config validation tests. Total: 393 tests, all passing.
31
+
-**Test coverage**: 497 tests across 14 files, all passing. Includes regression tests for every security fix.
23
32
24
33
### Added
25
34
-**vLLM deployment support** (addresses #22): New `openclaw/openclaw-vllm.json` config for running Wazuh Autopilot with self-hosted open-source models via vLLM. Includes pre-configured model entries for Qwen3 32B, Llama 3.3 70B, MiniMax-M2.1 139B, and DeepSeek-R1 70B with correct tool call parser settings. New `docs/VLLM_DEPLOYMENT.md` covers hardware requirements, Docker deployment, air-gapped setup, production systemd config, multi-GPU configurations, and AMD MI300X instructions. README updated with Path D for vLLM and vLLM entry in supported providers table.
@@ -60,7 +69,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
60
69
-**listCases hard max**: `/api/cases` now clamps the `limit` parameter to 1-1000 range
61
70
-**Enrichment cache eviction on overflow**: `enrichmentCache` now evicts oldest entry when hitting 10,000 entries
62
71
-**Agent TOOLS.md stalled pipeline docs**: All 6 pipeline agent TOOLS.md files now document the `[RETRY]` message format and pre-built callback URLs
63
-
-297 tests across 10 files
72
+
-497 tests across 14 files
64
73
65
74
### Fixed
66
75
-**Stalled pipeline data corruption**: `checkStalledPipeline()` now acquires the case lock before writing `updated_at`, preventing data loss from concurrent `updateCase` calls
@@ -93,8 +102,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
93
102
-**OBSERVABILITY_EXPORT.md phantom OpenTelemetry section**: Removed section describing OTEL support that was never implemented
94
103
-**SECURITY.md supported versions**: Updated from 2.0.x-2.1.x to 2.2.x-2.4.x
95
104
105
+
### Added — v1.0.0 Release Fixes
106
+
-**Crash recovery for stuck EXECUTING plans**: `loadPlansFromDisk()` now resets plans stuck in EXECUTING state to FAILED on startup with a recovery message
107
+
-**Bootstrap approval gate**: `policyCheckApprover()` now requires `AUTOPILOT_BOOTSTRAP_APPROVAL=true` when policy has placeholder Slack IDs, preventing autonomous agent auto-approval
108
+
-**Alert dedup across midnight**: In-memory `alertDedup` Map with 1hr TTL ensures same alert retried across date boundary reuses original case ID
109
+
-**Trusted proxy rate limiting**: Rate limiter only trusts `X-Forwarded-For` when `TRUSTED_PROXY=true` is set, preventing IP spoofing
110
+
-**Entity index saturation warnings**: Logs warning at 90% capacity, error when full. New `autopilot_entity_index_size` gauge metric
111
+
-**Plan memory cleanup**: Periodic eviction of terminal plans older than 24h. New `autopilot_plans_in_memory` gauge metric
112
+
-**Wazuh MCP Server v4.2.1 compatibility**: Expanded toolmap from 3 to 9 action tools, added param validation for `kill_process` (requires `process_id`), `disable_user` (requires `username`), `quarantine_file` (requires `file_path`). Documented RBAC scope requirements and `AUTHLESS_ALLOW_WRITE`
113
+
-**MCP isError detection**: `executePlan()` now checks `isError` flag in MCP response body, correctly marking actions as failed when MCP returns HTTP 200 with tool-level errors
114
+
-**mcp_calls evidence recording**: Plan execution writes MCP tool call records to case evidence pack
115
+
-**Duration clamping**: `buildMcpParams()` clamps duration to 86400s (24h) max to match Wazuh MCP Server limits
116
+
-**LLM type coercion**: Runtime coerces string booleans (`"true"`/`"false"`), string numbers (`"0.9"`), and case-variant enums (`"Critical"`, `"Low"`) from local LLMs
117
+
118
+
### Fixed — v1.0.0 Release Fixes
119
+
-**Concurrent duplicate alerts return 500**: Wrapped check-then-create in `withCaseLock()` to eliminate TOCTOU race
120
+
-**Malformed JSON returns 500**: `parseJsonBody()` errors now return proper 400/413/408 status codes
-**install.sh permission drift**: Removed extra `sessions_send` and `exec` permissions not in reference configs
123
+
96
124
### Changed
97
125
-**Tested with OpenClaw v2026.7.3**: Verified compatibility with the latest OpenClaw release. The undici timeout preload script is still required — pi-ai@0.55.3 ships identical `http-proxy.ts`.
126
+
-**Wazuh MCP Server**: Updated compatibility from v4.0.6 to v4.2.1 (48 tools)
127
+
-**Version reset**: Clean semver reset to 1.0.0 — all prior versions were pre-release development
0 commit comments