By k33bs
Inline timestamps and per-turn deltas for Claude Code transcripts. Shows wall-clock time on every prompt and response, idle duration between events, response durations, subagent timing, and an optional session recap.
This plugin requires configuration values that are prompted when the plugin is enabled. Sensitive values are stored in your system keychain.
show_turnPrefix prompt and response lines with a per-session turn counter (#1, #2, ...).
${user_config.show_turn}idle_labelLabel for the 'time since last response' delta.
${user_config.idle_label}log_monthsDelete history-YYYY-MM.jsonl files older than this many months. 0 disables pruning.
${user_config.log_months}Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
sanity_capSuppress any delta larger than this many seconds (guards against stale state from crashed sessions). 86400 = 24h.
${user_config.sanity_cap}took_labelLabel for the response-duration delta.
${user_config.took_label}log_historyAppend every event as a JSON line to a monthly history log in the plugin data dir.
${user_config.log_history}recap_labelPrefix for the session-recap line emitted on session end.
${user_config.recap_label}show_deltasShow per-event delta (idle/took) on prompt and response lines.
${user_config.show_deltas}time_formatstrftime format for the wall-clock timestamp on each line. Examples: %H:%M:%S (default), %Y-%m-%d %H:%M:%S, %l:%M %p.
${user_config.time_format}cleanup_daysDelete per-session state files older than this many days. 0 disables cleanup.
${user_config.cleanup_days}prompt_labelLabel prefixing prompt lines.
${user_config.prompt_label}show_sessionAppend session-elapsed time to every prompt and response line.
${user_config.show_session}session_labelLabel for the session-elapsed suffix (only shown when Show session elapsed is on).
${user_config.session_label}response_labelLabel prefixing response lines.
${user_config.response_label}subagent_labelLabel for subagent timing lines.
${user_config.subagent_label}recap_min_turnsOnly emit the session recap when the session had at least this many turns.
${user_config.recap_min_turns}Inline timestamps and per-turn deltas in your Claude Code transcript.
prompt #1 14:05:00
response #1 14:05:30 took 30s
prompt #2 14:06:12 idle 42s
subagent Explore took 8s
response #2 14:08:10 took 1m58s
session recap: 1h23m · 17 turns · avg response 11s · longest 2m15s
Every prompt and response gets a small timestamp line. You see how long Claude is taking, how long you're idle between turns, how long subagents run, and how the session went overall.
/plugin marketplace add k33bs/ticktock
/plugin install ticktock@ticktock
Open /hooks (or restart Claude Code) once to register the hook events. That's it — the useful features are on by default.
Heads up on the
/pluginconfigure screen. When you enable ticktock, Claude Code opens a multi-field configuration UI. Every field is currently shown blank — even though ticktock declares sensibledefaultvalues in its manifest, the/pluginUI doesn't pre-fill from them yet. This is tracked upstream as anthropics/claude-code#46477.What to do: press Enter / Tab through every blank field. ticktock's built-in defaults apply to anything left empty, so you end up with the intended behavior anyway. If you want to customize, use the
CLAUDE_TICKTOCK_*env vars (see Configuration) — they take precedence over the plugin menu.
By default, ticktock adds two kinds of lines to the transcript:
Prompt line — emitted when you submit a message.
prompt 14:05:00 idle 3m12s
14:05:00 — wall-clock time you submittedidle 3m12s — time since Claude's last response (how long you were thinking / away)Response line — emitted when Claude finishes responding.
response 14:05:30 took 30s
14:05:30 — wall-clock time the response endedtook 30s — how long the response took (prompt → completion)The idle delta is hidden on the first prompt of a session (no prior response to compare against). The took delta is always present on a response because the matching prompt just fired moments earlier. Any delta larger than 24 hours (configurable via sanity_cap) is silently suppressed so stale state from a crashed session doesn't surface as bogus numbers — see Robustness.
Appends running session time to every prompt and response line (not to subagent or recap lines — those stay compact).
prompt 14:05:00 idle 3m12s session 12m
response 14:05:30 took 30s session 12m30s
Disable via CLAUDE_TICKTOCK_SHOW_SESSION=0 (or show_session = 0 in the plugin menu).
Prefixes prompt and response lines with a per-session turn number. Useful for long sessions where "which prompt was that?" matters.
prompt #5 14:05:00 idle 3m12s
response #5 14:05:30 took 30s
Disable via CLAUDE_TICKTOCK_SHOW_TURN=0 (or show_turn = 0 in the plugin menu).
When a subagent finishes, a dedicated line shows its duration. Nothing to enable — if you don't use subagents, you never see this. Parallel subagents are tracked independently by their agent_id, so two subagents running at the same time don't step on each other.
prompt 14:06:12 idle 42s
subagent Explore took 8s
subagent code-reviewer took 1m04s
response 14:08:10 took 1m58s
One summary line at session end (triggered by /clear, /compact, quit, or any other SessionEnd event). Only shown for sessions with at least recap_min_turns turns (default 3) so quick "what time is it" sessions don't generate noise.
session recap: 1h23m · 17 turns · avg response 11s · longest 2m15s
Persistent, structured log of every event for external analysis. Machine-readable JSON, one event per line. Off by default — enable when you want it.
File: ${CLAUDE_PLUGIN_DATA}/history-YYYY-MM.jsonl — monthly rotation, files older than log_months are pruned on each run (default 12 months; set to 0 to keep forever).
{"v":1,"ts":"2026-04-19T14:05:00Z","session":"abc123","kind":"prompt","turn":5}
{"v":1,"ts":"2026-04-19T14:05:20Z","session":"abc123","kind":"subagent","turn":5,"name":"Explore","took_s":8}
{"v":1,"ts":"2026-04-19T14:05:30Z","session":"abc123","kind":"response","turn":5,"took_s":30}
{"v":1,"ts":"2026-04-19T15:00:00Z","session":"abc123","kind":"session_end","turns":17,"elapsed_s":4980,"total_response_s":204,"longest_response_s":135}
Fields common to every event:
npx claudepluginhub k33bs/ticktock --plugin ticktockUltra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Memory compression system for Claude Code - persist context across sessions
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Curate auto-memory, promote learnings to CLAUDE.md and rules, extract proven patterns into reusable skills.
Harness-native ECC operator layer - 67 agents, 271 skills, 92 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses