Skip to content

gsd-check-update.js hardcodes ~/.claude/ path, breaks multi-account setups #870

@nikicat

Description

@nikicat

Bug

gsd-check-update.js (and gsd-statusline.js) hardcode ~/.claude/ as the config directory. This breaks setups where Claude Code uses a custom config directory (e.g. ~/.claude-personal/).

How to reproduce

  1. Run Claude Code with a custom config directory (e.g. CLAUDE_CONFIG_DIR=~/.claude-personal)
  2. Run /gsd:update — files get installed to ~/.claude-personal/get-shit-done/
  3. The update hook reads VERSION from ~/.claude/get-shit-done/VERSION (stale)
  4. The status bar permanently shows the update notification even though the update was installed

Root cause

In gsd-check-update.js lines 12 and 17:

const cacheDir = path.join(homeDir, '.claude', 'cache');
// ...
const globalVersionFile = path.join(homeDir, '.claude', 'get-shit-done', 'VERSION');

These should respect CLAUDE_CONFIG_DIR (or however Claude exposes its config path) instead of hardcoding ~/.claude/.

Same issue in gsd-statusline.js which reads the cache file from the hardcoded path.

Expected behavior

The hooks should detect the actual Claude config directory and use it for all file paths (VERSION, cache, etc.).

Environment

  • OS: Linux (Arch)
  • Claude Code with multiple accounts using separate config dirs (~/.claude-personal/, ~/.claude-work/)
  • GSD version: 1.22.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triageNew issue awaiting maintainer review

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions