Automatically detects and heals locked OpenClaw session files. Use when you see "session file locked" errors or models failing due to lock timeouts. Clears s...
Automatically detects and heals locked OpenClaw session files.
# Check for locked sessions
neckr0ik-session-healer check
# Clear all stale locks
neckr0ik-session-healer heal
# Clear specific session lock
neckr0ik-session-healer unlock <session-id>
The "session file locked" error occurs when:
Symptoms:
~/.openclaw/agents/*/sessions/*.jsonl.lock filesneckr0ik-session-healer check [--verbose]
Scans for locked sessions and reports:
- Lock file path
- Owning PID
- Process status (alive/dead)
- Lock age
- Session ID
neckr0ik-session-healer heal [--force]
Clears all stale locks (where owning process is dead).
Options:
--force Clear all locks, even for alive processes (dangerous)
--dry-run Show what would be cleared without doing it
neckr0ik-session-healer unlock <session-id>
Clears a specific session lock by session ID.
neckr0ik-session-healer recover <session-id>
Attempts to recover a corrupted session file:
- Validates JSON lines
- Removes corrupted lines
- Creates backup before recovery
$ neckr0ik-session-healer check
Checking for locked sessions...
Found 3 lock files:
✗ session: c4fa26e6-20be-4843-9678-a2f328dd1844
Lock: /Users/user/.openclaw/agents/main/sessions/.../c4fa...jsonl.lock
PID: 52251 (DEAD - process not running)
Age: 2 hours 34 minutes
Status: STALE - safe to clear
✓ session: a1b2c3d4-5678-90ab-cdef-1234567890ab
Lock: /Users/user/.openclaw/agents/main/sessions/.../a1b2...jsonl.lock
PID: 12345 (ALIVE)
Age: 5 minutes
Status: ACTIVE - do not clear
$ neckr0ik-session-healer heal
Healing stale locks...
[CLEARED] c4fa26e6-20be-4843-9678-a2f328dd1844 (PID 52251 was dead)
[SKIPPED] a1b2c3d4-5678-90ab-cdef-1234567890ab (PID 12345 still alive)
Healed 1 session. 0 errors.
scripts/healer.py - Main healer scriptreferences/lock-recovery.md - Detailed recovery guideZIP package — ready to use