v2.7.0

Released June 9, 2026 · View on GitHub →

A batch of review tooling: YAML review config, a codeep hook install pre-commit reviewer, codeep review --rules to list rule ids, and an opt-in codeep review --ai second opinion. Plus fixes: compiled binaries report the real version (no more "vunknown"), ACP editor sessions no longer mutate the global confirmation setting, and keychain-fallback keys get swept into the keychain once it's available.

Added

supported alongside .codeep/review.json (YAML preferred when present). Single-quoted YAML keeps regex backslashes literal (pattern: '\bfoo\('), avoiding JSON's double-escaping. Same schema; format is auto-detected.

that runs codeep review --fail-on <level> on your changes, blocking the commit when issues at/above the threshold are found (honors .codeep/review.*, no API key). codeep hook uninstall removes it; Codeep never overwrites a hook it didn't create.

put in disable in .codeep/review.*) and exits.

provider for a contextual second opinion, merged into the report as a clearly tagged advisory section. Needs an API key (degrades to deterministic-only without one) and never affects the exit code — the deterministic review stays authoritative, so CI (the GitHub Action) is unchanged.

Fixed

API keys fell back to plaintext config. They're now swept into the keychain automatically once it becomes available (completes the 2.5.2 key-storage work).

vunknown" because they read the version from package.json, which isn't on disk in a compiled binary. The version is now baked in at build time, so --version is correct everywhere (npm, Homebrew, and the standalone binaries).

sessions used to flip the global agentConfirmWriteFile config and restore it non-atomically around each prompt — which could leak the session's mode into the terminal app and race when prompts overlapped. Write/edit confirmation is now scoped to the run via a per-call option, with no global config mutation.

Downloads

Install with npm install -g codeep@2.7.0 or brew install vladoivankovic/codeep/codeep.