Caveman 2.5.0 closes this week's issue and PR queue, drops the standalone cache engine from the repository, and ships a fail-closed fix for proxy-port takeover.
Highlights:
- Security: a wrap that finds a listener on the proxy port it did not start and cannot verify now launches the agent directly, so provider keys never go to a foreign process (#945).
- Qwen Code and Kilo Code wraps refuse extension, ACP, session-restore, control-command, daemon, and console surfaces that could carry model traffic outside the locked route.
- Standalone proxies prove MCP recovery from the request's own tool list, so subscription sessions compress without a wrap (#908).
- Provider-native cache optimizers and the breakpoint planner default on in optimization modes; explicit off still wins.
- caveman-compress validates each candidate in a staging file before touching the live file (#544, #938) and tolerates a leading tool_use block.
- caveman-stats counts each multi-block response once (#793, #794).
- Claude Code Remote Control is documented as incompatible with a proxied base URL and launches direct under wrap (#947).
- README rewritten around measured savings with static charts rendered from the committed benchmark table.
- cacheengine/ removed from this repository.
Artifacts:
- CLI:
npm install -g @caveman-ai/cli@1.3.2(npm publish pending) - Signed binaries: bin-v1.1.5 (built by CI from this tag)
Validation:
- Full CLI suite locally: 943 tests, 942 passed, 18 skipped; the one failure is the raw-wrap base-URL test on a machine whose own caveman proxy already holds port 8787, which the new fail-closed path treats as unverifiable.
- Go proxy suite green except the pre-existing learn_retro store failures, unchanged from v2.4.0.
- verify_repo, Python, hook, and installer pin tests green.