Plugin cache updates leave stale paths in settings.json

Resolved 💬 3 comments Opened Jan 12, 2026 by iamadalek Closed Feb 27, 2026

Description

When a plugin updates and gets a new cache hash, references to the old hash in ~/.claude/settings.json are not updated. This causes hook errors when the old cached directory is cleaned up.

Steps to Reproduce

  1. Have a plugin installed with hooks configured in settings.json (e.g., ralph-wiggum)
  2. Plugin updates and gets new cache hash (e.g., 6d3752c000e2dbc4a7733cd4)
  3. Old cache directory is removed
  4. settings.json still references the old hash

Error

Stop hook error: Failed with non-blocking status code: /bin/sh: /Users/username/.claude/plugins/cache/claude-plugins-official/ralph-wiggum/6d3752c000e2/hooks/stop-hook.sh: No such file or directory

Affected Paths

Both hooks and permissions can reference stale hashes:

{
  "permissions": {
    "allow": [
      "Bash(/Users/username/.claude/plugins/cache/.../6d3752c000e2/scripts/*)"
    ]
  },
  "hooks": {
    "Stop": [{
      "hooks": [{
        "command": "/Users/username/.claude/plugins/cache/.../6d3752c000e2/hooks/stop-hook.sh"
      }]
    }]
  }
}

Expected Behavior

When a plugin cache is updated to a new hash, settings.json should be updated to reference the new paths, or plugins should use stable paths that don't include the hash.

Workaround

Manually update the hash in ~/.claude/settings.json to match the current cache directory.

Environment

  • Claude Code version: latest (as of 2025-01-12)
  • OS: macOS (Darwin 25.2.0)

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