Skip to content

Overview

tallow ships with 52 built-in extensions that handle everything from tool output rendering to multi-agent coordination. Extensions aren’t plugins bolted on — they’re the primary way tallow’s features are implemented.

Extensions have full access to tallow’s runtime:

  • Register tools — give the LLM new capabilities
  • Render TUI widgets — status bars, task boards, progress indicators
  • Hook lifecycle events — intercept tool calls, turn completions, errors
  • Register commands — add /slash commands for users
  • Inject context — modify the system prompt dynamically
  • Compose with each other — one extension can enhance another

Every extension has a category property in its extension.json manifest. The docs sidebar and the installer group extensions by these categories:

Note: Some extensions provide both LLM-callable tools and UI features. For example, the tasks extension provides a task board UI and a manage_tasks tool that lets the AI manage tasks programmatically.

CategoryCountWhat’s in it
Tools19bash, edit, read, write, cd, web_fetch, web_search, subagent, teams, tasks, agent-commands, ask-user-question, background-task, output-styles, theme-selector, MCP adapter, session-memory, wezterm-pane-control
UI & Display6custom footer, git status, tool display, minimal skill display, session-namer, random-spinner
Commands7command-prompt, command-expansion, context-fork, file-reference, health, shell-interpolation, skill-commands
Utilities6cheatsheet, context-usage, debug, init, show-system-prompt, read-tool-enhanced
Integrations3lifecycle hooks, claude-bridge, worktree
Language Support1LSP
Context1context-files
Dev1upstream-check
Aliases1/clear → /new
Core1_icons (internal icon registry)

Use the catalog command to inspect extensions before enabling them:

Terminal window
tallow extensions # default table output
tallow extensions --json # machine-readable catalog
tallow extensions tasks # detail view for one extension ID
InvocationOutput
tallow extensionsHuman-friendly table (default)
tallow extensions --jsonFull JSON payload for scripts/CI
tallow extensions <id>Expanded metadata for a single extension

Catalog output is driven by each extension manifest, including whenToUse, capabilities, and permissionSurface.

For least-privilege startup, explicitly select only what you need:

Terminal window
tallow --extensions-only --extension tasks --extension lsp

Repeat --extension <selector> to compose the exact extension set.

All bundled extensions ship with tallow and are loaded automatically — no separate installation step. Just run tallow.

Extensions load from multiple sources in this order:

  1. Bundled — shipped in the tallow package’s extensions/ directory
  2. User global~/.tallow/extensions/
  3. Project local.tallow/extensions/

If a user extension has the same directory name as a bundled extension, the user version overrides the bundled one. tallow prints a notice at startup when this happens.

The installer lets you disable extension groups. Under the hood, disabled extension names are stored in settings.json:

{
"disabledExtensions": ["git-status", "cheatsheet"]
}

You can also pass --no-extensions on the CLI to disable all extensions for a session.

See Creating Extensions for the full guide on building custom extensions.