Every list of terminal tools for Claude Code users optimizes for the wrong thing. They pitch speed: navigate faster, type less, look cooler in screenshots. But when an AI agent is editing your codebase, your job quietly changes from writing code to verifying it, and the tools that earn a permanent slot are the ones that shorten the loop between "Claude did something" and "I know exactly what it did."
That is the filter behind this list. I work terminal-first on macOS with zsh, run my Laravel projects on Herd, and spend a large share of my day inside Claude Code sessions, including long batch runs that generate or modify dozens of files at a stretch. These ten tools survived that workflow. Everything here installs with Homebrew or ships with the system, and none of it is a novelty I tried for a week.

The three questions your terminal must answer
During an agentic session you are continuously answering three questions, usually all at once:
- What did the agent just change?
- Where is the thing I need to look at?
- Is what it produced actually correct?
Group one below is inspection, group two is navigation, group three is reading and verifying output. If a tool does not serve one of those questions, it did not make the list.
Inspection: knowing what changed
1. lazygit
The single highest-value install on this list. Run lazygit in your repo and you get a live terminal UI of status, staged changes, diffs, branches, and history. During a Claude Code session it becomes a real-time window into what the agent is doing to your working tree: file modifications appear as they happen, and reviewing a diff is two keystrokes instead of a git diff incantation.
brew install lazygit
The unexpected effect: lazygit made me commit more often during agent sessions. Watching changes accumulate creates a natural checkpoint rhythm, and frequent checkpoints make rollbacks cheap, which in turn lets me allow more aggressive refactors. That chain, visibility to checkpoints to confidence, is worth more than any individual feature.
2. tmux
tmux keeps terminal sessions alive independent of the window that spawned them. For Claude Code specifically that means a long-running session survives a closed terminal app, a dropped SSH connection, or an accidental Cmd+Q, and it is the backbone of running sessions you can reach from your phone, which I covered in the Remote Control guide.
brew install tmux
tmux new -s claude # detach: Ctrl+B then D, reattach: tmux attach -t claude
If you run agent sessions longer than a coffee break, tmux is not optional. It is the seatbelt.
3. btop
When a long session makes the laptop crawl, btop answers "what is actually eating the machine" in seconds: per-core CPU, memory by process, disk and network, one dashboard.
brew install btop
I once blamed Claude for a sluggish session that turned out to be a leaking npm process from a test run. btop settled the argument in ten seconds. Without visibility, the agent gets blamed for everything.
Navigation: getting there without thinking
4. zoxide
cd ~/Herd/some-project/resources/views/... typed in full, hundreds of times, is a tax. zoxide learns your directory habits so z views jumps straight to the right place, and zi gives you a fuzzy-searchable jump history.
brew install zoxide
# ~/.zshrc
eval "$(zoxide init zsh)"
With multiple client projects in flight, this is the difference between "check that other project quickly" being free and being friction.
5. fzf
Fuzzy-finding for everything: files, command history, branches. The killer binding is Ctrl+R replaced with fuzzy history search, which matters more in an agent workflow than you would expect, because half my shell usage during sessions is re-running verification commands from earlier.
brew install fzf
6. eza
A modern ls with git status baked into the listing. After Claude generates a batch of files, eza -l shows me instantly which files in a directory are new or modified without a separate git status round-trip.
brew install eza
# ~/.zshrc
alias ls='eza --icons --group-directories-first'
alias ll='eza -l --icons --group-directories-first'
alias lt='eza --tree --level=2'
lt in particular, a two-level tree, is my default "what did the agent scaffold" view.
Reading and verifying: the output side
7. ripgrep (rg)
The fastest code search there is, and there is a specific reason it belongs on a Claude Code list: Claude Code's own search tooling is built on ripgrep. Using the same engine yourself means when the agent claims "no other usages of this function exist," you can check that claim with the identical tool in one second:
brew install ripgrep
rg 'functionName' --type php
Trust, but verify, at ripgrep speed.
8. bat
cat with syntax highlighting and line numbers. When an agent says "I updated the middleware," bat app/Http/Middleware/Whatever.php gives me a readable eyeball-pass without opening the editor. Small upgrade, used fifty times a day.
brew install bat
9. glow
Renders markdown properly in the terminal: real headings, readable emphasis, formatted code blocks. My content pipelines have Claude producing long markdown files, and reviewing a 2,000-word generated draft in raw markdown is how formatting bugs slip through. In glow, they jump out.
brew install glow
glow draft.md
In my batch rewrite runs, the review loop is literally: glow for the markdown, lazygit for the diff, commit. That cycle takes under two minutes per file, and it used to take four or five.
10. jq
The JSON Swiss Army knife, and the tool that quietly became essential once my agent workflows matured. Structured pipelines produce structured artifacts: status manifests, per-item reports, backup files. jq turns "is the batch done" into a one-liner instead of opening files:
brew install jq
jq '[.[] | select(.status=="PENDING")] | length' REWRITE-STATUS.json
If your agent workflows do not produce JSON artifacts worth querying yet, that is a workflow gap more than a tooling one; my agent team guide explains why file-based state is what makes multi-agent runs auditable at all.
Honorable mentions, and what I deliberately left out
gh (GitHub's CLI) would be number eleven; every PR I ship starts as gh pr create from inside the session's repo. It misses the top ten only because it is a workflow of its own rather than a session tool. On the Laravel side, Herd's CLI and php artisan are so load-bearing for me that they do not feel like "tools" anymore, and if you build your own artisan commands, the new Laravel Prompts task primitives will make them dramatically nicer to watch during long runs.
What I left out on purpose: terminal eye-candy that duplicates what an agent already does better, and anything I could not still justify after a month of real use. Your terminal emulator matters too, though it is a separate decision; my notes on Ghostty with Claude Code cover that half. And if your instinct is to solve every gap with another MCP server instead, sometimes a fast Unix tool is the better answer; I keep the genuinely worthwhile servers to a short list in my must-have MCPs post.
Install three, not ten
The honest advice from someone who once installed twenty tools in an afternoon and kept using the same three as before: adoption beats acquisition. Start with lazygit, tmux, and glow. Those three change the texture of your next agent session immediately: you will see what changed, your session will survive accidents, and you will actually read what the model wrote. Add one more tool per week, only when you feel the specific gap it fills.
The developers running Claude Code well are not the ones with the biggest toolchain. They are the ones whose small toolchain is automatic.
The other half of a fast Claude Code loop is not tooling at all; it is the quality of the instructions you feed it. I keep my battle-tested prompt collection public, organized by task, in the prompt library. Steal from it; that is what it is for.