Skip to content

Concurrent sessions conflict — .caveman-active flag file is global, not per-session #184

@Chagui-

Description

@Chagui-

Problem

.caveman-active is single global file. When multiple Claude Code sessions run simultaneously with different caveman levels, they clobber each other.

Session A sets ultra → writes ~/.claude/.caveman-active = "ultra"
Session B starts → overwrites file = "full"
Session A statusline now shows wrong mode.

Both caveman-activate.js (SessionStart) and caveman-mode-tracker.js (UserPromptSubmit) write to same global path.

Fix

Use session_id from hook stdin JSON to write per-session flag files:

~/.claude/.caveman-active-{session_id}

session_id is available in:

  • Hook stdin JSON (data.session_id)
  • Statusline stdin JSON (.session_id)

Changes needed

  1. caveman-activate.js — parse stdin for session_id, write ~/.claude/.caveman-active-{session_id}, cleanup stale files >24h
  2. caveman-mode-tracker.js — extract session_id from already-parsed stdin, write per-session file
  3. caveman-statusline.sh — extract session_id via jq, read per-session file, fallback to global

Environment

  • macOS, Claude Code CLI
  • Multiple terminal sessions with different caveman levels

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions