Skip to content

Completed tasks

Tasks in the Done column are archived automatically: the session is suspended with its context preserved, and the card leaves the board. The Done column keeps a Completed (N) strip below its header with the most recent archived cards, each with its own delete control, and a View all button at the bottom of that list. Both open the completed-tasks dialog, which is where archived work lives - browse it, audit what each session cost, and bring tasks back when they need another round.

Archived tasks render as a sortable table. A search box in the dialog header filters rows by title and description as you type, and the footer totals whatever is showing: the task count (or “N of M tasks” while a search is active), total cost, tokens, files changed, and lines added and removed. Click any column header to sort by it:

ColumnWhat it shows
TitleThe task title, with the first line of its description beneath
CostTotal API cost of the task’s sessions
Agent runtimeHow long an agent worked on the task, summed over every conversation
TokensTotal tokens consumed
ToolsTool calls made across the task’s sessions
FilesFiles changed
LinesLines added and removed
CompletedWhen the task was archived (the default sort, newest first)

The Completed Tasks dialog: a table of archived tasks with columns for cost, agent runtime, tokens, tools, files, and lines, when each was completed, and restore and delete controls on every row. v0.46.0 The real app on a sample install. The projects and terminals are recordings, connected to nothing, so click anything.

Clicking a row selects it; the actions on each row do the rest:

  • The View details (eye) button opens the completed task view
  • Restore to board opens a popover listing the board’s columns - pick one and the task returns there
  • Delete task removes the task, its session history, and any worktree it still has, after a confirmation you can tick Don’t ask again on

Right-clicking a row opens the same choices as a menu: copy the task’s ID, Open (the completed task view), Changes (only while the task’s worktree still exists), Restore to with one entry per column, and Delete permanently.

When an archived task’s session is old enough that restoring it may no longer resume cleanly, a dot beside its Completed time says so: yellow after a day (“Session may need to be re-created”), gray after a week (“Session may be expired”). Agent CLIs prune their on-disk session files over time, and that is what the dot is guessing at.

View details on a row, or Open in its menu, opens the task’s window as the completed task view. A strip under the title reads, left to right:

  • Started - the task’s first move out of To Do
  • Ended - its move into Done
  • Elapsed - the time between the two
  • Agent runtime - how long an agent worked on the task, summed over every conversation
  • Changes - lines added and removed, and the number of files changed
  • Pull request - its number and state; a click opens it
  • Cost - what every run of an agent cost

The strip ends on Completed, or on Exited with the exit code when the agent’s last run ended with an error. A metric with nothing to show is left out, so a task with no pull request has no Pull request. The strip always stays on one row: in a narrow window the dates drop their time first, then the status keeps only its icon, and the full value moves into a tooltip.

Under the strip are three tabs, Summary, Usage, and Description, with View conversation on the right, which opens the task’s full transcript. The arrow keys, Home, and End move between the tabs. Description is the task as it was written, with its labels and attachments.

Changes come from git on your machine, with or without a pull request. Each time a session ends, Kangentic measures the task’s branch against the point where it left its base. Once the pull request is merged, or the task is archived with a measurement already stored, the measurement is kept, so resetting the branch after the work landed does not overwrite it.

Before v0.46.0, cost and agent runtime counted a conversation again on every resume. Each resume reports its conversation’s running total, and the old reads added those totals together, so a task that resumed often read several times its real cost. v0.46.0 takes one value per conversation and adds the conversations. The fix is in the read, so it applies to tasks archived before the update too, and their cost and agent runtime can drop once you update.

The Task summary card shows the summary the Knowledge Graph wrote for the task. When there is none, the card says why: Summary pending, what summaries still need (Needs an agent or Needs a model), Task summaries are off, or Knowledge Graph indexing is off. An Open Settings button sits beside every reason a setting can fix. The agent’s last message shows in the summary’s place, cut to a few lines with Show all.

Route draws each column the task worked in, in board order, each one sized to its share of the time. A column the task came back to, with two or more stays of a minute or longer, lists each stay under it with its date and length. Kangentic did not always log column moves, so a task that started before its first logged move says Moves logged from and the date the log begins.

Commits and Files changed list what the Knowledge Graph’s index linked to the task, eight files at a time with Show all for the rest. With indexing off, neither card appears.

