Terminal fuzzy finder for filtering lists, selecting matches, and attaching previews or actions in shell workflows.
$brew install fzf
Agent Compatibility
JSON Output
Agent Skill
MCP Support
AI Analysis
fzf is a terminal fuzzy finder and interactive Unix filter for narrowing arbitrary line-oriented input, selecting items, and attaching previews or actions to the current match. It is most useful as shell plumbing around files, history, processes, Git refs, log streams, and other lists you already know how to generate.
What It Enables
- Filter arbitrary stdin or walked files, select one or many matches, and print the chosen lines or NUL-delimited paths back to the shell.
- Add previews, key bindings, reload actions, or
become(...)handoffs so one selection UI can open editors, kill processes, switch Git branches, or launch other commands. - Embed fuzzy picking into shell history search, tab completion, tmux popups, Vim or Neovim commands, and ripgrep-driven code or log search flows.
Agent Fit
--filter,--select-1,--exit-0,--print0, and stable stdout or exit behavior make it usable in scripts when you want fuzzy matching without opening the TUI.- The built-in
--listenserver can expose current matches and selection state as JSON and accept actions, but that path is experimental and tied to a running interactive session. - Fit is mixed overall: the main product is a human-operated selector, so agents usually get more value from its non-interactive filter mode or from pairing it with a user than from driving the interface headlessly.
Caveats
- Most high-value workflows still assume a real terminal and a human driving the picker, even when the surrounding pipeline is scripted.
- Normal output is plain text; the JSON status API only exists behind
--listenwhile fzf is running.