cliguard defines 6 tools with partial schema coverage and inconsistent descriptions. All tools have input schemas with typed parameters and descriptions, meeting baseline requirements. However, descriptions are terse (10-80 chars, well below the 194-char production average), output schemas are undocumented, and error handling lacks recovery guidance. Tool naming follows verb_noun convention (propose_, check_, explain_, audit_, run_, undo_) but lacks clarity on distinctions between similar tools (propose_command vs check_command vs explain_command). No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications in metadata. Parameter descriptions are minimal; e.g., 'Command as argv array' lacks format/constraint details. Error responses return structured ToolError objects but do not guide LLM recovery (e.g., 'command_blocked' lacks 'try check_command first' guidance).
List recent audit events from the audit log
Analyze a command without executing it
Analyze and explain a command without executing it
Analyze an agent/tool proposal without executing it
Analyze and, if policy allows, execute a command without a shell
Restore the most recent supported rollback bundle
Tool descriptions are too brief (10 - 80 chars vs. 194-char production baseline). LLMs cannot distinguish propose_command from check_command from explain_command without longer, context-rich descriptions explaining WHEN to use each.
Output schemas are not documented. Callers cannot predict response structure (e.g., what fields are in 'analysis', what 'agent_guidance' contains). This forces LLMs to guess and wastes tokens on trial-and-error parsing.
Error responses lack recovery guidance. 'command_blocked' and 'human_confirmation_required' errors do not tell the LLM what to do next (e.g., 'Try check_command to see why' or 'Ask the user for approval'). Bare error codes force the agent to dead-end.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2025-06-18+ | v2 |
Tool annotations missing. Despite clear risk classifications (READ_ONLY, DESTRUCTIVE, REVERSIBLE), tools do not declare readOnlyHint, destructiveHint, or idempotentHint in schemas. LLMs cannot infer safety properties and may misuse tools.
Parameter descriptions lack format/constraint details. 'Command as argv array' does not specify max length, character restrictions, or examples. 'Current working directory (optional)' does not clarify path format (absolute vs. relative, symlink handling). LLMs cannot validate inputs.