Skip to content

warn: Claude plugin manifest exists and is not managed by dotagents #190

Description

@dakshshah96

Environment

  • @sentry/dotagents version 3.1.0
  • macOS
  • Project-scoped installation targeting Claude and Codex
  • Command: npx -y @sentry/dotagents@3.1.0 --project install

Steps to Reproduce

  1. Configure plugins that ship both .claude-plugin/plugin.json and .codex-plugin/plugin.json, without a root plugin.json:

    agents = ["claude", "codex"]
    
    [[plugins]]
    name = "posthog"
    source = "PostHog/ai-plugin"
    path = "."
    targets = ["claude", "codex"]
    
    [[plugins]]
    name = "pstack"
    source = "michael-denyer/pstack-claude"
    path = "plugins/pstack"
    targets = ["claude", "codex"]
  2. Run:

    npx -y @sentry/dotagents@3.1.0 --project install
  3. Run the command again. The same warnings recur.

This also reproduces with a minimal local plugin containing only these two files:

source/
├── .claude-plugin/plugin.json
└── .codex-plugin/plugin.json

Each file can contain:

{
  "name": "dual-native",
  "version": "1.0.0"
}

Declare the local plugin with:

agents = ["claude", "codex"]

[[plugins]]
name = "dual-native"
source = "path:./source"
targets = ["claude", "codex"]

Expected Result

Dotagents recognizes both manifests as publisher-authored files belonging to the installed plugin, preserves their runtime-specific content, and emits no unmanaged-manifest warnings.

This should remain true after reinstalling or reloading installed state.

Actual Result

Every install emits:

warn: Claude plugin manifest exists and is not managed by dotagents: <repo>/.agents/plugins/posthog/.claude-plugin/plugin.json
warn: Claude plugin manifest exists and is not managed by dotagents: <repo>/.agents/plugins/pstack/.claude-plugin/plugin.json

The Claude manifests remain intact, but dotagents incorrectly treats files it copied from the plugin source as unrecognized files.

Source inspection suggests the following cause:

  • loadPluginInterfaces() checks native fallback manifests in Codex-first order.
  • It returns after the first match and registers only that runtime in authoredNativeInterfaces.
  • Installation copies both native manifests, but .dotagents-native-source and .dotagents-native-fallbacks record only codex.
  • writePluginManifests() encounters the Claude manifest without authored provenance or a managed-file marker, then warns and skips it.

A fix likely needs to discover and preserve all publisher-authored native interfaces. The installed-provenance validation also currently rejects multiple fallback runtimes when nativeSource is set, so that invariant would need updating.

Verified with a minimal reproduction across fresh installation, repeated installation, and installed-state reload.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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