Files
fish-config/docs/manual/08-components-reference/01-c1-command-shadows.md
T
rootiest 069a1f7743 docs(classification): move schema out of gitignored AGENTS/, into docs/
AGENTS/functions/CLAUDE.md is git-ignored local agent state, not part
of the repo -- a comment/commit referencing it as the schema's home
points contributors at a file they can't see. The canonical CLASSIFICATION
schema now lives at docs/function-classification-schema.md (tracked),
with CONTRIBUTING.md's existing function-header-conventions section
extended to introduce it, and the C1 shadow doc's pointer updated to
match. AGENTS/functions/CLAUDE.md keeps only a one-line pointer to the
tracked file instead of duplicating the definitions.
2026-09-21 21:26:47 -04:00

6.0 KiB

title
title
C1 — Command Shadows

Disabling __fish_config_op_aliases restores standard system behavior for all of these commands.

Command / Alias    Active behavior                       Disabled fallback
───────────────────────────────────────────────────────────────────────────
ls                 eza -l -a --icons --hyperlink          system ls
cat                bat syntax-highlighted; dirs → ls      /usr/bin/cat
cd                 zoxide frecency-based navigation        fish builtin cd
rm                 moves files to trash (recoverable)     command rm (permanent)
less               $PAGER → ov → less → more → cat       system less
du                 duf (disk overview) or dust (dir tree)  system du
top                btop resource monitor                  system top
ping               prettyping --nolegend animation        system ping
ssh                kitten ssh in Kitty terminal           system ssh
rg                 rg --hyperlink-format=kitty            system rg
mkdir              verbose path-tree display on creation  mkdir -p silently
bash               XDG bashrc + $SHELL reset on exit      system bash
cp / mv            forced -i confirmation prompt          cp / mv unmodified
wget               forced --continue (resume downloads)   system wget
grep/fgrep/egrep   forced --color=auto                    system grep variants
dir / vdir         forced --color=auto                    system dir / vdir
help config        intercepts "help config" → config-help  fish builtin help
claude             auto-links AGENTS.md as CLAUDE.md before launch  command claude
edit               multi-editor launcher (GUI/term + fallbacks)  $EDITOR/nvim/nano/vi

When C1 is disabled, rm uses bare command rm with no wrapper — files are permanently deleted, not trashed. There is no intermediate safety net.

history itself is never shadowed — every function in this config that reads history depends on its stock builtin semantics. pretty-history (same aliases-tricks toggle) is a separate command that prints history with a timestamp prepended to every entry.

Sub-categories

__fish_config_op_aliases sub-divides into six sub-categories, each with its own __fish_config_op_aliases_<slug> toggle:

filesystem

ls, cat, cd, du, mkdir, rm, mv, and cd/zoxide navigation -- the everyday filesystem-inspection and -modification shadows.

rg, with its Kitty hyperlink formatting.

network

ping, ssh, and yt-dlp -- shadows that talk to the network.

monitor

top -> btop.

shell-tools

bash (XDG bashrc + $SHELL reset), less ($PAGER fallback chain), and the help config interception.

dev-tools

claude (AGENTS.md/CLAUDE.md auto-linking) and edit (multi-editor launcher), plus agy.

For function authors

Calling one of these names bare from inside your own function means the override runs whenever C1 (or its sub-category) is on — which may not be what your function wants: a shadow can change stdout (cat's syntax highlighting, mkdir's tree display), prompt interactively where none is expected (cp/mv's forced -i), or reshape output structurally (ls's icons/columns, rg's hyperlink markers). If your function's logic depends on stock behavior, bypass the shadow deterministically, regardless of the toggle state:

Shadow                  Bypass                        Why
─────────────────────────────────────────────────────────────────────────
ls, cat, rm, less, du,  command <name>                Real external
top, ping, ssh, rg,                                    binaries — a
mkdir, bash, cp, mv,                                    real system command
wget, grep/fgrep/egrep,                                exists to fall
dir/vdir, claude                                        back to.
cd                       builtin cd                    The one true
                                                         fish builtin
                                                         in this table.
help config              __original_help $argv         `help` is neither
                                                         a builtin nor an
                                                         external binary
                                                         (embedded in the
                                                         fish binary
                                                         itself) — see
                                                         conf.d/help.fish
                                                         for why the
                                                         wrapper keeps its
                                                         own backup copy.
edit                     (nothing to bypass to)         Purely our own
                                                         invention, no
                                                         stock command
                                                         exists. Call
                                                         $EDITOR/$VISUAL
                                                         yourself if you
                                                         want a plain
                                                         editor launch.

A function's own doc header records which of these it depends on: see the CLASSIFICATION label (uses-shadow(...) / bypasses-shadow(...)), documented in full at docs/function-classification-schema.md.