# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.5.0] - 2026-03-17

### Added
- Scan history and trend tracking:
  - `--save-history` flag to persist scan results as JSON
  - `--history` flag to view past scan results and trends
  - `--history-dashboard FILE` generates HTML dashboard from scan history
  - `--history-dir` and `--history-label` for custom history management
- SARIF 2.1.0 output format (`--format sarif`):
  - Compatible with GitHub Code Scanning, VS Code SARIF Viewer
  - Full OASIS SARIF 2.1.0 spec compliance
- TypeScript/JavaScript scanning (12 new rules, 36 total):
  - TS-CMD-001: Command injection
  - TS-SQL-001: SQL injection
  - TS-PATH-001: Path traversal
  - TS-SEC-001: Hardcoded secrets
  - TS-INPUT-001: Missing input validation
  - TS-AUTH-001: Missing authentication
  - TS-SSRF-001: Server-Side Request Forgery
  - TS-DESER-001: Unsafe deserialization
  - TS-RATE-001: Missing rate limiting
  - TS-INFO-001: Information disclosure
  - TS-PROMPT-001: Prompt injection
  - TS-PERM-001: Excessive permissions
- `--explain RULE_ID` flag for detailed rule documentation
- `--exclude RULE_IDS` to skip specific rules
- PyPI-ready packaging with pyproject.toml

### Changed
- Version bumped to 0.5.0
- 36 security rules total (24 Python + 12 TypeScript/JavaScript)

## [0.4.0] - 2026-03-17

### Added
- SAFE-MCP Threat Taxonomy module (`mcpaudit/taxonomy.py`):
  - 8 standardized threat categories with MITRE ATT&CK references
  - All 24 rules mapped to threat categories
  - `--taxonomy` CLI flag for grouped threat view
- MCP-003: Confused Deputy Attack detection (CWE-441, CRITICAL)
  - Detects tool handlers passing user input to privileged operations
  - Checks file I/O, network requests, subprocess without auth
- MCP-004: Prompt Injection Vector detection (CWE-74, HIGH)
  - Detects dynamic strings in tool decorator descriptions
  - Detects user input concatenated into LLM prompt calls
- Auto-remediation suggestions:
  - `remediation` field added to Finding model
  - `--remediation` CLI flag to display fix guidance
  - New rules (MCP-003, MCP-004) include remediation guidance
- 69 new tests (278 total):
  - test_taxonomy.py (27 tests)
  - test_confused_deputy.py (15 tests)
  - test_prompt_injection.py (16 tests)
  - test_remediation.py (11 tests)

### Changed
- Version bumped to 0.4.0
- 24 security rules (was 22)

## [0.3.0] - 2026-03-17

### Added
- 7 new security rules (22 total):
  - SSRF-001: Server-Side Request Forgery (CWE-918)
  - FILE-001: Unsafe File Write with dynamic paths (CWE-73)
  - ERR-001: Missing error handling in tool handlers (CWE-755)
  - LOG-001: Sensitive data in log statements (CWE-532)
  - RES-001: Unbounded resource consumption (CWE-400)
  - MCP-001: MCP tool handler missing docstring (CWE-1059)
  - MCP-002: Direct environment access in tool handler (CWE-526)
- Baseline management for CI/CD (`--create-baseline`, `--baseline`)
- `--list-rules` flag to display all available rules
- `--quiet` flag for CI/CD (exit code only, no output on clean scan)
- `examples/vulnerable_server.py` demo file (26 findings, Grade F)
- CWE references on all 22 rules (was 9)

### Changed
- Output standardized to English
- Version bumped to 0.3.0
- 195 tests (was 132)

## [0.2.0] - 2026-03-17

### Added
- Confidence scoring for all findings (HIGH/MEDIUM/LOW)
- Configuration file support (`.mcpaudit.yml`)
- Type hints across all modules
- Rule enable/disable via config
- `--init` CLI command to generate default config
- `--config` CLI flag to specify config file path
- Path exclusion via config (`exclude_paths`)
- Severity threshold via config (`severity_threshold`)

### Changed
- Findings now include confidence level in all output formats
- HTML report shows confidence badges alongside severity
- Text output shows confidence tag per finding
- Version bumped to 0.2.0

## [0.1.0] - 2026-03-15

### Added
- Initial release with 15 security rules
- AST-based Python analysis
- CLI with text, JSON, and HTML output formats
- Pre-commit hook
- GitHub Actions workflow
- 84 comprehensive tests
