@@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66
77## [ Unreleased]
88
9+ ## [ 0.3.0] - 2026-02-07
10+
911### Added
1012
1113#### M7 Phase 1: Tool Execution Framework - zeph-tools crate (Issue #39 )
@@ -20,18 +22,30 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
2022- 22 unit tests with 99.25% line coverage, zero clippy warnings
2123- ADR-014: zeph-tools crate design rationale and architecture decisions
2224
23- #### M7 Phase 3 (Issue #41 ): Agent integration with ToolExecutor trait
25+ #### M7 Phase 2: Command safety (Issue #40 )
26+ - DEFAULT_BLOCKED patterns: 12 dangerous commands (rm -rf /, sudo, mkfs, dd if=, curl, wget, nc, ncat, netcat, shutdown, reboot, halt)
27+ - Case-insensitive command filtering via to_lowercase() normalization
28+ - Configurable timeout and blocked_commands in TOML via ` [tools.shell] ` section
29+ - Custom blocked commands additive to defaults (cannot weaken security)
30+ - 35+ comprehensive unit tests covering exact match, prefix match, multiline, case variations
31+ - ToolsConfig integration with core Config struct
32+
33+ #### M7 Phase 3: Agent integration (Issue #41 )
2434- Agent now uses ` ShellExecutor ` for all bash command execution with safety checks
35+ - SEC-001 CRITICAL vulnerability fixed: unfiltered bash execution removed from agent.rs
36+ - Removed 66 lines of duplicate code (extract_bash_blocks, execute_bash, extract_and_execute_bash)
37+ - ToolError::Blocked properly handled with user-facing error message
2538- Four integration tests for blocked command behavior and error handling
26- - Security improvements: blocked commands no longer leak pattern details to users
39+ - Performance validation: < 1% overhead for tool executor abstraction
40+ - Security audit: all acceptance criteria met, zero vulnerabilities
2741
2842### Security
2943
30- - ** CRITICAL fix for SEC-001** : Shell commands now filtered through ShellExecutor with DEFAULT_BLOCKED patterns (rm -rf /, sudo, mkfs, dd if=, curl, wget, nc, shutdown, reboot, halt, poweroff, init 0 ). Resolves command injection vulnerability.
44+ - ** CRITICAL fix for SEC-001** : Shell commands now filtered through ShellExecutor with DEFAULT_BLOCKED patterns (rm -rf /, sudo, mkfs, dd if=, curl, wget, nc, shutdown, reboot, halt). Resolves command injection vulnerability where agent.rs bypassed all security checks via inline bash execution .
3145
3246### Fixed
3347
34- - Shell command timeout now respects ` config.tools.shell.timeout ` (was hardcoded 30s)
48+ - Shell command timeout now respects ` config.tools.shell.timeout ` (was hardcoded 30s in agent.rs )
3549- Removed duplicate bash parsing logic from agent.rs (now centralized in zeph-tools)
3650- Error message pattern leakage: blocked commands now show generic security policy message instead of leaking exact blocked pattern
3751
@@ -40,7 +54,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
4054** BREAKING CHANGES** (pre-1.0.0):
4155- ` Agent::new() ` signature changed: now requires ` tool_executor: T ` as 4th parameter where ` T: ToolExecutor `
4256- ` Agent ` struct now generic over three types: ` Agent<P, C, T> ` (provider, channel, tool_executor)
43- - Workspace ` Cargo.toml ` now defines ` version = "0.2 .0" ` in ` [workspace.package] ` section
57+ - Workspace ` Cargo.toml ` now defines ` version = "0.3 .0" ` in ` [workspace.package] ` section
4458- All crate manifests use ` version.workspace = true ` instead of explicit versions
4559- Inter-crate dependencies now reference workspace definitions (e.g., ` zeph-llm.workspace = true ` )
4660
0 commit comments