Claude Code native tools bypass RTK hook — majority of token-heavy ops never reach Bash
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 81.1k
- Forks
- 5.1k
- Avg merge
- 4d 21h
- Merged PRs (30d)
- 35
Description
Problem
RTK's Claude Code hook intercepts only the Bash tool, but Claude Code has built-in native tools (Read, Grep, Glob, Edit, Write) that handle the majority of file and search operations without ever touching Bash.
Claude Code's system prompt explicitly instructs:
"Do NOT use the Bash to run commands when a relevant dedicated tool is provided."
- Read files →
Readtool (notcat/head/tail)- Search content →
Greptool (notgrep/rg)- Find files →
Globtool (notfind/ls)- Edit files →
Edittool (notsed/awk)
This means ~60% of the commands RTK is designed to compress (cat, grep, find, ls) never reach the Bash tool and are invisible to the RTK hook.
Evidence
On a real system with RTK 0.28.2 properly installed (hook v2, settings.json configured, RTK.md referenced):
rtk discoverreports 6,302 Bash commands in 7 days and claims 248K tokens saveable- But
rtk gainshows only 4 commands ever processed by RTK - The hook was installed and working correctly — the gap is because
rtk discoverscans Claude's JSONL logs and cannot distinguish between Bash tool calls and native tool calls, so it overestimates saveable tokens
Architecture mismatch
Claude Code Tool Routing:
┌─────────────┐
│ Read tool │──→ direct file read (no Bash, no hook, no RTK)
│ Grep tool │──→ direct ripgrep (no Bash, no hook, no RTK)
│ Glob tool │──→ direct glob (no Bash, no hook, no RTK)
│ Edit tool │──→ direct edit (no Bash, no hook, no RTK)
│ Bash tool │──→ hook fires ──→ RTK rewrites ✅
└─────────────┘
Impact
- RTK's headline claim of "80% savings across ~118K tokens per session" is significantly overstated for Claude Code users
rtk discovergives misleading savings estimates because it counts native tool usage as "missed Bash commands"- Users install RTK expecting large savings but see minimal impact, leading to confusion
What RTK still helps with (Bash-only commands)
gitoperations (status, diff, log, add, commit, push)ghCLI (pr, issue, run)npm run build/test,cargo test/builddockercommandscurl,ssh
These are real savings, but a fraction of the advertised total.
Suggestions
rtk discoveraccuracy: Filter out or flag commands that likely used native tools (Read/Grep/Glob) rather than Bash, so savings estimates are realistic- Hook non-Bash tools: Investigate intercepting
Read,Grep,Globtool calls via thePreToolUsehook to compress their outputs (differentmatcher+updatedInputschema) - Documentation: Clarify that Claude Code's native tools bypass RTK, and set realistic expectations for savings (git/gh/build/test commands only)
rtk gaincontext: Show estimated "reachable" vs "unreachable" commands so users understand why savings are lower thanrtk discoversuggests
Environment
- RTK 0.28.2 (Homebrew, macOS)
- Claude Code with Opus model
- Hook v2 (thin delegator), correctly installed and verified working
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the discrepancy between rtk discover and rtk gain using the reported Claude Code hook setup, then inspect the PreToolUse routing for Bash and native tools. Done means the reachable and unreachable command estimates are accurately distinguished, with the relevant Claude Code limitations documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100