All notable changes to cueapi-cli will be documented here.
messages send+message-to: Phase 2 body-verify auto-echo (Mike body-verify directive 2026-05-11). Default verify-on. CLI sendsX-CueAPI-Verify-Echo: truerequest header; substrate-side (Phase 1 / cueapi-core) echoes back received body in the 201 response underbody_received. CLI diffs sent vs received; on drift exits with code 7 + diagnostic showing byte position of first divergence + first 200 chars of each side + actionable mitigation hint.--no-verifyflag opts out (rare; perf-sensitive flows only; verify adds zero substrate roundtrips since echo rides in the existing POST response). Backward-compat: pre-Layer-1 substrate omitsbody_receivedfield → CLI no-ops, returns success unchanged.messages send+message-to: Layer 3 force-file mode (Mike body-verify directive 2026-05-11). Three body sources accepted (exactly one required):--message-file <path>(RECOMMENDED for content with shell metacharacters; zero shell interpolation),--body-stdin(read from stdin; for shell-pipe ergonomics), or--body <inline>(auto-rejected when content contains$(...), backticks, or${VAR}). Inline body with metachars rejected with actionable error suggesting safer paths; override via--allow-inline-metacharsfor legitimate literal-metachar content (e.g., shell-tutorial examples). Closes the caller-side shell-expansion bug class whereBODY="...$(echo X)..."silently mutates body content at variable-assignment time before reaching the CLI. Design Dock:cue-message-silent-corruption-substrate-design-2026-05-11.cueapi message-to <recipient>top-level wrapper for sending a message by name. Resolves<recipient>against your agent roster:agent_id(agt_*) and slug-form (slug@user) pass through unchanged; bare names match case-insensitively againstdisplay_nameandslugviaGET /agents. Same flag set asmessages send(sans--to).agents list --online-onlyshortcut for--status online. Mutually exclusive with--status.agents describe <ref>alias foragents get <ref>.
cueapi fire <cue-id>for ad-hoc one-shot triggers and for using cues as a messaging channel between agents. Optional--payload-override(JSON) and--merge-strategy(mergedefault,replaceopt-in). WrapsPOST /v1/cues/{id}/fire.cueapi executionssubgroup with seven subcommands closing the receive-claim-process-complete loop for worker-transport executions:executions listhistorical executions across all cues.executions list-claimable [--task] [--agent]unclaimed executions ready for processing, server-side filtered. Required for single-purpose workers; without a filter, sibling tasks ahead in the LIMIT 50 window starve your handler.executions get <id>fetch one execution by ID.executions claim <id> --worker-id IDatomically claim a specific execution.executions claim-next --worker-id ID [--task]claim the next available execution. With--task, the CLI internally fans out (filtered list, pick oldest, claim by ID) since the server's claim endpoint does not accept a task filter today.executions heartbeat <id> --worker-id IDextend the claim lease. Sendsworker_idvia theX-Worker-Idrequest header (the server's actual transport for that field).executions report-outcome <id> --success/--failure [...]report a write-once outcome with optional--external-id,--result-url,--summary.
__version__incueapi/__init__.pyhad drifted to 0.1.3 whilepyproject.tomlwas at 0.1.5. Both now aligned at 0.2.0.
- Initial release of the official CueAPI CLI
- Authentication via magic link (cueapi login)
- Full cue management: create, list, get, pause, resume, delete
- Execution history view (cueapi executions)
- Usage and plan info (cueapi usage, cueapi whoami)
- API key management (cueapi key regenerate)
- Guided quickstart flow (cueapi quickstart)
- Credentials stored in ~/.config/cueapi/credentials.json
- CUEAPI_API_KEY env var support
- --api-key inline flag support
- Python 3.9+ support