An open-source, terminal-based AI coding agent powered by Mistral AI. A Claude Code-style agentic CLI that reads, edits, and runs code with tool-calling capabilities.
NightShade CLI provides 12 tools with consistent naming (verb_noun pattern) and reasonable descriptions (avg ~120 chars). All tools have input schemas with typed parameters. However, parameter descriptions are sparse or missing for nested objects (e.g., todo_write's 'todos' array items lack field descriptions). Output schemas are undocumented, LLMs cannot predict return structure. Error handling is minimal; most tools return plain strings without recovery guidance. The 'task' tool (subagent delegation) lacks documentation of expected subagent behavior and failure modes. Security concerns: shell tool is unrestricted and dangerous; no mention of input sanitization or permission gates.
Replace an exact substring in a file with new text. old_string must appear exactly once. Use for surgical edits.
Find files matching a glob pattern (e.g. 'src/**/*.ts', '**/*.json'). Returns matching paths.
Search file contents for a regular expression. Returns matching lines with file:line prefixes.
List files and directories at a path (non-recursive).
Apply multiple find/replace edits to a single file in one atomic operation. Each edit's old_string must be unique at the time it is applied. Edits run in order.
Read the contents of a text file. Returns the file with 1-based line numbers.
Run a shell command in the working directory and return its output.
shell tool is unrestricted and dangerous. No input validation, no command allowlist, no sandboxing. Description does not warn of destructive capability or require confirmation.
Output schemas are completely undocumented. LLMs cannot predict what fields are returned, forcing them to guess or parse unstructured text. This violates the documented-return-types baseline (100% of A+ tools have them).
todo_write parameter 'todos' is an array of objects, but the nested object properties (content, status) lack descriptions. LLMs cannot infer what 'content' means or what status enum values are valid.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Delegate a well-scoped subtask to a subagent. The subagent runs autonomously with the same tools and returns its final result.
Create or update a task list. Supports adding, updating, and completing tasks.
Fetch a URL and return its contents as readable plain text. HTML is stripped of tags, scripts and styles. Output is truncated to ~15000 characters.
Search the web and return the top results as a numbered list of titles, URLs and snippets. Uses Tavily or Brave when an API key is configured, otherwise falls back to DuckDuckGo.
Write (create or overwrite) a text file with the given content. Creates parent directories as needed.
task tool (subagent delegation) has minimal documentation. No description of what 'prompt' should contain, what the subagent can do, how failures are reported, or what the return value structure is. This is a complex tool that needs explicit guidance.
Error handling is generic and non-actionable. Most tools return plain error strings (e.g., 'Error: file not found') without recovery guidance. LLMs cannot determine if an error is retryable, user-fixable, or fatal.