The task below went through Executing and Code Review twice each before it finished. Its strip gives the dates, agent runtime, changes, pull request, cost, and status, and its Summary tab shows the written summary, that route with each stay, two commits, and the four files they changed.

The completed task view of Set up CI/CD pipeline. A header strip gives dates, runtime, changes, pull request, cost and status. The Summary tab shows the written summary, a route through Executing and Code Review twice each, two commits and four changed files. v0.46.0 The real app on a sample install. The projects and terminals are recordings, connected to nothing, so click anything.

Runs lists each run of an agent, grouped by conversation: the task’s main conversation, and one for each column that runs in its own session, such as an isolated Code Review. Each run shows the columns it ran in, when it started, its model, effort, and permission mode, its compactions, and its own runtime and cost. A resumed conversation reports a running total, so each run shows only what it added, and the Total row matches the strip. A run whose agent exited with an error is marked beside its start time, because the strip’s status reads only the last run.

Models and tokens lists each model’s turns and its fresh input, cache write, cache read, and output tokens, with subagent work on its own row. With indexing off, the card falls back to each model’s input and output from the session totals, and says From session totals.

Background calls lists the agent calls Kangentic made for the task on its own, outside the task’s terminal: a Condition check for each automation a check answered, a Workflow step, Generate title, Write summary, and Name terminal. Each row has its column, model, effort, runtime, cost, and tokens, and ten rows show before Show all. Outcome reads Ran when the automation ran, Skipped when its Condition was not met or a later gate stopped it, and Error when the automation failed or was interrupted, or the check never answered. Hover the Outcome for the reason. One check can answer several automations, so the Total counts each call once. These calls also feed the Background card on the usage dashboard.

The same task’s Usage tab has four runs across its main conversation and its Code Review conversation, then its tokens by model and kind, and two background calls: one that ran its automation and one that was skipped.

The Usage tab of the completed CI/CD pipeline task: four runs across a main and a Code Review conversation, each with its column, model, permissions, runtime, cost and tool calls, then tokens by kind and background calls that ran once and skipped once. v0.46.0 The real app on a sample install. The projects and terminals are recordings, connected to nothing, so click anything.

Each run’s tool-call count opens a table of its calls per tool, and the Total’s count opens the same table for the whole task, so its rows add up to the tool-call count: Calls, then Time and Avg when durations were measured, Tokens when the agent can estimate them from its transcript, and a Failed column when any call was interrupted. Cost and input/output columns appear for agents that emit per-tool telemetry.

Time is each tool’s own run time. Calls that waited for your answer or approval are left out of Time and Avg, and the Time header’s tooltip says how many. Before v0.44.0 one call that never finished could make every later call of that tool report the gap since the previous call, so the first time v0.44.0 opens a project it rebuilds the stored per-tool durations of earlier sessions from their saved event logs. An old task’s Time column can change after the update; a session whose log is gone keeps its numbers. Tokens estimates how much of the conversation each tool’s output took up; it is not billed usage, and today only Claude provides it. Every column except Failed sorts on a click, Calls first by default. The tool-call count in a running task’s context bar opens the same table for that session, across every run since it started, so a resume after an app restart or a pause does not reset it. Tokens for a run that ended when the app quit are filled in from the agent’s transcript once the session resumes.

Select multiple rows to act on them together:

  • Restore - a popover picks the target column, and every selected task moves back to the board at once
  • Delete - permanently remove the selected tasks along with their sessions and worktrees

Restoring a task to an active column resumes its suspended session with full context intact - the agent picks up the conversation where it left off. Moving a task to Done frees its worktree’s disk space but keeps everything needed to resume; dragging it back to an active column recreates the worktree (see Worktree lifecycle).

The move out of Done is the route back, and the only one. Since v0.36.0, pressing Resume on a task still sitting in Done is refused with “This task is complete. Move it out of Done to continue working on it.” Resuming in place would rebuild the worktree and put a live agent on a task with no board card, burning quota with nothing on screen to notice it. Moving the task out unarchives it first and then spawns through the normal path. See When resume is refused.

The unarchive happens the moment you move the card, not when the spawn lands, and the card reports the restore as in progress rather than as Paused - so a slow worktree rebuild reads as work happening rather than as a stall.

Quick Find searches archived tasks too - hits that are archived carry a small archived badge so you can tell finished work from live cards in the results.

Kangentic is free and open source. A star helps other people find it.

Star on GitHub