Problem
In Tiverton on May 12, 2026, Boulton had claw-wall.search_channel_context and claw-wall.get_channel_messages correctly compiled into .claw-runtime/context/boulton/tools.json; cllama also logged tool_manifest_loaded with tools_count=25 for Boulton.
The provider-facing tool names are safe aliases with hash suffixes, for example:
claw-wall_search_channel_context_2919442f
claw-wall_get_channel_messages_c83b6078
When the operator asked Boulton to try those retrieval tools, the model attempted calls to the unsuffixed sanitized names:
claw-wall_search_channel_context
claw-wall_get_channel_messages
cllama did not recognize those as managed tools, classified them as runner-native, and returned the tool calls to Hermes. Hermes then printed Unknown tool 'claw-wall_search_channel_context' and sent a local tool-error message back to the model.
This makes correctly compiled managed tools appear "declared but not wired" whenever a model drops the safety hash suffix from a sanitized managed-tool alias.
Evidence
- Remote deployment:
ssh tiverton, repo ~/tiverton-house.
.claw-runtime/context/boulton/tools.json contains both claw-wall managed tools with HTTP execution metadata and bearer auth.
.claw-runtime/context/boulton/channels-allowlist.json contains channel 1464509330731696213.
- cllama logs around
2026-05-13T01:50Z show tool_manifest_loaded for Boulton with tools_count=25, then no tool_call mediation event.
- Boulton Hermes session
session_20260512_214931_2dd825d2.json shows assistant tool calls named claw-wall_search_channel_context and claw-wall_get_channel_messages, followed by Hermes-local errors: Tool ... does not exist. Available tools: clarify, delegate_task, ... send_message, ....
Expected
If a model emits a unique unsuffixed sanitized alias for a managed tool, cllama should resolve it to the corresponding managed tool instead of handing it to the runner. Exact canonical names and exact hashed aliases should keep working. Ambiguous unsuffixed aliases should stay unresolved rather than guessing.
Scope
- Update cllama managed-tool resolution to accept unique sanitized aliases without the hash suffix.
- Add tests proving hashless aliases are mediated and ambiguous hashless aliases are not.
- Keep provider-facing schema names unchanged; this is a tolerant inbound resolver, not a schema rename.
- Do not change runner-native tool semantics or clawdapus release pins in the feature PR.
Related
Problem
In Tiverton on May 12, 2026, Boulton had
claw-wall.search_channel_contextandclaw-wall.get_channel_messagescorrectly compiled into.claw-runtime/context/boulton/tools.json; cllama also loggedtool_manifest_loadedwithtools_count=25for Boulton.The provider-facing tool names are safe aliases with hash suffixes, for example:
claw-wall_search_channel_context_2919442fclaw-wall_get_channel_messages_c83b6078When the operator asked Boulton to try those retrieval tools, the model attempted calls to the unsuffixed sanitized names:
claw-wall_search_channel_contextclaw-wall_get_channel_messagescllama did not recognize those as managed tools, classified them as runner-native, and returned the tool calls to Hermes. Hermes then printed
Unknown tool 'claw-wall_search_channel_context'and sent a local tool-error message back to the model.This makes correctly compiled managed tools appear "declared but not wired" whenever a model drops the safety hash suffix from a sanitized managed-tool alias.
Evidence
ssh tiverton, repo~/tiverton-house..claw-runtime/context/boulton/tools.jsoncontains both claw-wall managed tools with HTTP execution metadata and bearer auth..claw-runtime/context/boulton/channels-allowlist.jsoncontains channel1464509330731696213.2026-05-13T01:50Zshowtool_manifest_loadedfor Boulton withtools_count=25, then notool_callmediation event.session_20260512_214931_2dd825d2.jsonshows assistant tool calls namedclaw-wall_search_channel_contextandclaw-wall_get_channel_messages, followed by Hermes-local errors:Tool ... does not exist. Available tools: clarify, delegate_task, ... send_message, ....Expected
If a model emits a unique unsuffixed sanitized alias for a managed tool, cllama should resolve it to the corresponding managed tool instead of handing it to the runner. Exact canonical names and exact hashed aliases should keep working. Ambiguous unsuffixed aliases should stay unresolved rather than guessing.
Scope
Related