# Better-Than-Stock CLI Tools for AI Coding Agents on macOS

> Source: <https://gist.github.com/kibotu/4788d83f00f0a3991f51a043492fa8dd>
> Published: 2026-07-10 15:18:03+00:00

macOS ships `grep`

, `find`

, and `cat`

— decades-old, POSIX-correct, and worse choices than the modern replacements once an LLM is the one calling them. Three reasons that's true, not just aesthetic preference:

**Context economy.** ripgrep and fd skip`.git`

,`node_modules`

, and build output by default and print compact`file:line:match`

results.`grep -r`

/`find`

without carefully hand-tuned exclusions dump everything, and every irrelevant line an agent reads is context it paid for and now has to reason past.**Fewer wasted round trips.** Models are trained on a decade of GitHub, Stack Overflow, and blog content where these newer tools are increasingly the default. They emit correct`rg`

/`fd`

/`jq`

flags on the first try more reliably than the equivalent`find -exec grep`

or`awk`

incantation — a failed command is a full extra turn burned on repair, not just a lost second.**Structured output.**`jq`

/`yq`

hand back parseable slices of JSON/YAML instead of a blob the model has to re-derive values from by eye, which is slower and more error-prone than it looks.

None of this requires the model to have been fine-tuned on any specific tool. It only requires the tool to be on `$PATH`

— every harness below either bundles ripgrep itself or falls back to whatever it finds, and all of them will reach for a better tool over a worse one if you give them the choice.

**ripgrep is the one tool with actual vendor backing**— Claude Code and Codex CLI bundle it and are documented to prefer it over`grep`

; everything else below is*unofficial*: no vendor documents it, but it's what a model reaches for when it's on`$PATH`

