Skip to content

Changelog

What’s new.

New features, fixes and improvements to the desktop app, CLI, web app and harness. Subscribe via RSS.
  1. v0.1.0

    Cusp 0.1 preview

    The first public preview of Cusp, with the cusp CLI, the desktop shell, a model-adaptive harness, four wire protocols and more than twenty provider and gateway presets.

    The first public preview. Cusp 0.1 brings together the runtime, harness and provider layer from the private alphas, and adds the cusp CLI. Read the announcement for the background.

    New

    cusp CLI

    • An interactive terminal UI: streaming transcript, tool rows with expandable output, permission prompts, multiple-choice questions, a task list, and a status line with the model, effort, permission mode and cost.
    • The cusp spinner and thinking verbs in the terminal, with a one-line summary when each turn ends. Respects NO_COLOR and falls back cleanly on basic terminals.
    • Slash commands: /clear, /resume, /rename, /rewind, /fork, /model, /effort, /mode, /plan, /todos, /cost, /status, /diff, /export, /init, /review, /compact, /help and /exit.
    • @ file mentions with completion, ! to run a shell command and share its output, prompt history, and image paste.
    • Shift+Tab cycles permission modes; Esc interrupts; Esc twice rewinds.
    • Headless mode with -p: text, json and stream-json output in the widely used headless result format, stream-json input for multi-turn pipes, --max-turns, and permission decisions from --allowedTools and --disallowedTools.
    • Session flags: --continue, --resume, --fork-session, --name, --cwd.
    • Model flags: --model provider:model, --effort, --permission-mode, --append-system-prompt.
    • Daemon modes: connect to a running daemon, start one, or run it embedded in the CLI process.
    • Exit codes: 0 success, 1 failure, 2 usage error, 130 interrupted.

    Harness

    • The tool executor: input validation and repair, PreToolUse hooks, the permission engine, execution, PostToolUse hooks, and protocol events for every step. Read-only calls in a batch run in parallel.
    • The default toolset, assembled per model family.
    • A generated tool specification, published in the repository, with the exact descriptions and schemas each model sees.

    Protocol and API

    • REST v1 request and response schemas shared by the daemon and every client.
    • Per-session appended system prompt and session-scoped permission rules, used by --append-system-prompt and --allowedTools.
    • Manual compaction with optional instructions.
    • Message acknowledgements with sequence numbers, so clients know exactly where a sent message landed.
    • A ranked model list endpoint for model pickers.

    Included from the private alphas

    • Four wire protocols and more than twenty provider and gateway presets, with paste-a-key detection. See Providers and gateways.
    • Per-model-family edit formats: apply_patch, str_replace and hash-anchored line edits. See Tools.
    • Permissions, hooks, skills, subagents, instructions and MCP configuration read from .cusp/ and the shared .claude/, AGENTS.md and GEMINI.md files. See Import your setup.
    • Seatbelt and bubblewrap sandboxing for shell commands. See Sandbox.
    • Event-sourced sessions with checkpoints, rewind, fork and worktrees. See Sessions.
    • The desktop shell for macOS, Windows and Linux with a supervised daemon, keychain storage and cusp:// deep links. See Desktop app.

    Known limitations

    • Live model turns in the daemon are landing next: the harness loop is being connected to the runtime, and 0.1 sessions in the daemon use a scripted runner for UI and protocol testing.
    • Web app, cloud sync and Crew are not available yet.
    • The desktop workspace UI is still in progress; the native shell, daemon supervision and keychain are in place.
    • --system-prompt is accepted but ignored with a warning. Use --append-system-prompt.
    • Slash commands in .claude/commands/ aren't read. Move them to .claude/skills/<name>/SKILL.md.
    • Plugins and marketplaces aren't supported.
    • Sandbox network allowlists aren't enforced yet; a policy with allowedDomains is treated as full network access, and Cusp reports this.
    • Windows has no shell sandbox.
    • Bedrock and Vertex work with bearer tokens and API keys; AWS SigV4 and Google Application Default Credentials are coming.
    • Environment bootstrap and a built-in verification gate are in progress. A Stop hook that runs your tests works today.
  2. v0.0.9

    Private alpha: harness and providers

    The provider layer for four wire protocols and more than twenty providers, and the harness with its tools, permissions, hooks, sandbox and configuration that reads your existing settings files.

    The second private alpha adds the two layers that do the real work: talking to models, and acting on your code safely.

    Providers

    • @cusp/providers: one normalized streaming interface over OpenAI Chat Completions, OpenAI Responses, Anthropic Messages and Google Gemini, plus a deterministic mock provider for tests.
    • Presets for Anthropic, OpenAI, Google, OpenRouter, Vercel AI Gateway, xAI, DeepSeek, Z.ai, Moonshot, MiniMax, Alibaba Qwen, Xiaomi MiMo, Groq, Cerebras, Together, Fireworks, DeepInfra, Novita, SiliconFlow, Mistral, Ollama, LM Studio, LiteLLM and vLLM, with host detection for Azure OpenAI, Bedrock and Vertex.
    • Paste-a-key detection: key prefixes, host hints, parallel token-free probes and error fingerprints identify the provider and protocol, list models, and pick a main and a small model.
    • A model catalog with context windows, pricing, capabilities and an agentic score, enriched from public sources.
    • Reasoning replay for Anthropic signatures, OpenAI encrypted reasoning, Gemini thought signatures and open-model reasoning fields.
    • One effort scale (none to max) mapped onto each provider and clamped to what the model accepts.
    • Retries matching the official SDKs, mid-stream restarts, learning from rejected parameters, sticky fallbacks, automatic prompt caching and cache-aware cost.
    • A tool-call repair ladder: lenient JSON, schema coercion, and extraction of tool calls embedded in text.

    Harness tools

    • File tools: Read (line-numbered, images, PDFs, notebooks, artifacts), Write, Edit and atomic MultiEdit with a reported fuzzy-matching ladder, ApplyPatch (V4A), EditLines with hash-anchored lines, and NotebookEdit.
    • Read-before-edit with modification checks right before writing.
    • Search: Grep (ripgrep, or a built-in engine with identical output), Glob, LS.
    • Shell: Bash on a per-session runtime with a non-interactive environment, secret stripping, timeouts that move commands to the background, and bounded output; Process for long-running servers with readiness detection; Terminal for interactive programs on a PTY.
    • Web: WebFetch (Markdown conversion, private-network guard, cross-host redirects reported) and WebSearch.
    • Session tools: TodoWrite and update_plan, AskUserQuestion, EnterPlanMode and ExitPlanMode, Skill, ToolSearch, Agent, SendMessage, ListAgents.
    • Post-edit diagnostics from tsgo/tsc and stdio language servers, plus Diagnostics and LSP tools.
    • Per-model-family tool sets: apply_patch for GPT, str_replace edits for Claude and Gemini, hash-anchored edits for weaker and local models. Rarely used tools are deferred behind ToolSearch.

    Permissions and sandbox

    • A permission engine for the common rule syntax (Bash(npm run test:*), Edit(src/**), WebFetch(domain:…), mcp__server__*), evaluated deny, then ask, then allow.
    • A real shell parser for compound commands, substitutions, heredocs and wrappers, with read-only command classification.
    • Modes default, acceptEdits, plan, auto, bypass and dontAsk.
    • Protected paths: writes to them need a person's approval in every mode.
    • An auto-mode classifier port that sees only your messages and the proposed action, fails closed, and pauses after repeated blocks.
    • Seatbelt (macOS) and bubblewrap (Linux) sandboxing for shell commands, failing closed when unavailable, with explanations of which limit blocked a command.
    • A loop detector for repeated tool cycles, repeated content and repeated errors.

    Hooks and configuration

    • A hooks engine with the common hook events and JSON protocol, and command, http, mcp_tool, prompt and agent handlers.
    • Loaders for settings (managed, local, project, user), instruction files (CUSP.md, CLAUDE.md, AGENTS.md, GEMINI.md, rules with paths:, @ imports), skills, subagents and output styles, reading both .cusp/ and .claude/.
    • Workspace trust: untrusted projects can't add hooks, environment variables, MCP servers or allow rules.
    • An MCP client for stdio and streamable HTTP servers (with SSE fallback), with MCP tools exposed as deferred tools and approvals bound to a hash of each server's configuration.
  3. v0.0.8

    Private alpha: runtime and desktop shell

    The session protocol, the local daemon, the typed client, the native desktop shell and the design system foundations.

    The first private alpha. Nothing here talks to a model yet; this release is the ground everything else stands on.

    Session protocol

    • Sessions are append-only logs of typed events with a per-session sequence number: messages, streaming deltas, tool calls, permission requests and decisions, questions, todos, checkpoints, compaction, status, errors and notices.
    • One set of Zod schemas (@cusp/protocol) defines entities, events, content parts, models, providers and permissions for every component.
    • WebSocket frames for subscribing to sessions and workspaces from a given sequence number, so clients resume exactly where they left off. Separate frames for terminal (PTY) streams.
    • A single REST error envelope with stable error codes, including provider quota errors.

    Daemon

    • A local agent runtime that binds 127.0.0.1 on a random port and requires a per-launch bearer token.
    • Workspaces, sessions, event storage in SQLite, and a content-addressed blob store for file checkpoints.
    • Rewind (truncate the log and restore files) and fork (copy the log prefix into a new session).
    • Git status, diffs, branches, commits, and per-session worktrees kept outside your repository.
    • File browsing, fuzzy file search that respects ignore files, and a workspace watcher.
    • PTY sessions with scrollback for the built-in terminal.
    • A scripted runner that produces realistic turns without a model, so every client can be built and tested end to end.

    Client SDK

    • A TypeScript SDK, a typed client for the daemon: REST, a resumable event stream, and a local projection of session state that every UI renders from.
    • A launcher that finds a running daemon or starts one, tied to the parent process.

    Desktop shell

    • A native Tauri 2 shell for macOS, Windows and Linux that supervises the daemon as a sidecar: ready handshake, health checks every 10 seconds, restart with exponential backoff, and clean shutdown.
    • API keys in the OS keychain (Keychain, Credential Manager, Secret Service). Values are kept out of logs and error messages.
    • cusp:// deep links for sessions and sign-in callbacks, buffered until the UI is ready.
    • Native menu bar on macOS, tray icon, a global show-or-hide shortcut, notifications, launch at login, open-in-editor, file drop.
    • Isolation-pattern IPC with an explicit allowlist, a strict content security policy, and no remote content.

    Design system

    • Design tokens: warm-neutral color ramps tuned separately for light and dark, one brand blue reserved for the mark and a few sanctioned moments, a type scale on Inter, Geist Mono and Source Serif 4, spacing, radii, elevation and motion presets.
    • The Cusp mark, generated from four circles, with wordmark, lockups and app icons.
    • The cusp spinner, the thinking indicator with its rotating verbs, the mascot, and crew avatars.
    • Accessible primitives for inputs, overlays, navigation, feedback and data display, with contrast verified by tests.