Observed (agent-bundle 105c65d, cargo-hauler 0.3.0)
Rebuilding a plugin without bumping package.json version, then re-running the emitted installers:
- Cursor
artifact/plugin/install.mjs: Error: Refusing content collision at ~/.cursor/plugins/local/cargo-hauler. — no flag to replace. Had to rm -rf the install dir first.
- Claude:
claude plugin marketplace update + claude plugin update cargo-hauler@… → ✔ cargo-hauler is already at the latest version (0.3.0) even though the marketplace snapshot content changed. Had to claude plugin uninstall then install.
- Codex:
codex plugin add re-copied fine.
The collision guard is correct for a foreign install, but for the artifact you just built it turns every iteration into a three-host manual dance, and Claude's version-equality shortcut silently leaves stale hooks/MCP in place (I only caught it with diff -rq artifact/plugin ~/.claude/plugins/cache/...).
Request
install.mjs --replace (or --force) that replaces the install when the plugin name matches, still refusing when the target isn't an agent-bundle-emitted layout of the same plugin.
- Have
install.mjs print a content-hash comparison on collision (same version, different content) so the operator knows a stale copy is running.
- Document, in the emitted
INSTALL.md, the reinstall recipe per host for same-version rebuilds — including that Claude's plugin update is version-gated and needs uninstall + install for content-only changes.
- Nice to have:
agent-bundle install --hosts cursor,claude,codex --replace that runs the right sequence per host and diffs the installed copy against the artifact afterwards.
Observed (agent-bundle 105c65d, cargo-hauler 0.3.0)
Rebuilding a plugin without bumping
package.jsonversion, then re-running the emitted installers:artifact/plugin/install.mjs:Error: Refusing content collision at ~/.cursor/plugins/local/cargo-hauler.— no flag to replace. Had torm -rfthe install dir first.claude plugin marketplace update+claude plugin update cargo-hauler@…→✔ cargo-hauler is already at the latest version (0.3.0)even though the marketplace snapshot content changed. Had toclaude plugin uninstalltheninstall.codex plugin addre-copied fine.The collision guard is correct for a foreign install, but for the artifact you just built it turns every iteration into a three-host manual dance, and Claude's version-equality shortcut silently leaves stale hooks/MCP in place (I only caught it with
diff -rq artifact/plugin ~/.claude/plugins/cache/...).Request
install.mjs --replace(or--force) that replaces the install when the plugin name matches, still refusing when the target isn't an agent-bundle-emitted layout of the same plugin.install.mjsprint a content-hash comparison on collision (same version, different content) so the operator knows a stale copy is running.INSTALL.md, the reinstall recipe per host for same-version rebuilds — including that Claude'splugin updateis version-gated and needsuninstall+installfor content-only changes.agent-bundle install --hosts cursor,claude,codex --replacethat runs the right sequence per host and diffs the installed copy against the artifact afterwards.