That style is sometimes useful. It is not useful all the time. When you are deep in a known codebase and want to diagnose a failing test, inspect a diff, or make a narrow fix, the value is usually in four things: what the agent found, what it changed, how it verified the change, and what remains uncertain.
Caveman is a skill/plugin built around that distinction. It makes a coding agent communicate in short, direct language its deliberately rough “caveman-speak” while aiming to leave code, commands, and errors byte-for-byte intact. The project describes this as making the agent’s mouth smaller rather than its brain smaller.
The useful way to understand Caveman is not as a substitute for reasoning. It is an interface choice for the execution phase of work. A terse agent should still inspect the repository, follow the test suite, notice ambiguity, and say when evidence is missing. It simply should not pad a simple finding with social filler.
Compare these two reports:
“I’ve taken a look at the component and the reason it is re-rendering is likely because a new object reference is created during each render cycle. I recommend using useMemo to memoize that object.”
“New object ref each render. Inline prop = new ref = re-render. Wrap in
useMemo
.”
The second version is not appropriate for a design document. For a developer actively debugging a React component, however, it is easier to scan and easier to act on. The underlying technical claim is the same.
The Caveman repository says it works with Claude Code, Codex, Gemini, Cursor, Windsurf, Cline, Copilot, and other agent environments. It claims “65% fewer output tokens” and emphasizes that the saving applies to output, not input context. Treat that figure as the project’s own claim, not as an independent benchmark or a guarantee for every model and task.
That caveat matters. Token savings vary with the agent, the task, the amount of tool output, and the prompt. Still, the basic mechanism is sound: if an agent stops producing repetitive prose, it emits fewer tokens and consumes less attention.
Suppose CI says an authentication test has failed. You want the agent to locate the relevant middleware, compare the expiry condition with the test, fix the defect, and report the result. You do not need a tutorial on authentication on every turn.
A useful compact report is: “Expiry check uses <=
; test expects boundary valid. Changed to <
. Target tests pass. Risk: confirm API contract for exact expiry instant.” It retains the evidence and the unresolved risk.
During a tightly defined change, concise updates keep the human in the loop. Ask for a plan once, approve it, then request short progress reports. The agent can say which files changed, which tests ran, and whether it needs a decision. This is especially useful when you are reviewing diffs alongside the agent rather than delegating an entire feature.
Commands, build output, migration results, and test failures already contain a lot of text. Adding a long prose explanation around every command makes the signal harder to find. Caveman’s stated rule of leaving commands and errors unchanged is important here: compress the commentary, not the evidence.
After a review comment, the desired loop is often mechanical: inspect, decide whether the comment is valid, make a focused change, run validation. Terse reports help reviewers see the outcome without re-reading an essay.
Concise output can conceal uncertainty. Do not enable it blindly for the parts of engineering where nuance is the work.
Discovery and requirements: assumptions need to be stated, not compressed away.
Architecture: alternatives, constraints, and trade-offs deserve explicit comparison.
Security and privacy: threat models and residual risk require careful language.
Incident response: timelines, impact, and confidence levels must be precise.
Onboarding and teaching: the explanation is part of the deliverable.
The failure mode is not that short answers are inherently shallow. The failure mode is mistaking a short answer for a complete decision record.
Use a compact reporting contract. For example:
Work in concise mode.
Before edits: inspect relevant files and state the likely cause in 1–3 bullets.
After edits: list files changed, validation run, result, and remaining risk.
Ask before making an irreversible or scope-expanding decision.
This gives the agent permission to be brief while defining the minimum evidence you expect. “Concise” should never mean “silent about a failed test” or “quiet about an assumption.”
Split agent work into two modes. In decision mode, ask the agent to explore, explain, compare options, and surface uncertainty. In execution mode, once the approach is approved, use Caveman-style reporting to keep the loop fast.
Frame the task and constraints in normal language.
Ask for a short plan and acceptance checks.
Approve or revise the approach.
Switch to Ultra Mode for implementation.
Require exact tests, commands, and a final risk note.
Return to normal mode for a postmortem or architectural follow-up.
This avoids the false choice between a verbose agent and a reckless one. You can have a careful process and a compact execution interface.
The project documents broad agent support and provides install instructions for macOS, Linux, WSL, Git Bash, and Windows PowerShell. Its README says Caveman can be turned on with /caveman
or a request such as “talk like caveman,” and turned off with “normal mode.” Always use the repository’s current instructions for your particular agent harness; plugin conventions change quickly.
If your request is “make our billing system better,” terse mode will not make the request less ambiguous. First establish scope, owners, constraints, and measures of success.
A lower token count is useful only if it does not create more clarification rounds, missed constraints, or review burden. Measure cycle time and defect rate, not just output length.
Tell the agent that blockers and risks must remain explicit. A one-line warning is better than no warning; a short report is not permission to omit it.
Caveman Ultra Mode is most valuable when verbosity is the bottleneck and the work is already understood. It can reduce output overhead and make development status easier to scan. It cannot replace design, testing, or engineering judgment. Use it to make execution quieter not to make important thinking disappear.