CLAUDE_CONFIG_DIR does not support automatic plugin discovery

Resolved 💬 4 comments Opened Jan 23, 2026 by sstraus Closed Jan 27, 2026

Description

When using CLAUDE_CONFIG_DIR to point to an alternate configuration directory (e.g., ~/.claude-private/), plugins registered in installed_plugins.json and enabled in settings.json are not automatically discovered by the interactive session.

Steps to Reproduce

  1. Create alternate config directory:

``bash
mkdir -p ~/.claude-private/plugins
``

  1. Symlink a plugin:

``bash
ln -s /path/to/my-plugin ~/.claude-private/plugins/my-plugin
``

  1. Register plugin in ~/.claude-private/plugins/installed_plugins.json:

``json
{
"version": 2,
"plugins": {
"my-plugin@local": [{
"scope": "user",
"installPath": "/Users/me/.claude-private/plugins/my-plugin",
"version": "1.0.0"
}]
}
}
``

  1. Enable in ~/.claude-private/settings.json:

``json
{
"enabledPlugins": {
"my-plugin@local": true
}
}
``

  1. Run Claude:

``bash
CLAUDE_CONFIG_DIR=~/.claude-private claude
``

Expected Behavior

  • claude plugin list shows the plugin as ✔ enabled (this works)
  • Interactive session should discover and load the plugin's commands/agents/skills

Actual Behavior

  • claude plugin list shows the plugin as ✔ enabled
  • Interactive session shows "No plugins or MCP servers installed"
  • Plugin commands are not available (e.g., /my-plugin:command returns "Unknown skill")

Workaround

Using --plugin-dir explicitly works:

CLAUDE_CONFIG_DIR=~/.claude-private claude --plugin-dir ~/.claude-private/plugins/my-plugin

Environment

  • Claude Code version: 2.1.17
  • OS: macOS Darwin 25.2.0

Impact

This prevents users from having separate Claude configurations (e.g., for different accounts, testing, or isolated environments) with their own plugin sets.

View original on GitHub ↗

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