Repository navigation
v0.8.0
coolhand-cli v0.8.0
What's new in v0.8.0
This release adds two new commands for browsing feedback records, gives analyze-claude-sessions fine-grained upload filters, and makes get-optimization significantly more readable by default — plus a handful of correctness fixes to existing commands.
New commands
coolhand search-feedback and coolhand get-feedback — search/list and fetch feedback records (GET /api/v2/llm_request_log_feedbacks). Requires a private API key (coolhand login --scope private) — the public key used by wildcard/createFeedback 401s on these read endpoints.
coolhand search-feedback --sentiment negative --since 7d
coolhand get-feedback fb-123search-feedback supports --sentiment, --search, --creator-id, --workload-id, --matched/--unmatched, --since, --sort-by/--sort-dir, and pagination; get-feedback <id> prints a human-readable summary including original_output/revised_output/feedback_partials, which list results omit.
Changes
analyze-claude-sessions gains upload filters. --since/--until (date, ISO datetime, or 12h/7d/2w duration) narrow by modified time; --project/--exclude-project narrow by project folder name; --projects-dir redirects the scan to a custom directory. Filtered sessions are never read from disk, and a filtered run never advances the incremental sync cutoff.
get-optimization prints a human-readable summary by default (title, status, type, category, impact, complexity, client/template/workload, created date, analysis, and plan) instead of a raw JSON dump, plus a "Next steps" footer pointing to close-optimization/update-optimization.
mcp-call 401 errors now include a hint to run coolhand login --scope private to re-authenticate.
status, whoami, and clients now show whether a private key is stored (masked, or (no private key)), via a new masked_private_key field in JSON output and an extra column in clients' plain-text listing.
Fixed
login no longer drops a stored private_key when a later plain coolhand login (public scope only) re-authenticates the same client. Fixes intermittent 401s on private-scope commands (update-workload, list-workloads) after re-logging in without --scope private.
close-optimization now sends the field the backend actually requires (explanation instead of reason) — previously this command failed against the real API. The CLI-facing <reason> argument is unchanged.
get-optimization now correctly unwraps the { optimization: {...} } response shape returned by the backend — previously fields like pr_number, pr_url, and coding_prompt were read from the top level and silently never populated.
Breaking changes
None for existing commands or flags. One default-output change: get-optimization's --json output no longer includes the internal orchestrator_messages transcript by default (it can add tens of KB of internal agent-transcript data). Pass get-optimization --full --json to get the complete payload as before.