How to Hide the Ponytail Status Bar Indicator: Complete Configuration Guide
Set the PONYTAIL_HIDE_STATUS environment variable to 1 or add "hideStatus": true to your Ponytail configuration file to suppress the status-bar indicator while keeping the rule engine fully operational.
Ponytail displays a "🐴 ponytail:" indicator in the UI status bar while it is active. If you prefer a cleaner interface, you can hide the Ponytail status bar indicator without disabling the extension itself by controlling the hideStatus configuration flag as implemented in the DietrichGebert/ponytail repository.
How the Status Bar Suppression Works
The indicator suppression logic is implemented across two core files in the Ponytail source code.
Runtime Check in syncStatus()
In pi-extension/index.js, the syncStatus() function evaluates the hideStatus flag on every UI update cycle:
// ponytail: hide the indicator but keep the ruleset active (#324).
if (hideStatus) return;
When hideStatus is truthy, the function returns early, preventing the status-bar text from being sent to the UI. Ponytail's rule engine continues to operate normally regardless of this setting.
Configuration Resolution in getHideStatus()
In hooks/ponytail-config.js, the getHideStatus() function resolves the flag from two potential sources:
- The
PONYTAIL_HIDE_STATUSenvironment variable (takes precedence) - The
hideStatuskey inconfig.json
// Hide the status-bar indicator while keeping ponytail active (#324).
// PONYTAIL_HIDE_STATUS=1 (or any truthy value; 0/false/empty mean "don't hide")
// takes precedence, else config.hideStatus === true.
function getHideStatus() { … }
According to the source comments, any truthy value for the environment variable (such as 1) hides the indicator, while 0, false, or empty values leave it visible.
Method 1: Hide the Indicator Using an Environment Variable
Setting PONYTAIL_HIDE_STATUS before launching Ponytail provides immediate suppression without modifying configuration files.
Unix-Like Systems (Linux/macOS)
export PONYTAIL_HIDE_STATUS=1
ponytail
Windows PowerShell
$env:PONYTAIL_HIDE_STATUS = "1"
ponytail
This method is ideal for temporary hiding or scripting scenarios where you do not want to persist the setting across sessions.
Method 2: Hide the Indicator Using the Configuration File
For permanent suppression, configure the hideStatus property in your Ponytail configuration file.
Locating the Configuration Directory
The configuration file path is determined by getConfigPath() in hooks/ponytail-config.js. The location varies by operating system:
- Linux/macOS:
~/.config/ponytail/config.json - Windows:
%APPDATA%\ponytail\config.json - XDG-compliant systems:
$XDG_CONFIG_HOME/ponytail/config.json
Editing config.json
Create or edit the config.json file in the appropriate directory and add the following:
{
"hideStatus": true,
"quietStartup": false,
"defaultMode": "full"
}
You must restart Ponytail after saving the file for getHideStatus() to read the new value and for syncStatus() to begin suppressing the indicator.
Verifying the Configuration Programmatically
You can confirm the flag value by importing the configuration helper directly from the source:
import { getHideStatus } from "./hooks/ponytail-config.js";
console.log("Hide status flag:", getHideStatus());
// Output: true indicates the indicator will be hidden
This verification step confirms that your environment variable or JSON configuration is being parsed correctly before launching the full application.
Summary
- The
hideStatusflag in the DietrichGebert/ponytail repository controls visibility of the status-bar indicator. - The
syncStatus()function inpi-extension/index.jschecks this flag and skips UI updates when enabled. - Set
PONYTAIL_HIDE_STATUS=1as an environment variable for temporary hiding. - Add
"hideStatus": truetoconfig.jsonfor permanent suppression across restarts. - Ponytail's rule engine remains active regardless of the indicator's visibility.
Frequently Asked Questions
Does hiding the status bar indicator disable Ponytail's ruleset?
No. According to the source code comment in pi-extension/index.js ("hide the indicator but keep the ruleset active"), hiding the indicator only affects UI rendering. The underlying rule engine continues to evaluate and apply rules normally when hideStatus is enabled.
Why is my configuration file change not taking effect?
Ensure the file is located in the directory returned by getConfigPath() in hooks/ponytail-config.js—typically ~/.config/ponytail/config.json on Linux/macOS or %APPDATA%\ponytail\config.json on Windows. You must completely restart Ponytail after modifying the file, as the configuration is read at startup and cached for the session.
Can I toggle the indicator visibility while Ponytail is running?
No. While syncStatus() checks the flag on every UI update, the getHideStatus() function in hooks/ponytail-config.js resolves the value from the environment or config file during initialization. Changing the environment variable or config file after startup will not affect the current session until you restart the application.
What values are valid for the PONYTAIL_HIDE_STATUS environment variable?
Any truthy string value hides the indicator. Specifically, 1, true, yes, or on will enable hiding. Values like 0, false, no, or empty strings are treated as falsy, leaving the indicator visible. This behavior is determined by the precedence logic in getHideStatus().
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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →