All notable changes to this project are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.1 (2026-06-08)
0.2.0 (2026-06-08)
- detect credentials in MCP endpoint URL query params (9131a9c)
- exit non-zero when a watched file is unreadable (65b0c06)
0.1.7 (2026-06-07)
0.1.6 (2026-06-07)
0.1.5 (2026-06-07)
0.1.4 (2026-06-07)
0.1.3 (2026-06-06)
- Quickstart installs the CLI globally (
npm i -g claude-ward) so theSessionStarthook, which callsclaude-ward, resolves onPATH. The previousnpx-only steps left the installed hook failing withcommand not found.
- Close loopback-repoint evasions: localhost detection now covers the whole
127.0.0.0/8range, trailing-dot hosts, and IPv4-mapped IPv6, via a shared host canonicalizer the rules and the allowlist agree on. - Make diff keys injective so a colliding decoy entry can no longer supply a fake "before" that suppresses a real CRITICAL finding.
install-hookno longer overwrites a malformedsettings.jsonand re-baselines only the hook line it wrote, instead of blanket-trusting every pending change.- Flag a credential file that becomes unreadable as a tamper rather than reading it as a logout; strip userinfo and query strings from stored URLs; write ward state owner-only.
- Detection for in-place
SessionStarthook rewrites (CRITICAL), bare MCP tool grants likemcp__server(MEDIUM), and more remote-exec forms (command substitution, pipe to an interpreter,nc -e). - Atomic, validated baseline reads/writes;
diffandwatchnow surface read warnings. - npm release workflow with provenance, a Node 20/22/24 CI matrix, and dependabot.
Changeis now a discriminated union keyed on category, removing unchecked casts across the rule engine.--versionis read frompackage.jsonso it cannot drift.
- Baseline, diff, and a deterministic rule engine over Claude Code's local config.
- Detection for: MCP endpoints repointed to localhost, pipe-to-shell /
base64 -dMCP commands, injectedSessionStarthooks, MCP hosts outside the allowlist, traffic-redirecting environment variables, credential-file tampering and permission loosening, obfuscated values (long base64/hex blobs, unicode homoglyphs in URLs), new marketplace sources and unknown-marketplace plugins, and broadened permission allow-lists. - CLI commands:
init,watch,scan,status,diff,approve,install-hook,uninstall-hook, with acwardalias. - Secret-safe baseline: the credential file and token-valued env vars are stored as SHA-256 hashes, never in plaintext.
- Desktop notifications via
node-notifierwith a terminal fallback.