Skip to main content

CLI cheat sheet

The most useful dci commands, one page. For details, see the CLI guide, the command reference in the sidebar, and What's new in v2.0.

Install and update

brew install doitintl/dci-cli/dci # macOS (Windows: winget install DoiT.dci)
dci --version # validate the install
dci upgrade # check for a new version
dci completion bash|zsh|fish # shell tab-completion

Authenticate and verify

dci login # interactive browser OAuth
export DCI_API_KEY=<token> # CI/automation (personal or service-account token)
dci status # config, session state, agent mode, active context
dci validate # who am I — confirms identity and permissions
dci logout # clear cached credentials

Customer context

DCI_CUSTOMER_CONTEXT=acme.com dci list-budgets # this command only (env)
dci list-budgets -D acme.com # this command only (flag)
dci customer-context set acme.com # persistent default
dci customer-context show # inspect / clear

Discover commands

dci --help # all commands, grouped
dci query --help # terse per-command help
dci query --help-full # + full request/response schemas
dci commands --json # machine-readable catalog (args, flags, destructive)
dci docs # every documentation entry point

Reports and queries

dci list-reports --max-results 10
dci get-report <id> # pivot view with totals, trend, heatmap
dci get-report <id> --start-date 2026-01-01 --end-date 2026-01-31
dci get-report <id> --time-range P30D
dci query < query.json # ad-hoc query from a JSON config
dci get-report-config <id> > r.json # pull → edit → push, as code
dci update-report <id> < r.json

Shape the output

dci get-report <id> --flat # flat rows instead of the pivot
dci query --pivot < query.json # force the pivot anywhere
dci query --output csv < query.json > out.csv # spreadsheet export
dci query --rows keyed --output json < query.json # rows as named objects (for jq)
dci query --max-rows 0 < query.json # lift the agent-mode row cap
dci list-anomalies -C id,serviceName,startTime # choose table columns
dci list-reports -M wrap -W 160 # wrap cells / set table width
dci query --raw-numbers --heatmap=false < q.json # exact values, no shading

Budgets, anomalies, allocations

dci list-budgets # amounts, utilization, forecast
dci list-budget-suggestions # API-suggested budgets
dci list-anomalies --max-results 10 # recent cost anomalies
dci get-anomaly <id>
dci list-allocations
dci open budget <id> # deep link into the console
dci ask-ava-sync ephemeral: true, question: "Why did costs spike yesterday?"

For AI agents

dci skill claude # install the usage skill (codex, cursor, gemini, kiro, opencode)
dci skill list # embedded files with token estimates
dci --agent status # force agent mode (auto-detected in most harnesses)
# Agent mode: TOON output, JSON error envelopes on stderr, 500-row cap with markers

Destructive commands

dci delete-report <id> --dry-run # local preview, no request
dci delete-report <id> --yes # explicit confirmation (else exit 30)

Script it

export DCI_API_KEY=<token> # never the browser flow in CI
budgets=$(dci list-budgets --output json)
dci get-report <id> --output json || echo "failed with $?"
# Exit codes: 0 ok · 2 usage · 10 auth · 11 permission · 20 not found ·
# 30 validation/unconfirmed destructive · 40 server · 41 network · 50 rate limit

Useful environment variables: DCI_API_KEY, DCI_CUSTOMER_CONTEXT, DCI_AGENT_MODE, DCI_CONFIRM_DESTRUCTIVE, DCI_SKIP_BODY_VALIDATION, NO_COLOR. Full tables in the CLI guide.