A few weeks before I wrote about hooks, I was already running one myself. Not one I'd written, though. Every git status, every npm test, every cargo build I ran through Claude Code was already being intercepted, filtered, and rewritten before it ever reached the model's context.

I'd installed it back in June, mostly out of curiosity, and never turned it off. Two months later it's just part of how Claude Code behaves on my machine, the same way rtk gain telling me how much output it trimmed this week is just part of my routine now.

The tool is called RTK, and it solves a problem I didn't fully appreciate until I stopped noticing it: most of what a coding agent reads back from your terminal is noise it has to pay for, in context space, on every single command. Not because the command failed, or because there's a bug to chase, but because that's just what terminals output for humans, and nobody had gone through and rebuilt each one specifically for a model to read instead.

What RTK actually does

RTK is a single Rust binary that sits between your shell and your agent. When Claude Code runs a Bash command, RTK intercepts the output, strips out what the model doesn't need, and hands back a compact version instead of the raw text. No daemon, no background service, no dependencies to manage. It's one static binary that adds under 10ms of overhead per call, which is low enough that I genuinely can't feel it in normal use.