Skip to main content
Claude Code

10 CLI Tools I Use Daily with Claude Code

The 10 CLI tools I actually use with Claude Code every day: tmux, lazygit, ripgrep, fzf, glow, jq and more, chosen for auditing what the agent did.

7 min
Read time
1,318
Words
Published
Last revised
Engr Mejba Ahmed

Written by

Engr Mejba Ahmed

Share Article

10 CLI Tools I Use Daily with Claude Code

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.

10 CLI Tools I Use Daily with Claude Code - overview of the three questions your terminal must answer, inspection: knowing what changed

The three questions your terminal must answer

During an agentic session you are continuously answering three questions, usually all at once:

  1. What did the agent just change?
  2. Where is the thing I need to look at?
  3. 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.

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.

Advertisement
Coffee cup

Enjoyed this article?

Your support helps me create more in-depth technical content, open-source tools, and free resources for the developer community.

Related Topics

Engr Mejba Ahmed

Engr Mejba Ahmed

Engr. Mejba Ahmed builds AI-powered applications and secure cloud systems for businesses worldwide. With 8+ years shipping production software in Laravel, Python, and AWS, he's helped companies automate workflows, reduce infrastructure costs, and scale without security headaches. He writes about practical AI integration, cloud architecture, and developer productivity.

Related Articles

Browse All

Comments

Leave a Comment

Comments are moderated before appearing.

Learning Resources

Expand Your Knowledge

Accelerate your growth with structured courses, verified certificates, interactive flashcards, and production-ready AI agent skills.

Sample Certificate of Completion

Sample certificate — complete any course to earn yours

Engr Mejba Ahmed

Engr Mejba Ahmed

AI assistant · trained on my work

👋

Hey there!

Quick Actions

WhatsApp Direct line to me

Chat on WhatsApp

+880 1723 741224 · Replies within the hour on working days

Popular Questions

Engr Mejba Ahmed is connected
Engr Mejba Ahmed is typing...
Engr Mejba Ahmed avatar

✉ Want me to follow up? Drop your email

Engr Mejba Ahmed avatar

📞 Connect Directly

Choose how you'd like to reach me

WhatsApp

+880 1723 741224

Email

mejba.13@gmail.com

✓ Details sent! I'll get back to you shortly.

Powered by OpenAI

335+

Blog Posts

25

AI Courses

63

Projects

Services & Expertise

Pricing & Process

Learning & Resources

Connect & Support