Skip to content

Environment Variables

ccusage supports several environment variables for configuration and customization. Environment variables provide a way to configure ccusage without modifying command-line arguments or configuration files.

Agent Data Directories

ccusage detects supported data source files from conventional locations by default. Set these variables when your data lives somewhere else. Each value can be one directory or a comma-separated list of directories:

VariableAgentDefault
CLAUDE_CONFIG_DIRClaude Code~/.config/claude and ~/.claude
CODEX_HOMECodex~/.codex
OPENCODE_DATA_DIROpenCode~/.local/share/opencode
AMP_DATA_DIRAmp~/.local/share/amp
PI_AGENT_DIRpi-agent~/.pi/agent/sessions

Example:

bash
export CODEX_HOME="/path/to/codex,/archive/codex"
export OPENCODE_DATA_DIR="/path/to/opencode,/archive/opencode"
export AMP_DATA_DIR="/path/to/amp,/archive/amp"
export PI_AGENT_DIR="/path/to/pi/sessions,/archive/pi/sessions"
ccusage daily

Empty entries and directories that do not exist are skipped. Duplicate paths are read once.

CLAUDE_CONFIG_DIR

Specifies where ccusage should look for Claude Code data. See Claude Code for default paths, multiple-directory behavior, and Claude-specific examples.

LOG_LEVEL

Controls the verbosity of log output.

Log Levels

LevelValueDescriptionUse Case
Silent0Errors onlyScripts, piping output
Warn1Warnings and errorsCI/CD environments
Log2Normal logsGeneral use
Info3Informational logs (default)Standard operation
Debug4Debug informationTroubleshooting
Trace5All operationsDeep debugging

Usage Examples

bash
# Silent mode - only show results
LOG_LEVEL=0 ccusage daily

# Warning level - for CI/CD
LOG_LEVEL=1 ccusage monthly

# Debug mode - troubleshooting
LOG_LEVEL=4 ccusage session

# Trace everything - deep debugging
LOG_LEVEL=5 ccusage blocks

Practical Applications

Clean Output for Scripts

bash
# Get clean JSON output without logs
LOG_LEVEL=0 ccusage daily --json | jq '.summary.totalCost'

CI/CD Pipeline

bash
# Show only warnings and errors in CI
LOG_LEVEL=1 ccusage daily --instances

Debugging Issues

bash
# Maximum verbosity for troubleshooting
LOG_LEVEL=5 ccusage daily --debug

Piping Output

bash
# Silent logs when piping to other commands
LOG_LEVEL=0 ccusage monthly --json | python analyze.py

Additional Environment Variables

CCUSAGE_OFFLINE

Force offline mode by default:

bash
export CCUSAGE_OFFLINE=1
ccusage daily  # Runs in offline mode

CCUSAGE_BUN_AUTO_RUN

When the published CLI starts under Node.js and finds bun in PATH, it automatically re-runs the bundled entrypoint with Bun. Disable this if you need to force Node.js:

bash
CCUSAGE_BUN_AUTO_RUN=0 ccusage daily

NO_COLOR

Disable colored output (standard CLI convention):

bash
export NO_COLOR=1
ccusage daily  # No color formatting

FORCE_COLOR

Force colored output even when piping:

bash
export FORCE_COLOR=1
ccusage daily | less -R  # Preserves colors

Setting Environment Variables

Temporary (Current Session)

bash
# Set for single command
LOG_LEVEL=0 ccusage daily

# Set for current shell session
export CODEX_HOME="/path/to/codex,/archive/codex"
ccusage daily

Permanent (Shell Profile)

Add to your shell configuration file:

Bash (~/.bashrc)

bash
export CODEX_HOME="$HOME/.codex"
export LOG_LEVEL=3

Zsh (~/.zshrc)

zsh
export CODEX_HOME="$HOME/.codex"
export LOG_LEVEL=3

Fish (~/.config/fish/config.fish)

fish
set -x CODEX_HOME "$HOME/.codex"
set -x LOG_LEVEL 3

PowerShell (Profile.ps1)

powershell
$env:CODEX_HOME = "$env:USERPROFILE\.codex"
$env:LOG_LEVEL = "3"

Precedence

Environment variables have lower precedence than command-line arguments but higher than configuration files:

  1. Command-line arguments (highest priority)
  2. Environment variables
  3. Configuration files
  4. Built-in defaults (lowest priority)

Example:

bash
# Environment variable sets offline mode
export CCUSAGE_OFFLINE=1

# But command-line argument overrides it
ccusage daily --no-offline  # Runs in online mode

Debugging

To see which environment variables are being used:

bash
# Show all environment variables
env | grep -E "CLAUDE|CODEX|OPENCODE|AMP|PI_AGENT|CCUSAGE|LOG_LEVEL"

# Debug mode shows environment variable usage
LOG_LEVEL=4 ccusage daily --debug

Released under the MIT License.