メインコンテンツへスキップ

CLI cheat sheet

The most useful dci commands, one page. For details, see the CLI guide, the command reference in the sidebar, and the changelog.

Sections follow the working order: set up once, find your way around, run and shape your data, then automate. In an interactive terminal the CLI adds pickers, prompts, and full-screen viewers (v2.5.1+) — all of them switch off automatically in scripts, pipes, CI, and agent mode, so nothing here changes how the CLI automates.

Install and update

brew install doitintl/dci-cli/dci # macOS (Windows: winget install DoiT.dci)
dci --version # validate the install
dci update # update in place — any OS, any install method (v2.5.2+)
dci update --check # just report what's available; installs nothing
dci completion bash|zsh|fish # tab-completion (Homebrew/deb/rpm install it automatically)

Authenticate and verify

dci login # interactive browser OAuth; success names your active context
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

Resource names and pickers

dci get-report "Monthly AWS Spend" # names work wherever IDs do (v2.1+)
dci get-budget Team Backyard # quoting optional; Tab completes names too
dci get-report # no argument? filter-as-you-type picker (v2.5.1+)
dci open report # same picker, then deep-links into the console
dci get-report --id <value> # force a literal ID (skip the lookup)
dci get-report --name <value> # force a name lookup for an ID-shaped name
DCI_NO_RESOLVE=1 dci ... # scripts: disable name resolution and pickers
# Ambiguous name? Interactive terminals offer the matches as a menu (v2.5.1+);
# scripts get every match with its ID and a clean error — nothing runs on a guess.

Reports and queries

dci query # interactive builder: compose, run, or save a query.json (v2.5.1+)
dci query < query.json # ad-hoc query from a JSON config
dci list-reports --max-results 10
dci list-reports --filter "owner:[email protected]" # server-side filter; keys: reportName, owner, type, folderId (combine with |)
dci list-reports --name-contains "sprint" # case-insensitive name match (ANDs with --filter)
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 get-report-config <id> > r.json # pull → edit → push, as code
dci update-report <id> < r.json

Shape and explore the output

dci list-anomalies -M interactive # full-screen viewer: ←→ columns, s sort, / filter, Enter prints the id (v2.5.1+)
dci query --chart < query.json # stacked per-group chart under the table (v2.5.1+); --chart=line for period totals
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
dci list-budgets --utc # keep table timestamps in UTC
DCI_TZ=Europe/Berlin dci list-reports # show times in a specific timezone

Budgets, anomalies, allocations

dci list-budgets # amounts, utilization bars (red at 90%+), risk, 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 "Team Backyard" # deep link into the console (name or ID)
dci ask-ava-sync ephemeral: true, question: "Why did costs spike yesterday?"

Insights

dci list-insights # ranked by daily savings; dismissed hidden; easy wins marked
dci list-insights --cloud-provider aws # one cloud (aws, gcp, azure)
dci list-insights --source aws-security-hub # one source (repeatable)
dci list-insights --easy-win # only quick, low-effort wins
dci list-insights --category Security --search-term "public"
dci list-insights --include-dismissed # bring dismissed insights back
dci get-insight <source> <key> # full detail, incl. the long description

Destructive commands

dci delete-report "old draft" # interactive: a confirm dialog shows the resolved name + ID; Cancel is the default (v2.5.1+)
dci delete-report <id> --dry-run # local preview, no request
dci delete-report <id> --yes # scripts/CI: 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 $?"
# Pipes and CI never see pickers or prompts — same output as before v2.5.1.
# DCI_NO_TUI=1 turns them off in a terminal too, keeping tables and color.
# Exit codes: 0 ok · 2 usage · 10 auth · 11 permission · 20 not found ·
# 30 validation/unconfirmed destructive · 40 server · 41 network · 50 rate limit

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

A compact, CLI-only documentation index lives at https://help.doit.com/llms-cli.txt — every entry links to its page as plain Markdown, so agents can fetch just the commands they need.

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