[FEATURE] Persistent in-place plugin loading (no cache)

Status Fixed / completed
Maintainer reply ✓ Yes — bcherny
Activity 3 comments · opened Jan 12, 2026 · closed Aug 17, 2026
💡 Likely answer: A maintainer (bcherny, collaborator) responded on this thread — see the highlighted reply below.

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

When developing plugins with feedback loops that modify their own source code (e.g., self-improving plugins, learning systems), the current caching behavior breaks the workflow:

  1. Plugins installed via claude plugin install are copied to cache (~/.claude/plugins/cache/)
  2. Any edits made by the plugin go to the cached copy, not the original source
  3. Changes are lost on reinstall/update

The --plugin-dir flag solves this by loading plugins in-place without caching, but it's session-only and must be specified every time.

Current Workarounds:

  • Use --plugin-dir every session (tedious, requires alias/wrapper)
  • Manually symlink cache directories to source (fragile, breaks on update)
  • Store mutable state outside the plugin (requires restructuring)

Proposed Solution

Add a persistent way to load plugins in-place.

Option A: pluginDirs in settings.json

{
  "pluginDirs": [
    "/path/to/my-plugins"
  ]
}

Alternative Solutions

Option B: Per-plugin cache: false option

{
  "plugins": {
    "my-plugin@my-marketplace": {
      "cache": false
    }
  }
}

Option C: --plugin-dir equivalent in settings

{
  "defaultPluginDirs": [
    "/path/to/dev-plugins"
  ]
}

Priority

High - Significant impact on productivity

Feature Category

Plugin system

Use Case Example

  • Self-improving plugins: Sessions edit plugin source for continuous improvement
  • Plugin development: Rapid iteration without reinstalling
  • Shared team plugins: Single source of truth on network drive
  • Local marketplaces: Development workflows where source = runtime

Additional Context

The --plugin-dir flag already implements the desired behavior—this request is simply to make it persistent via configuration.

View original on GitHub ↗

3 Comments

patrickkidd · 7 months ago

Adding a JSON config value for --plugin-dir would also solve my main problem; that I cannot use my own plugin from source from the VSCode extension. I am forced to use the CLI UI.

Should I just leave this additional point here, or should I create a new issue.

saharis9988 · 6 months ago

Hi
Any news regarding this feature request?
It's very important one

bcherny collaborator · 14 days ago

Persistent in-place plugin loading is available now, two ways:

  1. Put the plugin under your skills directory with a .claude-plugin/plugin.json (scaffold with claude plugin init my-plugin). It loads every session as my-plugin@skills-dir, in place, no cache copy — edits the plugin makes to itself stick. (v2.1.157)
  2. For a marketplace plugin, use a command source with "mode": "link"; the printed directory is used in place instead of copied. (v2.1.229)

Changelog: https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md
Docs: https://code.claude.com/docs/en/plugins-reference#skills-directory-plugins

🤖 Generated with Claude Code