Expensicat
CLI

Tracking

Track time — start a live timer, or log entries manually

Two ways to track:

  • Live timertracking start / tracking status / tracking stop keeps state in ~/.expensicat/tracking.json and logs an entry when you stop.
  • Manual entriestracking create / update / delete for backfilling or editing.

Timer state is local to the machine — stop the timer wherever you started it.

tracking start

Start a live timer.

expensicat tracking start
expensicat tracking start "Website rebuild" --description "Design review"
ArgDescription
[project]Optional project name or ID
FlagDescription
-d, --description <text>Description of the work

tracking status

Show the current timer, including elapsed time.

expensicat tracking status
expensicat tracking status --json
FlagDescription
--jsonOutput as JSON

tracking stop

Stop the timer and create an entry.

# Stop and log
expensicat tracking stop

# Stop without logging
expensicat tracking stop --discard
FlagDescription
--discardStop without creating an entry

tracking list

List tracked entries. Defaults to your entries only — pass --user all to see the whole team.

# Your entries (default)
expensicat tracking list

# Everyone's entries
expensicat tracking list --user all

# A specific user's entries
expensicat tracking list --user 3b9c1d2a-...
FlagDescription
--user <me|all|uuid>Scope to the current user (me, default), everyone (all), or a specific user ID
--cursor <string>Pagination cursor
--limit <number>Page size

tracking show

Get a tracked entry by ID.

expensicat tracking show te_abc123
ArgDescription
<id>Entry ID

tracking create

Log a tracked entry manually. Interactive when fields are missing — prompts include a project picker. Pipe JSONL via --batch - for bulk creates.

expensicat tracking create \
  --start-time 2026-04-15T09:00:00Z \
  --end-time 2026-04-15T10:00:00Z \
  --description "Design review" \
  --project-id proj_123

cat entries.jsonl | expensicat tracking create --batch - --concurrency 3
FlagDescription
--start-time <string>Start time in ISO 8601 (required)
--end-time <string>End time in ISO 8601
--description <string>Description (required)
--project-id <string>Project to log against
--batch <path|->Read items from a file or stdin — see Batch input

Duration is computed server-side from start_time and end_time.

tracking update

Update a tracked entry. Any field can be changed.

expensicat tracking update te_abc123 --end-time 2026-04-15T11:30:00Z
ArgDescription
<id>Entry ID
FlagDescription
--start-time <string>New start time
--end-time <string>New end time
--description <string>New description
--project-id <string>Reassign project

tracking delete

Delete a tracked entry. Prompts for confirmation in a terminal; pass --yes to skip.

expensicat tracking delete te_abc123
expensicat tracking rm te_abc123 --yes   # alias + skip prompt
ArgDescription
<id>Entry ID
FlagDescription
-y, --yesSkip the confirmation prompt (required for non-interactive use)

On this page