ruvnet/ruflo · error
Plugin ${name} requires core version <= ${resolvedPlugin.met
Error message
Plugin ${name} requires core version <= ${resolvedPlugin.metadata.maxCoreVersion}, but current version is ${this.config.coreVersion} What it means
Thrown by EnhancedPluginRegistry.register() during the upper-bound core-version check. If plugin.metadata.maxCoreVersion is set, the registry tests '<=' + maxCoreVersion against config.coreVersion. A miss means the plugin declares it does not work with cores newer than its ceiling, and registration is refused rather than loading a plugin likely to break at runtime.
Source
Thrown at v3/@claude-flow/plugins/src/registry/enhanced-plugin-registry.ts:311
}
// Check max plugins
if (this.config.maxPlugins && this.plugins.size >= this.config.maxPlugins) {
throw new Error(`Maximum plugin limit (${this.config.maxPlugins}) reached`);
}
// Check core version compatibility
if (resolvedPlugin.metadata.minCoreVersion) {
if (!satisfiesVersion(`>=${resolvedPlugin.metadata.minCoreVersion}`, this.config.coreVersion)) {
throw new Error(
`Plugin ${name} requires core version >= ${resolvedPlugin.metadata.minCoreVersion}, ` +
`but current version is ${this.config.coreVersion}`
);
}
}
if (resolvedPlugin.metadata.maxCoreVersion) {
if (!satisfiesVersion(`<=${resolvedPlugin.metadata.maxCoreVersion}`, this.config.coreVersion)) {
throw new Error(
`Plugin ${name} requires core version <= ${resolvedPlugin.metadata.maxCoreVersion}, ` +
`but current version is ${this.config.coreVersion}`
);
}
}
// Parse dependencies
const dependencies = this.parseDependencies(resolvedPlugin.metadata.dependencies);
// Add to dependency graph
this.dependencyGraph.addPlugin(name, version, dependencies);
// Create config
const pluginConfig: PluginConfig = {
enabled: true,
priority: 50,
settings: {},
...this.config.defaultConfig,View on GitHub (pinned to fa13ee4ad6)
Solutions
- Upgrade the plugin to a release built for your core major (no maxCoreVersion ceiling below it)
- Drop the incompatible legacy plugin from the discovery/load list
- If you maintain the plugin, raise or remove metadata.maxCoreVersion after verifying compatibility, and rebuild
Example fix
// before
await registry.register(legacyPlugin); // maxCoreVersion: '2.9.0', coreVersion '3.0.0' -> throws
// after
// in the plugin source, after verifying compatibility with core v3:
// metadata: { name: 'legacy', version: '3.0.0' /* maxCoreVersion removed */ }
await registry.register(upgradedPlugin); Defensive patterns
Strategy: validation
Validate before calling
const maxCore = plugin.metadata.maxCoreVersion;
if (maxCore && !satisfiesSemver(coreVersion, `<=${maxCore}`)) {
logger.warn(
`skipping ${plugin.metadata.name}: supports core <= ${maxCore}, host is ${coreVersion}`
);
continue;
}
await registry.register(plugin); Prevention
- On core major upgrades, audit every plugin's maxCoreVersion ceiling in your load list
- Prefer upgrading legacy plugins over force-loading them against their declared ceiling
- Filter incompatible plugins during discovery with a logged skip instead of letting register() throw at boot
When it happens
Trigger: Registering a legacy plugin declaring maxCoreVersion '2.9.0' against a registry with coreVersion '3.x'; plugin package abandoned before the v3 API rename, so its ceiling excludes your host; major-version upgrade of the host with old plugin bundles still in the load path.
Common situations: Upgrading the core/host to a new major while third-party plugins lag behind; stale plugin directories auto-discovered at boot; coreVersion config edited to a newer value without checking plugin ceilings.
Related errors
- Plugin ${name} requires core version >= ${resolvedPlugin.met
- Invalid plugin: does not implement IPlugin interface
- Plugin ${name} already registered
- Maximum plugin limit (${this.config.maxPlugins}) reached
- Plugin ${name} not found
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/08d6a7aa61817faf.
Report an issue: GitHub.