Skip to main content

Track warm/cold status of Claude Code sessions in a dedicated DuckDB file

Project description

claude-session-status

Know at a glance whether your Claude Code prompt cache is still warm — before you send your next message.

Problem

Claude's prompt cache has a 5-minute TTL. If you haven't sent a message in over 5 minutes, the cache expires and Claude re-processes your full conversation context on the next turn — costing more tokens. When you're juggling multiple projects across several terminals, it's easy to lose track of which sessions are still within that window.

This package tracks the timestamp of your last Claude turn per session and shows you a live countdown so you know exactly how much time you have left before the cache expires.

What the statuses mean

Status Meaning
WARM + countdown Last turn was less than 5 min ago — cache is active, next message is cheap
EXPIRED Last turn was more than 5 min ago — cache is gone, next message re-processes full context
ENDED Session was closed

Install

pip install claude-session-status

Hook integration

Add to ~/.claude/settings.json:

{
  "hooks": {
    "SessionStart": [
      {"type": "command", "command": "claude-session-status mark-start"}
    ],
    "Stop": [
      {"type": "command", "command": "claude-session-status mark-turn"}
    ],
    "SessionEnd": [
      {"type": "command", "command": "claude-session-status mark-end"}
    ]
  }
}
  • SessionStart → records session opened
  • Stop → fires after every Claude response, updates the last-turn timestamp
  • SessionEnd → marks session closed

Claude Code pipes session JSON to stdin; the scripts extract session_id, project, and cwd automatically.

Live view

claude-session-status watch
claude-session-status  (refreshes every 5s, Ctrl-C to quit)

SESSION         PROJECT                 LAST TURN      CACHE
abc123def456    my-project              2m 14s ago     WARM  ████████░░  2m 46s left
xyz789abcd12    other-proj              4m 51s ago     WARM  ░░░░░░░░░░  0m 09s left
def456ghi789    old-project             6m 03s ago     EXPIRED  (6m 3s ago)
abc999xyz000    done-project            -              ENDED

Commands

claude-session-status watch       # Live cache status table (Ctrl-C to quit)
claude-session-status mark-start  # Called by SessionStart hook
claude-session-status mark-turn   # Called by Stop hook
claude-session-status mark-end    # Called by SessionEnd hook

DB schema

CREATE TABLE session_status (
    session_id   TEXT PRIMARY KEY,
    project      TEXT,
    cwd          TEXT,
    started_at   TIMESTAMP,
    last_turn_at TIMESTAMP,
    status       TEXT  -- 'active' | 'ended'
)

DB location: ~/.claude/claude-session-status/status.duckdb

Design

  • Runtime dependency: duckdb only
  • Every DB access: open → read/write → close. No persistent connections.
  • Hook commands are silent on success, errors go to stderr (never block Claude Code)
  • 3-retry lock backoff on connect

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

claude_session_status-0.2.0.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

claude_session_status-0.2.0-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file claude_session_status-0.2.0.tar.gz.

File metadata

  • Download URL: claude_session_status-0.2.0.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for claude_session_status-0.2.0.tar.gz
Algorithm Hash digest
SHA256 82e26ab05e00c53b82980113ab66f6a3f832a9414818297f216a21efb93762cf
MD5 e7a52fec370b8f842b14fa4f9214a615
BLAKE2b-256 b4f92dc2725535fe73e1dc26958228ea2ef2e3f388313ccc99d928b7f5d478f9

See more details on using hashes here.

File details

Details for the file claude_session_status-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for claude_session_status-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c8063e0cfa0130884ac901e71fc5e8228d47c1d62c1a76c615e35765370404bd
MD5 774ded8063160c84763a4b4f6bef7002
BLAKE2b-256 8828994b0af63c784bff64e26a36a0e5bdc5c549d6b9838e0df2a9face89aa9f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page