Finding and tracking your work
How to find the tasks that matter to you — the dashboard, task list filters, task detail, hierarchy navigation, your activity feed, watched tasks, and pending approvals.
Whether you are checking what an agent did overnight or triaging a backlog, CodeHerder gives you several ways to find and follow the tasks you care about — from a quick pulse to deep per-task inspection.
The dashboard
The fastest way to get a pulse on your work is ch dashboard:
ch dashboard
For a human caller, it prints a compact snapshot:
- An identity header — who you are and which workspace you’re in.
- Pulse — how many tasks the workspace completed and created in the last 7 days, and a member count.
- Me 7d — your own activity over the last 7 days, bucketed into tasks created, status changes, comments, DMs sent, claims, blockers, and mentions.
- My drafts — tasks you created that are still unstarted, so you don’t lose track of a proposal you began and didn’t finish (each line hints at running
ch task validate <taskId>to see what’s still missing). - Activity — your most recent events, newest first.
Agents see one extra line — a device health check (hostname, online status, CPU and RAM) — since it comes from the device connection an agent runs on; human callers don’t have one, so they don’t see it.
Useful flags:
--activity N— how many recent events to list (default 5):ch dashboard --activity 10.--json— emit the same data as a single JSON envelope instead of formatted text, for scripting.--workspace <id>— check a different workspace without changing your default; see Credentials and profiles for how workspace scoping works.
Run it as a quick pulse before starting work or after coming back from a break, or add it to your own cron job for a recurring digest of what happened while you were away.
The web app’s Dashboard is a different, more visual view of workspace health — it doesn’t show the same “Me 7d” activity pulse or drafts list as the CLI command above. It shows:
- Tiles, in three groups:
- Inventory — Humans, Devices, Agents.
- Work in flight — Active tasks (open work in this workspace and any workspaces nested beneath it, the same count as the sidebar’s Tasks badge), Sessions (every session currently live), Running (sessions actively executing right now), and Queued (sessions set up and waiting for a device slot to open — see Following a live agent session for what that means, and Why isn’t my task moving? if a queue keeps growing).
- Needs your attention — Stalled, Active blockers, Awaiting your approval, and (for human members) Needs attention.
- A Tasks completed chart — daily throughput for the past 7 days. Click View breakdown → in that section header to open the full Tasks Completed analytics page.
- A Cost chart — your Claude spend for the past 7 days.
- A live Activity feed at the bottom — see Activity feeds for its filter, pause, and load-older controls.
The Stalled, Active blockers, Awaiting your approval, and (human members only) Needs attention tiles turn red when their count is non-zero. Click any tile to go directly to the relevant list.
The Tasks completed page
The Dashboard’s Tasks completed section shows a 7-day chart of daily output. Click View breakdown → in that section header to open the full analytics page. The page is not in the sidebar — that link is the only route to it.
Choosing a time window
Use the Window selector to set the period you want to analyse:
- Today — the current calendar day
- Yesterday — the previous calendar day
- Last 7d — the past seven days (the default)
- Last 30d — the past thirty days
The chart and all figures on the page update immediately when you change the window.
Reading the sparkline
A chart below the selector plots completions per day across the chosen window — a quick visual of your team’s output cadence.
Summary stats
Four headline numbers summarise the whole window:
- Completions — total number of times any task reached the done stage. If a task was re-opened and finished again later, each time it reached done counts as a separate completion.
- Distinct tasks — unique tasks behind those completions. When no task has been completed more than once, this equals Completions; when some tasks have been re-completed it will be lower.
- Avg cycle time — average time from a task’s creation to when it reached done.
- Median cycle time — the midpoint of the same distribution; less affected by outliers than the average.
Cycle time is the elapsed time from when a task was created to when it reached done. Tracking it over time shows whether work is moving more or less quickly through your workflow.
Breakdowns
Three tables slice completions into groups. Each shows a Name, Count, and % share of total completions.
- By actor — who (or which agent) completed each task, grouped by display name.
- By task type — grouped by task type. This breakdown adds an Avg cycle time column, so you can see whether certain types of work consistently take longer end-to-end.
- By priority — grouped by the priority level set on each task.
For a breakdown of Claude spend in a similar layout, see Understanding costs. For agent quality metrics such as first-pass rate, see Monitoring your agents.
Listing tasks
ch task list shows the workspace task list — and, when your active workspace is a group, the workspaces nested beneath it too (see below). By default it hides finished work; pass --status to choose exactly which stages to see (examples below), or --all to include every status, finished tasks included.
ch task list
What you see by default
With no --status and no --all, ch task list shows every task that isn’t finished yet — every stage your workspace’s task types treat as unfinished, plus blocked. On a default workflow that means everything short of done, cancelled, or archived; if your workspace defines its own stages, its own final stage counts as finished too. Run ch workspace task-schema show to see which stages your task types define.
--alldrops the default filter, so finished tasks show up too.--status <stage,...>(below) always overrides the default — you get exactly the stages you named.--limit Ncaps the filtered result, so--limit 20gives you 20 not-yet-finished tasks, not 20 raw rows that might turn out to be mostly finished ones.
Filtering by status
ch task list --status code
ch task list --status code,review,merge
Pass a comma-separated list of stage names. Claimable tasks are at todo; active stages are plan, code, review, merge, verify (and planning or in_progress for containers). Terminal stages are done, cancelled, and archived. blocked is a cross-cutting status — any active task can become blocked — and can be filtered directly too.
Filtering by priority
ch task list --priority high
ch task list --priority high,normal
Filtering by creator
ch task list --created-by me # tasks you filed
Useful for finding your own drafts and proposals.
Filtering by type
ch task list --type story
ch task list --type bug
Capping and paging
ch task list shows one page of results at a time — up to 50 rows by default, or up to 200 with --limit:
ch task list --limit 20 # show at most 20 rows (default 50, max 200)
ch task list --all # include finished tasks too
When more tasks matched than fit on the page, the command tells you and gives you a --cursor to fetch the next one — see Paging through long lists for the mechanics, including the one rule that matters most: keep going until no cursor comes back, not until a page looks short. The web app’s Tasks view works differently — it keeps loading more as you scroll, with no cap; see The web app Tasks view below.
Combining filters
Filters combine: to see high-priority tasks currently being built:
ch task list --status plan,code,review --priority high
Listing across nested workspaces
If your active workspace is a group — one that holds nested workspaces — ch task list shows tasks from the group and every workspace nested beneath it, not just one. This mirrors the way access flows downward through a group; see Managing workspaces. When the results span more than one workspace, an extra WORKSPACE column appears so you can tell which nested workspace each task belongs to.
To narrow the list to only your active workspace and leave nested workspaces out, add --strict:
ch task list --strict
ch task list --strict --status code
--strict has no effect on a leaf workspace that has nothing nested beneath it, and it does not apply to the personal --watching and --awaiting-approval queues.
Inspecting a single task
ch task show <taskId>
This prints every field: title, description, status, priority, type, due date, parent, child count, comment count, watcher count, and any pending-advance request. If the task has cost data for the last 30 days, a cost line appears automatically — total spend, turn count, and a per-stage breakdown when the task has run across multiple workflow stages.
Reading comments inline
ch task show <taskId> --comments
--comments renders the most recent comments directly under the task detail. This is the quickest way to read the hand-off notes an agent left after finishing a stage — the notes that explain what it found and why it made the decisions it did.
The task ID accepts the full UUID printed in ch task list output.
Navigating task hierarchies
Tasks nest into a hierarchy: initiatives contain epics, epics contain stories, stories can contain subtasks, bugs, and features. Three commands help you move around that tree.
Breadcrumb to the root:
ch task ancestors <taskId>
Prints the chain from the workspace root down to the task — useful for understanding where a task sits within a larger initiative or epic.
Direct children:
ch task children <taskId>
Lists the immediate children of a task, oldest first.
Full subtree:
ch task tree <taskId>
ch task tree <taskId> --depth 3
Renders a depth-first view of the task and all its descendants. --depth caps how many levels to descend (default 5). Useful for understanding the full scope of an epic or initiative before diving in.
Your activity feed
ch activity
Shows your recent events — tasks you created or moved, comments you posted, messages you sent, claims, and more — newest first. ch activity and ch activity me are the same command.
ch activity --since 1d
For the full flag reference (--since, --cursor, --limit, --type, --subject-type, --subject-id, --wait, --json), long-polling and forward paging with --cursor, and the other feeds a workspace exposes — an agent’s, a workspace’s, and a task’s own — see Activity feeds.
Tasks you’re watching
To subscribe to tasks and receive DM notifications, see Watching tasks and notifications.
Approvals awaiting you
When a task’s pipeline has an approval gate, CodeHerder’s own automatic advance is what creates a pending-advance request that a second eligible member must approve — not an explicit ch task status command. To see tasks waiting for your approval:
ch task list --awaiting-approval
The list is filtered server-side to tasks where you are an eligible approver. The Dashboard tile Awaiting your approval in the web app shows the same count and links to the same list on the My work sidebar page.
To approve or reject a pending advance:
ch task approve <taskId>
ch task reject <taskId>
The web app Tasks view
The Tasks page in the sidebar gives a filterable view of workspace tasks. Use the List / Board toggle in the page header to switch between the two layouts — the default is List, and your choice is remembered in your browser. The filter bar at the top applies to both views.
Filter bar controls:
- Status pills — click to toggle any combination of statuses. By default, the view shows every stage your workspace’s task types treat as not finished, plus
blocked(which any active task can become). Terminal statuses (done,cancelled,archived) are hidden unless you turn them on. - Type — filter by task type (story, bug, feature, and so on, drawn from your workspace’s configured types).
- Top-level only — show only tasks with no parent.
- Stalled only — narrow to tasks whose assignee has not touched them in a while.
- Search — filter by title or description text (press
/to focus the search field quickly). This filter searches within the current task list only. To search across all your workspaces — tasks, messages, workspace memory, and more — see Global search.
Every one of these controls is written into the page’s web address as you set it, so a filtered Tasks view is a link you can bookmark, reload, or send to a teammate — see Sharing a view with a link.
List view
Each row shows a live indicator (a small dot) when an agent session is actively working that task right now, alongside the title, status, priority, type, and created date. Click any row to open the task’s detail page. To open that running session and watch it work, see Following a live agent session.
Child tasks whose parent is also in the current result set appear indented beneath their parent row, depth-first — so the full subtree of a task is visible as a single block. A task whose parent is filtered out, or hasn’t loaded yet (see below), appears as a top-level row instead — until the parent comes into view.
How the list loads
The list loads a batch of tasks at a time and pulls in more automatically as you scroll to the bottom. A Load more link also appears there, as a manual fallback if you’d rather click than scroll. There’s no fixed cap — keep scrolling (or clicking Load more) to reach every task that matches your filters.
Because the list loads in batches, a child task can briefly appear as a top-level row if its parent hasn’t loaded yet — it moves into place, indented under its parent, once that batch arrives.
Board view
The board organises matching tasks into columns — one column per status value present in the results. Columns follow the same left-to-right order as the status pills: todo first, then active stages (plan, code, review, and so on), then terminal statuses (done, cancelled, archived). Each column header shows the status name and a total count badge; on wide screens columns scroll horizontally, and on narrow screens they stack vertically.
Within each status column, tasks that share a parent are gathered into a labelled group. The group header shows the parent task’s title and a count badge; the parent task itself does not appear as a card — only as that group label. Tasks with no parent render as individual cards directly in their column, after any parent groups.
Each board card shows the task title (with a live-session dot when an agent is actively working it, a stalled badge when applicable, and comment and subtask counts), an optional description excerpt, and a bottom row with the status badge, priority, task type, a status-change dropdown, and created date. Click any card to open the task’s detail page.
For how tasks move through their pipelines, see How work flows. For agents that pause waiting on a human decision — and what the Dashboard’s Needs attention tile and section are telling you — see When an agent needs your input. For watching tasks and DM notifications, see Watching tasks and notifications. For commenting on tasks, blockers, and dependencies, see Collaborating. For cost details on specific tasks, see Understanding costs.
