amir20/dozzle · warning
unknown tool
Error message
unknown tool: %s
What it means
executeTool falls through its switch of known tool names and returns 'unknown tool: %s' for any name not registered. This indicates the cloud requested a tool the local client does not implement, typically a version mismatch between the cloud service and the local Dozzle build.
Solutions
- Update Dozzle to the latest release so newly introduced cloud tools are recognized
- Log the tool name and compare against AvailableTools() output to confirm the mismatch
- If integrating directly, fix the tool name to match a registered tool exactly
- Report the mismatch if the cloud sends tools the current version should support
Defensive patterns
Strategy: try-catch
Validate before calling
// verify the tool exists before dispatch
known := map[string]bool{ toolListHosts: true, toolFindContainers: true, /* ... */ }
if !known[name] {
return nil, fmt.Errorf("tool %q not supported by this build", name)
} Try / catch
resp, err := executeTool(ctx, name, args, deps)
if err != nil && strings.HasPrefix(err.Error(), "unknown tool:") {
log.Warnf("cloud requested unsupported tool %q; update Dozzle", name)
return toolErrorResponse(err)
} Prevention
- Keep Dozzle updated to match cloud-side tool versions
- Derive known tool names from AvailableTools() rather than hardcoding
- Log unknown tool names for telemetry
- Guard direct integrations against typos with a name whitelist
When it happens
Trigger: A ToolRequest.CallTool arrives whose name is not one of the tool constants handled in executeTool (e.g. a newly added cloud tool not present in this Dozzle version).
Common situations: Older Dozzle image receiving requests for newer cloud-side tools; typo'd tool name from a client integrating directly; stale cached tool definitions pointing at removed tools.
Related errors
- container actions are not enabled
- failed to parse arguments
- container not found
- action failed
- cloud search failed
AI-assisted analysis of amir20/dozzle@d9463cbe21 (2026-09-07).
Data as JSON: /api/errors/0b20b4aef6f6bf34.
Report an issue: GitHub.
Appendix: source
Thrown at internal/cloud/tools.go:397
return executeGetRunningContainerStats(deps)
case toolFetchContainerLogs:
return executeFetchContainerLogs(ctx, argsJSON, deps)
case toolInspectContainer:
return executeInspectContainer(argsJSON, deps)
case toolListNotifications:
return executeListNotifications(deps)
case toolStartContainer, toolStopContainer, toolRestartContainer, toolRemoveContainer:
return executeContainerAction(ctx, name, argsJSON, deps)
case toolUpdateContainer:
return executeUpdateContainer(ctx, argsJSON, deps)
case toolCreateLogNotification:
return executeCreateLogNotification(argsJSON, deps)
case toolCreateMetricNotification:
return executeCreateMetricNotification(argsJSON, deps)
case toolCreateEventNotification:
return executeCreateEventNotification(argsJSON, deps)
default:
return nil, fmt.Errorf("unknown tool: %s", name)
}
}
View on GitHub (pinned to d9463cbe21)