You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Undeclared legacy hyphenated tool aliases cause 4 activation errors on OpenClaw 2026.9.x ("plugin must declare contracts.tools") #63
On OpenClaw 2026.9.x the plugin logs four ERROR lines on every Gateway start because it registers legacy hyphenated tool aliases that are not declared in openclaw.plugin.json → contracts.tools. OpenClaw's plugin loader now rejects undeclared tool registrations.
[plugins] plugin must declare contracts.tools for: supermemory-search (plugin=openclaw-supermemory, source=.../@supermemory/openclaw-supermemory/dist/index.js)
[plugins] plugin must declare contracts.tools for: supermemory-save (...)
[plugins] plugin must declare contracts.tools for: supermemory-forget (...)
[plugins] plugin must declare contracts.tools for: supermemory-profile (...)
Environment
@supermemory/openclaw-supermemory 2.1.16 (also present on main, index.ts L79–L82)
OpenClaw 2026.9.2 and 2026.9.3, npm global install, Linux x64, Node 26.8.1
Plugin otherwise works: initializes, supermemory_search/store/forget/profile (underscore names) are available.
OpenClaw's registerTool path runs findUndeclaredPluginToolNames() against contracts.tools and reports each undeclared name via reportRegistrationError (surfaced as "plugin activation errors" in openclaw update verification and in doctor).
Fix options
Drop the four hyphenated registrations (they duplicate the underscore tools; the hyphen forms are not valid tool names for several model providers anyway). This is what I applied locally and it removes all four errors with no loss of functionality.
Or, if backward compatibility matters, add the four hyphenated names to contracts.tools — but that doubles the tool surface exposed to the model.
Happy to open a PR for option 1 if you prefer that direction.
Thanks for the detailed report, the diagnosis is spot on. The four hyphenated aliases have been registering without being declared in contracts.tools since 2.1.13, and 2026.9.x now rejects them.
We went with a variation of your option 2. The hyphenated names are our standard across the other Supermemory plugins (Codex, Claude), so rather than dropping them we declared them in the manifest alongside the snake_case names. The snake_case names are now deprecated in the README and will be removed in 3.0, which gets the tool surface back down to four.
Activity
MaheshtheDev commentedon Sep 9, 2026
Thanks for the detailed report, the diagnosis is spot on. The four hyphenated aliases have been registering without being declared in
contracts.toolssince 2.1.13, and 2026.9.x now rejects them.We went with a variation of your option 2. The hyphenated names are our standard across the other Supermemory plugins (Codex, Claude), so rather than dropping them we declared them in the manifest alongside the snake_case names. The snake_case names are now deprecated in the README and will be removed in 3.0, which gets the tool surface back down to four.
Draft PR: #64
One small note on your option 1 rationale: hyphens are accepted in tool names by OpenAI, Anthropic and Gemini, so that was not a constraint here.
Appreciate you offering the PR, and thanks for tracing it to the exact registration lines.
Declare hyphenated tool aliases in plugin manifest (#64)
Declare hyphenated tool aliases in plugin manifest