Session scope: operator-directed install of the caveman Claude Code plugin (third-party, JuliusBrussee/caveman) plus guards so it never auto-arms while operating the cloud. Harness-config only -- NO cloud mutation, NO script/runbook change, no status implication (CURRENT-STATE untouched). Kept as an available tool for future hardened-workflow deployment testing, where terse gated-approval-only output is wanted; verbose fully-gated output stays the default for live operations.
caveman@caveman at user scope (~/.claude/plugins/, git SHA 0d95a81) via claude plugin marketplace add + claude plugin install, per operator instruction. Purpose: terse "caveman-mode" output (~65% fewer output tokens, per its README).src/hooks/caveman-activate.js (SessionStart) and src/hooks/caveman-mode-tracker.js (UserPromptSubmit). Finding: purely behavioral -- NO network calls, NO credential-file access, NO exfiltration; the only subprocess spawned is the plugin's own stats script, and only on an explicit /caveman-stats. Default mode is full (auto-arms on session start unless guarded) -- the reason for item 2.claude plugin uninstall caveman@caveman; remove the extraKnownMarketplaces.caveman + enabledPlugins."caveman@caveman" keys from ~/.claude/settings.json..claude/settings.json: added an env block setting CAVEMAN_DEFAULT_MODE=off -- committed, so the intent is durable/shared for this operating clone. Effect: getDefaultMode() returns off, the SessionStart hook skips activation and clears any stale flag; an explicit /caveman lite|full|ultra still activates on demand. jq valid, repo-lint 0 fail / 1 legacy warn (unchanged).~/.claude/settings.json: same env entry added so the plugin is off-by-default in ALL of the operator's repos, not just this one (the plugin is installed user-wide; its bare default is full). This file is OUTSIDE the repo -- NOT committed here; recorded for provenance only.off is a valid mode (VALID_MODES in the plugin's caveman-config.js), so the guard is honored rather than silently ignored.env.CAVEMAN_DEFAULT_MODE key from whichever settings.json (repo revert via git revert <sha> for the committed one; hand edit for the user-level one). With the plugin still installed, removing the guard restores its full auto-arm default.