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
Run once after install:
claude-session-status install-hooks
This writes the required hooks into ~/.claude/settings.json automatically, preserving any existing config. To remove them:
claude-session-status uninstall-hooks
What each hook does:
SessionStart→ records session opened, stamps initial turn timeStop→ fires after every Claude response, updates last-turn timestampPostToolUse→ fires after every tool call mid-turn, keeps TTL accurate during long multi-tool runsSessionEnd→ marks session closed
Live view
claude-session-status watch
claude-session-status (Ctrl-C to quit)
SESSION TITLE PROJECT LAST TURN CACHE
abc123def456 Fix auth bug my-app 0m 12s ago WARM ████████░░ 4m 48s left
xyz789abcd12 Build dashboard other-proj 4m 51s ago WARM ░░░░░░░░░░ 0m 09s left
def456ghi789 Refactor pipeline old-project 6m 03s ago EXPIRED (6m 3s ago)
abc999xyz000 Update tests done-project - ENDED
Refreshes every second.
Commands
claude-session-status install-hooks # Add hooks to ~/.claude/settings.json
claude-session-status uninstall-hooks # Remove hooks from ~/.claude/settings.json
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 and PostToolUse hooks
claude-session-status mark-end # Called by SessionEnd hook
DB schema
CREATE TABLE session_status (
session_id TEXT PRIMARY KEY,
title TEXT,
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:
duckdbonly - Every DB access: open → read/write → close. No persistent connections.
- Hook commands are silent on success, errors go to stderr (never block Claude Code)
PostToolUsehook is async — never delays tool execution- 3-retry lock backoff on connect
- Session title read from
ai-titleentries in the Claude Code transcript JSONL
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file claude_session_status-0.2.11.tar.gz.
File metadata
- Download URL: claude_session_status-0.2.11.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8706eb9bc20813d5278f7eda361c3d81366f09134450974455d24ddda048f65a
|
|
| MD5 |
649f604003a1e0f2ad1491173a31ff15
|
|
| BLAKE2b-256 |
6b84abd525809875f0256166a562c6309deea297b3701c08d918f858116ab691
|
File details
Details for the file claude_session_status-0.2.11-py3-none-any.whl.
File metadata
- Download URL: claude_session_status-0.2.11-py3-none-any.whl
- Upload date:
- Size: 8.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a90d7930dc475b8d3288f52e9375dc440793e18979385e144b4e07c24dde471
|
|
| MD5 |
e3787944856311c520b3cd39b2a4cf6f
|
|
| BLAKE2b-256 |
f9568d4175843466be6820acd344b18cf9ffdb852aa9eca4607ab806b1eb67ee
|