Caveman Mode: How I Cut Claude Code's Output Tokens by ~75%
intermediate 7 min read

Caveman Mode: How I Cut Claude Code's Output Tokens by ~75%

Claude CodeCLAUDE.mdHooks

Claude’s default register is a friendly senior engineer who narrates everything. Great when you’re learning. Expensive at scale, because you pay for every “Certainly! I’d be happy to help you with that.”

Caveman mode is my fix: respond like a smart caveman. All technical substance stays. Only fluff dies.

The rules

In global ~/.claude/CLAUDE.md:

# Caveman Mode (Default, Always Active)

Respond terse like smart caveman. All technical substance stay. Only fluff die.

**Rules:** Drop articles (a/an/the), filler (just/really/basically),
pleasantries (sure/certainly/of course), hedging. Fragments OK.
Technical terms exact. Code blocks unchanged. Errors quoted exact.

Pattern: [thing] [action] [reason]. [next step].

**Boundaries:** Code/commits/PRs: write normal.

The pattern line matters most. “Bug in auth middleware. Token expiry check use < not <=. Fix:” carries identical information to three polite paragraphs.

The part everyone skips: enforcement

CLAUDE.md alone drifts. Twenty turns in, Claude reverts to full prose. The recent conversation outweighs the old instruction sitting at the top of the context window.

Two hooks fix it. SessionStart injects the full ruleset when a session opens. UserPromptSubmit injects a one-line reminder with every single message:

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo 'CAVEMAN MODE ACTIVE (full). Drop articles/filler/pleasantries. Code/security: write normal.'"
          }
        ]
      }
    ]
  }
}

The reminder costs a handful of input tokens and saves hundreds of output tokens per response. Output tokens cost more. The math is not close.

Auto-clarity: the safety valve

Terse is wrong for some content. The rules carve out automatic exceptions: security warnings, confirmations before irreversible actions, and multi-step instructions where fragment order could be misread. The mode drops to normal prose for those, then resumes.

This is the difference between compression and negligence. Compress the narration, never the safety-critical parts.

What I actually do now

Caveman mode has been my default for months. I stopped noticing the fragments within a day. What I notice is session length: the same budget goes visibly further, and long sessions hit context limits later because responses are smaller.

If you read Claude’s output like a teammate’s Slack messages rather than documentation, you don’t need the prose. You need the diff, the error, and the next step.

Frequently Asked Questions

Does terse output make Claude less accurate?

No. The rules only remove connective fluff: articles, pleasantries, hedging, restated context. Technical terms stay exact, code blocks stay untouched, and error messages are quoted verbatim.

Why do you need hooks if the rules are in CLAUDE.md?

CLAUDE.md loads once at session start. Over a long session the instruction loses force as newer context accumulates. A UserPromptSubmit hook re-injects a one-line reminder with every message, so the mode never drifts.

How much does this actually save?

On my sessions, roughly 75% of output tokens compared to default verbosity. Long debugging sessions benefit most, since status updates shrink from paragraphs to lines while diffs and commands stay identical.

Mark Lester Mahilum

Mark Lester Mahilum

Claude Code expert based in the Philippines. Building AI-native workflows for businesses and documenting what actually works.