caveman-shrinkBLOCK
🪨 why use many token when few token do trick. Viral skill + proxy for coding agents that cuts 65% of tokens by talking like a caveman.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Caveman make your AI agent say less and read less. Code stay exact. Brain still big.
33.2% fewerinput tokens through the proxy54 Claude Code runs, 18 of 18 answers right 129.8× smallerweb pages for the agentcaveman browse vs a Playwright snapshot 1.4 to 2.4× cheaperwith caveman-style outputAdobe Research, eight models
Cited by [Adobe Research](https://arxiv.org/abs/2606.24083) · A/B tested by [JetBrains](https://blog.jetbrains.com/ai/2026/07/speak-to-ai-agents-like-cavemen-tosave-tokens/) · Remade for Elasticsearch on [Elasticsearch Labs](https://www.elastic.co/search-labs/blog/elastic-caveman-ai-token-reduction) #1 on Hacker News · #1 on GitHub Trending · "No way this actually works." ThePrimeagen
**[How it talks](#how-caveman-ta
ffbca449c090OBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add caveman-opencode-plugin --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env ANTHROPIC_AUTH_TOKEN=${ANTHROPIC_AUTH_TOKEN} --env AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} --env AWS_BEARER_TOKEN_BEDROCK=${AWS_BEARER_TOKEN_BEDROCK} -- npx -y [email protected]{
"mcpServers": {
"caveman-opencode-plugin": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
"ANTHROPIC_AUTH_TOKEN": "${ANTHROPIC_AUTH_TOKEN}",
"AWS_ACCESS_KEY_ID": "${AWS_ACCESS_KEY_ID}",
"AWS_BEARER_TOKEN_BEDROCK": "${AWS_BEARER_TOKEN_BEDROCK}"
}
}
}
}Exposed tools (23)
19 read · 4 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
Edit | write | Edit a file after reading it in this session. |
always | read | mandatory |
always2 | read | mandatory |
caveman_context | read | Read connected identity, accessible projects, and selected project. Never returns tokens or provider secrets. |
caveman_delegate | write | Run a bounded, mechanical subtask (search, test run, log triage, bulk edit) in a token-efficient worker agent and return its report. Prefer this over spawning a subagent for bounded mechanical work. |
caveman_experiment_get | read | List experiments or read experiment detail/results. Read-only. |
caveman_plan | read | Read ranked Cave Plan. Headline values are inferred per-day rates, never verified savings. |
caveman_report | read | Read one aggregate report. Keeps provider-list-price cost, inferred headroom, and verified savings separate. |
caveman_retrieve | read | host tool |
caveman_trace_get | read | Read selected-project trace metadata plus payload-stripped spans. Prompt, completion, tool, attribute, and event content is excluded. |
caveman_trace_search | read | Search trace metadata and aggregate evidence. Payload content remains excluded. |
do_thing | read | Detailed tool description for OpenAI chat fixture. |
fail | read | Fail |
fetch_order | write | Fetch order details by order ID |
get_weather | read | The function returns the current weather for a city. |
lazy | read | lazy loaded |
lazy1 | read | lazy |
lazy2 | read | lazy |
lookup | read | Look up one account. |
read | read | Read |
safe | read | safe |
search_customers | read | Search customers by name or email |
send_email | write | Sends an email to a given recipient. |
Trust audit
BLOCKgrade F · trust 41/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | FAIL |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (10 observation(s))
- Network
- declared (14 observation(s))
- Shell
- declared (10 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
payload.go
func (d *CDPDriver) Eval(ctx context.Context, expression string) (any, error) {func (nilDriver) Eval(context.Context, string) (any, error) { return nil, context.Canceled }Eval(ctx context.Context, expression string) (any, error)
if _, err := exec(fmt.Sprintf(statement, strings.Join(in, ",")), args...); err != nil {defaultIMDSBase = "http://169.254.169.254"
netip.MustParseAddr("169.254.169.254"),return fmt.Errorf("awscreds: refusing plaintext IMDS endpoint at host %q (allowed: loopback, 169.254.169.254, fd00:ec2::254)", u.Hostname())"--telemetry", "--debug", "--bare", "--safe-mode", "--insecure", "--chat-recording",
config.ConnConfig.TLSConfig.InsecureSkipVerify = false
fallback.TLSConfig.InsecureSkipVerify = false
caveman.skill
atlas-codepoints.bin.gz
atlas-offsets.bin.gz
atlas-pixels.bin.gz
atlas-wideflags.bin.gz
http = importlib.import_module(name)
if isinstance(model, getattr(importlib.import_module(module), name)):
if isinstance(model, getattr(importlib.import_module(module), name)):
"That's React's default behavior. When a parent re-renders, React re-renders every child it renders, whether or not the child's props changed. React doesn't compare props unless you ask it to.\n\n**To
func withKeepalive(next http.Handler, beacon func()) http.Handler {beacon()
gateway = f"http://127.0.0.1:{port}"endpoint := "http://127.0.0.1:" + strconv.Itoa(port)
"data": "iVBORw0KGgoAAAANSUhEUgAABiAAAALQCAIAAACWoC/QAAAxF0lEQVR4nO3dUW7kRrJAUS3C3/YevAZhtlRemPdXr0GCxchIMquolNohvXNhDHiSKTYlNQaDGLL8dpckSZIkSZImevuvb0CSJEmSJEnfOwMmSZIkSZIkTWXAJEmSJEmSpKl+34Dpj3/+fnr
Gates applied: no_behavioural_pass.
ffbca449c090full audit observations/trust-audit/mcp-server/juliusbrussee__caveman.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | ffbca449c090 | BLOCK | F | 41 | first audit |
Questions
What is the caveman-shrink MCP server?
🪨 why use many token when few token do trick. Viral skill + proxy for coding agents that cuts 65% of tokens by talking like a caveman.
What tools does caveman-shrink expose?
23 in total: 19 read-only, 4 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is caveman-shrink safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (41/100) and found 11 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does caveman-shrink need?
It reads ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, AWS_ACCESS_KEY_ID, AWS_BEARER_TOKEN_BEDROCK, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN, CAVEMAN_BINARY_SIGNING_PRIVATE_KEY_PEM, CAVEMAN_LEARN_NUDGE_TOKEN, CAVEMAN_MAX_OUTPUT_TOKENS, CAVEMAN_TELEMETRY_TOKEN_READ_TIMEOUT_MS, CAVE_API_KEY and CAVE_NO_KEYCHAIN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How current is this page?
The grade is for one exact copy of the source (ffbca449c090), read on 2026-10-12. The repository is watched and re-audited when it changes.