How to Stop Caveman Mode and Return to Normal Mode: Complete Guide

To stop Caveman mode, issue a command like "stop caveman", "turn off caveman", or "return to normal mode", which triggers the deactivation logic in src/hooks/caveman-mode-tracker.js to delete the .caveman-active flag file and restore verbose output.

Caveman mode persists for the entire session until explicitly disabled. According to the JuliusBrussee/caveman source code, the deactivation logic lives in the mode tracker hook and is documented in the rule files src/rules/caveman-openclaw-bootstrap.md and src/rules/caveman-activate.md. Understanding how to stop Caveman mode ensures you can switch back to normal, detailed responses when the terse "caveman" style is no longer needed.

How Deactivation Works in Caveman

When the agent receives a prompt, the hook defined in src/hooks/caveman-mode-tracker.js evaluates it for deactivation intents before checking activation triggers. This wantsOff block uses specific regex patterns to identify commands to stop Caveman mode. If a match is found, the hook calls recordModeChange to log the transition, deletes the hidden flag file .caveman-active (and its backup .caveman-active.prev), and stops emitting the "CAVEMAN MODE ACTIVE" reminder on subsequent prompts.

Because deactivation logic executes before activation logic, phrases like "turn caveman mode off" are correctly processed as exit commands rather than being re-armed by activation regexes.

Commands to Stop Caveman Mode

Direct Deactivation Commands

The most reliable method uses action verbs followed by "caveman". The regex /\b(stop|disable|deactivate|quit|exit|kill)\s+(the\s+)?caveman\b/ recognizes these patterns:

  • stop caveman
  • disable caveman
  • deactivate caveman
  • quit caveman
  • exit caveman
  • kill caveman

Normal Mode Commands

You can request a return to standard behavior using phrases targeting "normal mode". The regex /^(please\s+)?(go\s+|back\s+to\s+|switch\s+(back\s+)?to\s+|return\s+to\s+)?normal\s+mode\b/ ensures the phrase is interpreted as a command rather than a generic statement (e.g., it will not fire for "how do I exit vim normal mode"). Valid variations include:

  • normal mode
  • go back to normal mode
  • return to normal mode
  • switch to normal mode
  • please go back to normal mode

Additionally, saying normal mode in conjunction with the word caveman (e.g., "normal mode caveman") triggers deactivation via the combined regex checking for /\bnormal\s+mode\b/ and /\bcaveman\b/.

Turn-Off Phrases

Specific phrasing using "turn off" matches the pattern /\bturn\s+off\s+(the\s+)?caveman\b/:

  • turn off caveman
  • turn off the caveman

Slash Commands

For OpenCode integration documented in src/plugins/opencode/commands/caveman.md, use the slash command with an off or stop argument:

/caveman off
/caveman stop

The slash-command parser treats these arguments as special cases that write the flag file with off, which the hook then processes to remove the activation status.

What Happens When You Deactivate

Once a supported trigger is detected, the deactivation sequence executes in three steps:

  1. Logs the transition: Calls recordModeChange to document the mode switch.
  2. Removes flag files: Deletes .caveman-active and .caveman-active.prev from the session storage.
  3. Restores output: Stops emitting the terse "CAVEMAN MODE ACTIVE" header and returns to normal, verbose response generation.

Code Examples

Here are practical interactions showing how to stop Caveman mode:

User → stop caveman
Agent → (switches back to normal style)

User → normal mode
Agent → (returns to normal, verbose output)

User → turn off caveman
Agent → (mode disabled)

User → /caveman off
Agent → (mode disabled)

User → /caveman stop
Agent → (mode disabled)

User → please go back to normal mode
Agent → (mode disabled)

Summary

  • Caveman mode is session-persistent and requires explicit deactivation commands to return to normal output.
  • Deactivation logic resides in src/hooks/caveman-mode-tracker.js and processes wantsOff intents before activation checks.
  • Valid commands include "stop caveman", "disable caveman", "turn off caveman", "normal mode", and slash commands /caveman off or /caveman stop.
  • Mechanism: The hook calls recordModeChange, deletes .caveman-active and .caveman-active.prev, and ceases the terse reminder emissions.
  • Precedence: Deactivation logic runs before activation logic, preventing ambiguous phrases from re-arming the mode.

Frequently Asked Questions

Does Caveman mode time out automatically?

No. According to the source code in src/hooks/caveman-mode-tracker.js, Caveman mode remains active for the entire session until the user explicitly issues a deactivation command. There is no automatic timeout or idle disconnection feature.

Can I reactivate Caveman mode after stopping it?

Yes. Once you stop Caveman mode by deleting the .caveman-active flag, you can reactivate it using the activation commands defined in src/rules/caveman-activate.md, such as "start caveman" or "activate caveman". The activation logic runs after deactivation checks, so you can toggle between states freely.

Why does "normal mode" not work in some contexts?

The phrase "normal mode" only triggers deactivation when it matches the command regex /^(please\s+)?(go\s+|back\s+to\s+|switch\s+(back\s+)?to\s+|return\s+to\s+)?normal\s+mode\b/. This pattern specifically excludes generic references like "vim normal mode" or "how do I enter normal mode" by requiring the phrase to appear at the start of the prompt or be preceded by specific turn-back verbs.

Where is the deactivation logic implemented?

The core deactivation logic is implemented in the wantsOff block within src/hooks/caveman-mode-tracker.js. This file handles pattern matching, flag file deletion (.caveman-active and .caveman-active.prev), and logging via recordModeChange. Documentation for the command language is maintained in src/rules/caveman-activate.md and src/rules/caveman-openclaw-bootstrap.md.

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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →