What’s New

caveman v1.9.1

v1.9.1

v1.9.1 — 65%, honestly

Added
  • New limit-headroom meter in /caveman-stats for subscription users to view session budget saved at a glance
  • Documentation in docs/HONEST-NUMBERS.md explaining exactly when caveman saves tokens and when it costs them
  • Hermes Agent support with symmetric install/uninstall operations verified against real Hermes installs
  • Per-agent Cavecrew model overrides to pin each cavecrew subagent to the desired model
  • Claude Code now discovers slash commands via shipped commands/*.md and caveman-stats.toml files
Changed
  • Headline savings is now a flat 65% everywhere, measured as average output-token reduction vs default verbose replies across a 10-prompt benchmark
  • Output-reduction line in /caveman-stats is now labeled as output reduction instead of as a share of usage/quota
Fixed
  • Session token stats in /caveman-stats are now attributed to the mode that was active when each message happened, preventing mid-session mode changes from rewriting historical session math
  • Natural-language triggers no longer misfire and one-shot modes stay one-shot
  • mode-tracker now survives a broken stdin instead of hanging or crashing
  • SessionStart SKILL.md path off-by-one error fixed so the ruleset injects reliably
  • spawn ENOENT is now treated as a failure instead of reporting a fake successful install
  • No more EXDEV crash installing the Claude plugin across devices/filesystems by falling back to copy when rename cannot cross a mount
  • JSONC settings.json reader is now string-aware and no longer mangles trailing commas inside string values
  • install.ps1 now works when piped to iex
  • Uninstall now matches managed hook basenames instead of a loose substring to prevent stripping the wrong entry
  • caveman-init no longer requires a caveman checkout and runs standalone
  • opencode --force now migrates a legacy AGENTS.md instead of wiping it
  • OpenClaw SOUL.md data-loss issue fixed where a stray or half-present caveman marker could delete user content on next install/uninstall
  • caveman-shrink spawn-options.js now ships in the published tarball

A maintenance + honesty release. 50 changes since v1.9.0, mostly hook, installer, and integration hardening, plus a full pass on how caveman states its savings number. Installs stay pinned + integrity-checked; this tag now ships cavecrew-model-overrides.js in the hook manifest so the curl|bash fallback path installs cleanly.

Honest numbers, one number
  • Headline savings is now a flat 65% everywhere (#234). We retired the ~50-65% range and the ~75% claim that still lived on the docs site. 65% is the measured average output-token reduction vs default verbose replies across the committed 10-prompt benchmark (range 22–87%) — output tokens only. README, all plugin/extension manifests, the skill descriptions, the per-repo rule frontmatter, and the GitHub Pages site now agree.
  • /caveman-stats stops mislabeling savings (#601, and the budget-% fix). Session token stats are now attributed to the mode that was active when each message happened, so a mid-session /caveman ultra no longer rewrites the whole session's math. The output-reduction line is labeled as output reduction — not as a share of your usage/quota.
  • New limit-headroom meter in /caveman-stats for subscription users — session budget saved at a glance.
  • docs/HONEST-NUMBERS.md documents exactly when caveman saves tokens and when it costs them (#145, #550, #506). If caveman is net-negative for your workload, that page tells you to turn it off.
Hooks
  • Natural-language triggers stop misfiring and one-shot modes stay one-shot (#598, #599). /caveman-commit / -review / -compress no longer stick as a persistent mode.
  • mode-tracker survives a broken stdin — an error on the stdin stream no longer hangs or crashes the hook (#538).
  • SessionStart SKILL.md path off-by-one fixed (#587, #589) so the ruleset injects reliably.
Installer
  • Hermes Agent support — install/uninstall are symmetric and verified against a real Hermes install (#524).
  • Per-agent Cavecrew model overrides (#521) — pin each cavecrew subagent to the model you want.
  • spawn ENOENT is now treated as a failure, not a success (#592) — a missing binary no longer reports a fake successful install.
  • No more EXDEV crash installing the Claude plugin across devices/filesystems — falls back to copy when rename can't cross a mount (#585).
  • JSONC settings.json reader is string-aware (#595) — a trailing comma inside a string value is no longer mangled during the merge.
  • install.ps1 works when piped to iex (#565), and uninstall matches managed hook basenames instead of a loose substring so it can't strip the wrong entry (#593).
  • Claude Code discovers the slash commandscommands/*.md and caveman-stats.toml now ship so /caveman, /caveman-stats, etc. register (#571, #470).
  • caveman-init no longer needs a caveman checkout — the per-repo rule writer runs standalone (#603).
Integrations
  • opencode --force migrates a legacy AGENTS.md instead of wiping it (#594).
  • OpenClaw SOUL.md data-loss fixed — a stray or half-present caveman marker can no longer chain into deleting user content on the next install/uninstall (#596).
caveman-shrink (npm MCP middleware)
  • spawn-options.js now ships in the published tarball (#597) — the package was importing a file it didn't include.
  • Nested protected-segment sentinels restored (#444) — documents with adjacent/nested protected regions round-trip through compress without losing or duplicating content.
/caveman-compress
  • Build files and scripts are never classified as prose (#600) — package.json, Makefile, and shebang scripts won't get rewritten into caveman prose.
Repo standards & docs
  • Added SECURITY.md, CODE_OF_CONDUCT.md, .editorconfig.
  • Security/privacy docs: an explicit no-telemetry statement and notes on scanner warnings (#347, #504, #383, #28).
  • benchmarks/run.py reads only ANTHROPIC_API_KEY from .env.local (#528).

Known follow-ups (non-blocking, tracked for a later release)
  • NL activation: a negated phrase like "I don't want caveman" can still toggle the mode on; self-correcting with "stop caveman."
  • /caveman-stats savings estimate can skew when two Claude Code sessions run in different modes under the same config dir (shared mode log).
  • /caveman-compress shebang guard doesn't catch a shebang script that also carries a .txt/.rst extension.
  • The ultra-mode examples in skills/caveman/README.md still show abbreviations/arrows that the current ultra rule drops — cosmetic doc drift.

Full changelog: https://github.com/JuliusBrussee/caveman/compare/v1.9.0...v1.9.1

View original