Running Multiple Caveman Intensity Levels in One Session: How Persistence Works
Yes, you can switch between Caveman intensity levels freely within a single Claude Code session, and your chosen level persists for every subsequent response until you change it or end the session.
Caveman is a Claude Code skill that applies minimalist communication rules through configurable intensity levels. According to the JuliusBrussee/caveman source code, the system maintains session-wide persistence via a flag file, allowing you to toggle between lite, full, ultra, or Wen-Yan variants without restarting your chat.
How Caveman Stores Intensity Levels
Caveman persists your selected intensity level by writing to a flag file inside the Claude configuration directory. When you execute a /caveman <level> command, the activation hook in src/hooks/caveman-activate.js records the change and updates the flag file using two key functions:
// 1. Write flag file (symlink‑safe)
recordModeChange(claudeDir, mode);
safeWriteFlag(flagPath, mode);
The flag file location follows this pattern:
$CLAUDE_CONFIG_DIR/.caveman-active # default: $HOME/.claude/.caveman-active
This file contains the current intensity level as a plain string (e.g., lite, ultra, or full), which the system reads on each subsequent interaction.
Session Persistence Mechanics
Once activated, the intensity level remains active for every response in the current session. The skills/caveman/SKILL.md file explicitly documents this behavior:
"ACTIVE EVERY RESPONSE. No revert after many turns… Level persist until changed or session end."
The hook retrieves the current mode via getDefaultMode() (defined in src/hooks/caveman-config.js), ensuring the most recent setting applies to each new reply. If the flag file or skill definition cannot be read—such as in minimal installations—the system falls back to a built-in minimal ruleset that still preserves the persistence logic, maintaining consistent behavior across edge cases.
Switching Between Intensity Levels Mid-Session
You are not restricted to a single intensity level per session. Because the level is mutable, you can switch back and forth as needed. Each /caveman <new-level> command overwrites the flag file, and the next model reply immediately adopts the newly selected intensity table.
Example workflow:
# Start a Claude session (Caveman is off by default)
> Hello, how can I compress my React component?
# Turn on lite mode – this writes the flag file
> /caveman lite
CAVEMAN MODE ACTIVE — level: lite
...
# The next answer will be in lite style
> Why does my component re‑render?
lite: Your component re‑renders because you create a new object reference each render. Wrap it in `useMemo`.
# Switch to ultra mode in the same session
> /caveman ultra
CAVEMAN MODE ACTIVE — level: ultra
...
# Subsequent replies now use ultra style
> How can I improve DB connection pooling?
ultra: Pool reuse open DB connections. No per‑request handshake.
Inspecting and Debugging the Flag File
To verify which intensity level is currently active, you can inspect the flag file directly:
$ cat ~/.claude/.caveman-active
ultra # current intensity stored on disk
This is useful for debugging persistence issues or confirming that a mode switch succeeded before submitting your next query.
Summary
- Single storage location: The
.caveman-activeflag file in your Claude config directory stores the current intensity level. - Session-wide persistence: The level remains active for every response until explicitly changed or the session ends.
- Dynamic switching: You can run multiple Caveman intensity levels in one session by issuing
/caveman <level>commands at any time. - Fallback protection: If files are missing, the system defaults to a minimal ruleset while maintaining persistence logic.
Frequently Asked Questions
Can I use different intensity levels for different conversations in the same session?
No. Caveman operates on a session-wide scope. The intensity level stored in .caveman-active applies globally to all subsequent responses in your current Claude Code session. To use different styles for different tasks, you must switch levels using /caveman <level> before each query.
What happens if the flag file is deleted during a session?
If the flag file is deleted mid-session, the activation hook in src/hooks/caveman-activate.js triggers fallback logic. It uses a built-in minimal ruleset that preserves the persistence mechanism, though you may lose your specific intensity setting until you reissue a /caveman command.
How do I check which Caveman intensity level is currently active?
Inspect the flag file at $HOME/.claude/.caveman-active (or $CLAUDE_CONFIG_DIR/.caveman-active if customized). The file contains the plain-text name of the active level (e.g., lite, full, ultra). Alternatively, observe the model's response style—Caveman prefixes ultra and lite responses with their level identifier.
Does Caveman support custom intensity levels beyond lite, full, and ultra?
Yes. The system supports the Wen-Yan variants in addition to the standard lite, full, and ultra levels. You can activate any valid level defined in skills/caveman/SKILL.md using the /caveman <level> command, and the persistence mechanism handles them identically to the core levels.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →