Skip to main content

/session-gc - Session Garbage Collection

Garbage collect dead sessions from the session registry, prune stale task claims, clean file locks from dead PIDs, and trigger a quick vacuum sweep for orphaned tasks.

Usage

/session-gc                    # Full GC: prune dead sessions + quick vacuum
/session-gc --dry-run # Preview what would be cleaned
/session-gc --json # JSON output
/session-gc --no-vacuum # Skip the quick vacuum sweep

Options

OptionDescription
--dry-runPreview cleanup actions without executing
--jsonOutput as JSON instead of formatted text
--no-vacuumSkip the quick vacuum sweep after GC
--core-dir PATHOverride coditect-core directory path

What Gets Cleaned

TargetCriteriaAction
Dead session entriessession_registry rows where PID is not runningMark status = ended
Stale task claimstask_claims rows where owner PID is deadDelete claim row
Stale file locksfile_locks rows where owner PID is deadDelete lock row
Stale alertssession_messages with status = 'pending' older than 7 daysMark as expired

System Prompt

EXECUTION DIRECTIVE: When the user invokes /session-gc, you MUST:

  1. Run session cleanup via the message bus:
import os, sys
sys.path.insert(0, 'submodules/core/coditect-core')
from scripts.core.session_message_bus import get_session_message_bus

bus = get_session_message_bus()

# Step 1: Clean dead sessions and stale claims
bus._cleanup_stale_sessions()

# Step 2: Get stats for reporting
stats = bus.stats()
  1. Run quick vacuum sweep (unless --no-vacuum):
from scripts.core.context_vacuum import ContextVacuum

vacuum = ContextVacuum()
report = vacuum.quick_sweep()
orphan_summary = vacuum.format_report(report, compact=True)
  1. Display results:
Session GC Complete
===================
Dead sessions cleaned: 3
Stale claims pruned: 2
File locks released: 0
Stale alerts expired: 5

Active sessions: 2
Active claims: 3
Active locks: 0

Orphaned Tasks: 1 (1 dead claim)
Run /vacuum for full analysis

CLI alternative:

python3 scripts/core/context_vacuum.py --quick   # Quick sweep includes GC

Example Output

Standard GC

Session GC Complete — 2026-02-12
===================================
Cleaned:
Dead sessions: 3 (claude-55631, claude-9958, codex-41200)
Stale claims: 2 (H.13.9.7, N.6.10.5)
File locks: 0
Stale alerts: 5

Current state:
Active sessions: 2
Active claims: 3
Active locks: 0

Quick Vacuum: Orphaned Tasks: 0

Dry Run

Session GC Dry Run — 2026-02-12
===================================
Would clean:
Dead sessions: 3 (claude-55631, claude-9958, codex-41200)
Stale claims: 2 (H.13.9.7, N.6.10.5)
File locks: 0
Stale alerts: 5

No changes made (--dry-run)

Integration Points

SystemIntegration
/orientQuick vacuum runs at Step 0c, which surfaces orphans from dead sessions
/session-endWarns about uncompleted tasks before ending
/vacuumFull orphan analysis — /session-gc handles just the cleanup subset
_cleanup_stale_sessions()Existing bus method — /session-gc wraps it with reporting

Success Output

COMMAND COMPLETE: /session-gc
Dead sessions: 3
Stale claims: 2
Orphans: 0
Duration: 0.8s

Command Version: 1.0.0 Created: 2026-02-12 Author: Claude (Opus 4.6) ADR: ADR-178 Track: H.13.10