[FEATURE] Job/agent list shows only a relative age (9d, 45d) — surface an absolute date too

Status Open
Reported on v2.1.234
Maintainer reply None cached
Activity 0 comments · opened Aug 20, 2026

What I'm asking for

In the background-job / agent list (fullscreen job view, tui: "fullscreen"), the right-hand column shows only a relative age — now, 16m, 5h, 9d, 45d. Please show an absolute date alongside it (or offer it as a setting / toggle).

Why the relative age alone isn't enough

I run a lot of background jobs — right now 30 in Needs input, spanning 16m to 45d. The relative age answers "how stale" but not "when", and "when" is what I actually need to act:

  • I can't tell whether a 9d job predates or postdates a release, a sprint boundary, or a specific incident. 2026-08-10 (Mon) tells me instantly; 9d makes me do arithmetic against today's date.
  • Several jobs are blocked waiting on me, and I want to correlate them with what I was doing that day (a Jira ticket, a release, a Slack thread). The relative age destroys exactly the information needed for that correlation.
  • Buckets collapse: 13d, 14d, 15d, 15d, 16d are five different days that read as one blob. Multiple jobs from the same day are indistinguishable from jobs a day apart.
  • Once the unit rolls over to days, precision is gone — a 2d job could be 48h or 71h old.
  • The list is read at a glance for triage. Anything requiring mental date math gets skipped.

The data is already there

~/.claude/jobs/<id>/state.json already stores exact ISO timestamps, so this is a rendering choice, not a data problem:

{
  "createdAt": "2026-08-18T11:40:36.721Z",
  "updatedAt": "2026-08-18T14:14:23.481Z",
  "firstTerminalAt": "2026-08-18T14:14:23.481Z",
  "state": "blocked",
  "name": "mc-4510 bug verification"
}

I confirmed the age column is produced by a hardcoded formatter of the shape now${m}m${h}h${Math.floor(h/24)}d, and I could find no setting that changes it (nothing relevant in settings.json; the only timestampFormat strings in the binary belong to the bundled AWS SDK, and tui accepts only the fullscreen value).

Suggested behavior

Any of these would solve it — in order of preference:

  1. Both, inline: 2026-08-10 13:22 (Mon) 9d — the age stays scannable, the date is there when you need it. Same-day jobs render as today / yesterday.
  2. A setting, e.g. "jobListTimestamp": "relative" | "absolute" | "both" (default relative, so nothing changes for anyone who likes it as-is).
  3. A keypress toggle in the job view that cycles relative → absolute → both.
  4. At minimum, the absolute timestamp on the focused/selected row (in a detail line or footer).

Also worth considering: make it explicit which timestamp the column reflects. Today it appears to track last activity, but createdAt and updatedAt are very different questions for a long-blocked job ("when did I start this?" vs "when did it last move?"), and the column doesn't say which one you're looking at.

Workaround (for anyone who hits this before it's fixed)

Reading ~/.claude/jobs/*/state.json directly and printing the same three sections with updatedAt formatted absolutely gets you there; the ages come out identical to the built-in view, which confirms it's the same underlying data.

Environment

  • Claude Code 2.1.234 (issue also present in 2.1.202)
  • macOS (Darwin 25.5.0), arm64, tui: "fullscreen"
  • ~57 jobs on disk (30 blocked / 25 done / 2 working)

Related (not duplicates)

  • #82395 — sort the completed background-job list by last activity, not creation time (same list, ordering rather than display; the "which timestamp is this?" ambiguity above overlaps)
  • #72746 — Agent View "last changed" timestamp reflects file mtime instead of actual conversation activity (timestamp correctness; this issue is about timestamp legibility)
  • #77182 — show repository/project name in the agent view (another "this list needs one more column of context" request)

View original on GitHub ↗