.- Install the replacements once, globally, and stop thinking about it — see
[copy-paste](https://gist.github.com/starred.atom#copy-paste). - Node.js 22+ is the real gatekeeper for actually running these harnesses (separate from the tools they call) — Claude Code, Codex CLI, and Qwen Code all need it.
- For open-weight models, DeepSeek and GLM/Zhipu don't have a verified first-party terminal agent as of this research pass — see
[below](https://gist.github.com/starred.atom#the-open-weight-column-is-thinner-than-it-looks).

| Tool | Replaces | Status | Why it's worth it for an agent loop | Install |
|---|---|---|---|---|
`rg` ) |

`grep`

**Confirmed**— Claude Code's`Grep`

tool is *built on*ripgrep (its own syntax, not POSIX regex) and bundles a binary per-platform; Codex CLI bundles/depends on it too and has a documented crash history (`spawn rg ENOENT`

) without it. Qwen Code's Homebrew formula pulls it in as a dependency.`.gitignore`

-aware, compact match output — the single biggest context-economy win on this list`brew install ripgrep`

[fd](https://github.com/sharkdp/fd)`find`

`.gitignore`

-aware, compact-output logic as ripgrep, and it's what a model defaults to over `find -exec`

chains when it's present`find`

+`grep`

+`xargs`

often needs for the same result`brew install fd`

[jq](https://jqlang.github.io/jq/)`gh api`

/HTTP responses into a structured slice instead of a blob the model re-derives values from by eye`brew install jq`

[tree](https://formulae.brew.sh/formula/tree)`find`

/ `ls -R`

`$PATH`

`ls`

/`find`

`brew install tree`

[bat](https://github.com/sharkdp/bat)`cat`

*you*review what the agent touched, not the agent itself`brew install bat`

[fzf](https://github.com/junegunn/fzf)`brew install fzf`

[git](https://git-scm.com)`brew install git`

[gh](https://cli.github.com)`brew install gh`

Language toolchains follow the same logic once you're inside a specific stack — `uv`

/`ruff`

for Python, whatever your repo needs. No vendor documents shelling out to a specific linter; they call whatever's on `$PATH`

if you tell them to.

| Assistant | Vendor | Runtime prereq | Install (Homebrew) | Alternative install |
|---|---|---|---|---|
Claude Code |
Anthropic | Node.js (native installer avoids needing it yourself) | `brew install --cask claude-code` (stable) / `claude-code@latest` |
Native installer (curl script) |
Codex CLI |
OpenAI | None strictly required — standalone binary | `brew install --cask codex` |
`npm install -g @openai/codex` or `curl -fsSL https://chatgpt.com/codex/install.sh | sh` |
Qwen Code |
Alibaba | Node.js ≥ 22 (npm path only) | `brew install qwen-code` (homebrew/core, prebuilt bottle, pulls in Node + ripgrep) |
`npm install -g @qwen-code/qwen-code@latest` or standalone install script |
MiMo Code |
Xiaomi | Inherits
|

`curl -fsSL https://mimo-code.xiaomi.com/install.sh | sh`

Codex CLI additionally sandboxes its shell tool (Seatbelt on macOS) and disables outbound network by default — worth knowing before debugging why `curl`

"hangs" inside it.

Sources: [Claude Code setup docs](https://code.claude.com/docs/en/setup), [OpenAI Codex CLI repo](https://github.com/openai/codex), [Qwen Code repo](https://github.com/QwenLM/qwen-code), [Qwen Code docs](https://qwenlm.github.io/qwen-code-docs/en/users/overview/), [XiaomiMiMo/MiMo-Code](https://github.com/XiaomiMiMo/MiMo-Code).

**Qwen Code** (Alibaba) is the strongest entry here — a proper terminal agent with its own repo, docs, MCP/LSP/Plan Mode support, and a real Homebrew formula. Requires Node ≥ 22 for the npm path (Ink 7 + React 19 need it); the standalone script and brew formula sidestep that.

**MiMo Code** (Xiaomi) is honest about not reinventing the wheel: its own README states it's "built as a fork of OpenCode," adding persistent memory, subagent orchestration, and autonomous goal-driven loops on top of OpenCode's existing provider/TUI/LSP/MCP/plugin architecture. If you already run OpenCode, MiMo Code is closer to a feature branch than a new tool.

**DeepSeek and GLM/Zhipu**: no verified official first-party terminal coding agent turned up for either in this research pass — that's a real gap in what's documented publicly, not a claim that one doesn't exist. In practice, both model families are typically driven through third-party or generic harnesses (OpenCode, Aider, Crush, Cline/Roo) rather than a vendor-branded CLI. One thing worth flagging with an explicit confidence caveat: as of my last verified (pre-mid-2026) knowledge, Zhipu marketed GLM models as Anthropic-API-compatible specifically so you could point **Claude Code itself** at a GLM endpoint via `ANTHROPIC_BASE_URL`

— if that's still true, the "tool to install" for GLM is just Claude Code again. I did not reconfirm this in the current research pass, so treat it as a lead to verify, not a fact to build on.

```
# Core, vendor-relevant
brew install ripgrep git gh

# Power-user layer (optional, but pays for itself)
brew install fd jq fzf bat tree

# Pick your assistant(s)
brew install --cask claude-code   # Anthropic
brew install --cask codex         # OpenAI
brew install qwen-code            # Alibaba (open-weight)
curl -fsSL https://mimo-code.xiaomi.com/install.sh | sh   # Xiaomi (open-weight)
```

- Findings for
**Claude Code** and**Codex CLI** are backed by official docs, official repos, and live GitHub issues — highest confidence in this file. **Qwen Code** is backed by its own repo and docs — high confidence.**MiMo Code**'s fork relationship is confirmed by its own README; its exact tool-shelling conventions (does it bundle`rg`

the way Claude Code/Codex do, or just call system`rg`

?) were not independently verified.**DeepSeek** and**GLM/Zhipu** produced no verifiable claims about an official coding CLI — an evidence gap, not a negative finding.- Several specific "here's the exact required tool list" claims from blog sources were checked and
**refuted**— that framing doesn't hold up against what vendors actually document, which is why everything but ripgrep above is labeled unofficial rather than required. - This snapshot is dated
**2026-07-10**, after this assistant's own January 2026 training cutoff — everything above came from live verification this session, not memorized knowledge. Re-check before relying on it months out; this space moves fast.

[Claude Code — Advanced setup](https://code.claude.com/docs/en/setup)[Claude Code — Tools reference](https://code.claude.com/docs/en/tools-reference)[Claude Code — Permissions](https://code.claude.com/docs/en/permissions)[anthropics/claude-code — GitHub issue #6415](https://github.com/anthropics/claude-code/issues/6415)[openai/codex — GitHub repo](https://github.com/openai/codex)[openai/codex — AGENTS.md](https://github.com/openai/codex/blob/main/AGENTS.md)[OpenAI Codex CLI docs](https://developers.openai.com/codex/cli)[openai/codex — issue #10390 (sandbox network)](https://github.com/openai/codex/issues/10390)[OpenAI — Agent approvals & security](https://learn.chatgpt.com/docs/agent-approvals-security)[QwenLM/qwen-code — GitHub repo](https://github.com/QwenLM/qwen-code)[Qwen Code docs — Overview](https://qwenlm.github.io/qwen-code-docs/en/users/overview/)[XiaomiMiMo/MiMo-Code — GitHub repo](https://github.com/XiaomiMiMo/MiMo-Code)[ripgrep vs grep — benchmarks and why AI agents use rg](https://dev.to/rahulxsingh/ripgrep-vs-grep-performance-benchmarks-and-why-ai-agents-use-rg-1716)
