Skip to content

cllama: tolerate model-emitted managed tool aliases without hash suffix #240

@mostlydev

Description

@mostlydev

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

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