How to Change Ponytail Mode from the Command Line

You can change Ponytail mode instantly by running ponytail <mode> with arguments lite, full, ultra, or off, or configure a permanent default using the PONYTAIL_DEFAULT_MODE environment variable or a JSON configuration file.

The Ponytail AI assistant supports multiple operational modes that control its code generation intensity and validation strictness. Learning how to change Ponytail mode from the command line allows you to toggle between lightweight and aggressive validation strategies without modifying your codebase. This guide covers the CLI commands, environment variables, and configuration files that control mode selection in the DietrichGebert/ponytail repository.

Using the /ponytail Command

The primary interface for changing modes is defined in commands/ponytail.toml. You invoke mode changes by passing the desired mode as an argument to the ponytail command.

Available Mode Options

According to the documentation in skills/ponytail-help/SKILL.md, Ponytail supports four distinct modes:

  • lite: Builds only what is asked, using the laziest possible solution
  • full (default): Runs the full validation ladder—YAGNI → std-lib → native → one-line → minimum
  • ultra: Employs an aggressive "delete-before-add" strategy that challenges requirements before building
  • off: Deactivates Ponytail and returns the assistant to normal mode

# Switch to lightweight mode

ponytail lite

# Enable aggressive ultra mode

ponytail ultra

# Return to standard validation

ponytail full

# Disable Ponytail entirely

ponytail off

Configuring Permanent Default Modes

For persistent configuration across sessions, Ponytail checks environment variables and user configuration files before falling back to the built-in default. This resolution logic is implemented in init.py.

Environment Variable Method

Set the PONYTAIL_DEFAULT_MODE environment variable to specify your preferred mode for all new sessions:

export PONYTAIL_DEFAULT_MODE=lite

This variable takes precedence over file-based configuration but can be overridden by explicit ponytail <mode> commands.

Configuration File Method

Create a JSON configuration file at ~/.config/ponytail/config.json on Linux/macOS, or %APPDATA%\ponytail\config.json on Windows:

{
  "defaultMode": "ultra"
}

When you run ponytail without arguments, it loads this default mode before engaging the AI assistant.

Summary

  • Execute ponytail <mode> to change modes instantly, where <mode> is lite, full, ultra, or off
  • Set the PONYTAIL_DEFAULT_MODE environment variable for session-wide defaults that persist across terminal windows
  • Create ~/.config/ponytail/config.json for permanent user-specific configuration
  • The mode resolution hierarchy follows: explicit CLI argument → environment variable → config file → built-in full default

Frequently Asked Questions

What are the differences between lite, full, and ultra modes?

Lite mode generates minimal solutions without additional validation layers, while full mode applies the complete validation ladder defined in the help documentation. Ultra mode actively challenges and potentially removes existing code before adding new functionality, making it suitable for refactoring tasks. Off completely disables Ponytail's specialized behavior.

How do I make Ponytail mode changes persist across terminal sessions?

To make a mode persistent, either export the PONYTAIL_DEFAULT_MODE variable in your shell profile (.bashrc, .zshrc, etc.) or create the JSON configuration file at ~/.config/ponytail/config.json. The environment variable approach takes precedence and applies immediately to new terminal sessions, while the config file provides a more permanent, cross-platform solution.

Can I disable Ponytail mode entirely from the command line?

Yes. Run ponytail off or stop ponytail to deactivate Ponytail for the current session. This command immediately returns the assistant to standard behavior without requiring you to modify environment variables or configuration files. To re-enable Ponytail later, simply run ponytail with your desired mode argument.

Where does Ponytail read its default mode configuration?

Ponytail checks three sources in sequence as implemented in init.py: first, any explicit command-line argument; second, the PONYTAIL_DEFAULT_MODE environment variable; third, the ~/.config/ponytail/config.json file. If none are set, it defaults to full mode as specified in the command definitions.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →