# How to Change Ponytail Mode from the Command Line

> Easily change Ponytail mode to lite, full, ultra, or off from the command line. Learn how to set default modes via environment variables or config files.

- Repository: [DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail)
- Tags: how-to-guide
- Published: 2026-09-03

---

**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](https://github.com/DietrichGebert/ponytail/blob/main/commands/ponytail.toml#L1). 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](https://github.com/DietrichGebert/ponytail/blob/main/skills/ponytail-help/SKILL.md#L18-L20), 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

```bash

# 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](https://github.com/DietrichGebert/ponytail/blob/main/__init__.py#L53).

### Environment Variable Method

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

```bash
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:

```json
{
  "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](https://github.com/DietrichGebert/ponytail/blob/main/skills/ponytail-help/SKILL.md#L18-L20). **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](https://github.com/DietrichGebert/ponytail/blob/main/__init__.py#L53): 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](https://github.com/DietrichGebert/ponytail/blob/main/commands/ponytail.toml#L1).