[FEATURE] Add tool alias configuration for modern CLI alternatives

Resolved 💬 10 comments Opened Nov 25, 2025 by PaulRBerg Closed Feb 27, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

Many developers prefer modern CLI tools over legacy alternatives:

  • fd instead of find
  • rg (ripgrep) instead of grep
  • bat instead of cat
  • eza instead of ls

Currently, there's no easy way to configure Claude Code to automatically use these alternatives. Users must rely on workarounds like:

  1. Adding instructions to CLAUDE.md (soft guidance, not enforced)
  2. Creating custom PreToolUse hooks to block legacy commands
  3. Using permission deny rules (bypassable with prefix matching)

Additionally, piped commands like find ... | head still trigger permission requests even when both find and head are individually allowlisted, because piped commands are treated as a distinct security category.

Proposed Solution

Add a toolAliases configuration option in settings.json that automatically maps legacy tools to modern alternatives:

{
  "toolAliases": {
    "find": "fd",
    "grep": "rg",
    "cat": "bat",
    "ls": "eza"
  }
}

When Claude generates a command using find, it would automatically be translated to the equivalent fd syntax. This would:

  1. Be declarative and easy to configure
  2. Apply globally without per-project setup
  3. Handle the command translation automatically (not just block and suggest)

Alternative Solutions

  1. PreToolUse hooks: Works but requires Python scripting and manual setup
  2. CLAUDE.md instructions: Provides guidance but no enforcement
  3. Permission deny rules: Can block commands but doesn't suggest alternatives

Priority

Medium - Would be very helpful

Feature Category

Configuration and settings

Use Case Example

  1. User adds "toolAliases": { "find": "fd" } to ~/.claude/settings.json
  2. User asks Claude to "find all TypeScript files in src/"
  3. Claude generates fd -e ts src/ instead of find src/ -name "*.ts"
  4. No permission prompts, no hooks required, just works

Additional Context

Related issues:

This would align well with the growing trend of modern CLI tools that are faster, more user-friendly, and respect .gitignore by default.

View original on GitHub ↗

This issue has 10 comments on GitHub. Read the full discussion on GitHub ↗