← All CLI releases

Rush CLI 0.2.50

Install

macOS / Linux

curl -fsSL https://cdn.getrush.ai/install.sh | bash

Windows

irm https://cdn.getrush.ai/install.ps1 | iex

Homebrew

brew install phnx-labs/tap/rush

Debian / Ubuntu

sudo apt install rush-cli

Already installed?

rush upgrade

Added

  • rush delete-account — self-service account erasure from the CLI. The console's Delete account card and the CLI now drive the same resource, GET/POST/DELETE /me/deletion. Bare, it reports an already-scheduled deletion or asks for confirmation and queues one; --status reads the pending request, --cancel withdraws it, -y skips the prompt and --json prints the raw document. Nothing is deleted immediately: the purge is scheduled 30 days out and cancellable until it runs.
  • --org and a remembered organization (PHNX-3751 slice 3 Track 3). Projects, agents and the GitHub installation list live under /o/{org} in Rush Cloud now, so the CLI needs to know which org it is working in. It resolves one, once: --org wins, then the org saved in ~/.rush/user.yaml (org:), then your personal org from the org list — which it then saves, so later runs cost no extra call. internal/api stays transport-only and asks for the handle through an OrgSource, the same shape as the existing TokenSource.

Changed

  • The upgrade channel reads the CDN, not the API (PHNX-3751 slice 3 track 1). rush upgrade and the background upgrade-banner check now fetch https://cdn.getrush.ai/releases/rush-cli/latest.json instead of https://api.prix.dev/api/v1/releases/rush-cli/latest. The manifest is the same R2 object either way; reading it from the artifact host means no future API rename can strand installed CLIs on a 404 the way this one would have. The published install.sh / install.ps1 and the release scripts read the same URL. The API still serves the document at GET /releases/rush-cli/latest.

  • scripts/upload-release.sh uses the renamed publish verbs. Presign is POST /internal/releases/rush-cli/versions and finalize is PATCH /internal/releases/rush-cli/latest; the dead API_URL constant for the retired multipart /upload endpoint is gone.

  • rush http examples in the docs use a live path (POST /internal/admin/jobs/catalog-rebuild) rather than the removed /api/v1/admin/regenerate-catalog.

  • Every Rush Cloud path the CLI calls moved under the org. Projects are /o/{org}/p[/{project}] (a project is addressed by its handle, so the separate ?name= resolve call is gone); agents are /o/{org}/agents, with the catalog at /o/{org}/agents/available; the GitHub installation list is GET /o/{org}/github. The old /api/v1/* spellings 404 against a deployed Rush Cloud from this release's API onward, so 0.2.49 and earlier cannot dispatch against it.

  • Both hand-built GitHub installation requests are gone. Repo resolution on dispatch and the interactive repo picker call Client.ListGitHubInstallations instead of assembling their own http.Request (AGENTS.md: a command file builds no requests).

  • Account API calls follow Rush Cloud's PHNX-3751 slice 3 track 2 rename. rush login/rush whoami's server-side validity check now calls GET /me (was /api/v1/auth/me); session refresh reads Supabase config from GET /auth/config (was /api/v1/auth/config); rush connect/accounts/ disconnect now call POST/PATCH/DELETE /me/agent-accounts[/:id] (was /api/v1/cloud-accounts, and the single-key grok/cursor/copilot path merged into the same POST /me/agent-accounts, was /api/v1/cloud-account-tokens); rush agents new's Connections tab calls POST/GET /me/connections[/:id] (was /api/v1/auth/connection-operations[/:id]) and lists connections from GET /me/connections (was /api/v1/auth/connections). No CLI-visible behavior changes — only the wire paths, ahead of the Rush Cloud deploy that retires the old ones.

  • ListOrgs now calls GET /me, not GET /api/v1/orgs/me (Track 3 → Track 2 hand-off, agreed at review). Track 2's Account rename folds the org-membership read into GET /me's orgs[] (personal-first, same {id,name,slug,kind,role} shape); the CLI's internal/api/orgs.go picks that path up now that both tracks have landed, instead of shipping a call to a route Track 2 already retired.

  • rush artifacts reads the org store (PHNX-3751 slice 3 Track 5). list and view call /o/{org}/artifacts[/{artifact}], resolved through the same OrgSource as every other cloud verb, so list is now "what my organization has" rather than "what I uploaded".

  • rush artifacts share sets a visibility instead of minting a share. A share IS an artifact visibility in Rush Cloud now, so the command is a PATCH /o/{org}/artifacts/{artifact} carrying {"visibility": …} and takes --visibility private|org|public (default public). Publishing prints https://share.getrush.ai/a/{slug}-{id}; the slug comes from the title and is ignored on read, so retitling never breaks a link. --visibility private unpublishes and prints the new visibility rather than a link that would 404 for its recipient.

  • rush login opens the Phoenix approval page in your default browser (PHNX-4053). When this host has a desktop session (macOS, Windows, or a Linux display) the CLI opens the direct approval link itself and says so; the URL and short code still print, so a headless host or approving from a phone works as before. It uses the same opener as rush open.

Removed

  • rush artifacts share --private and --file (PHNX-3751 slice 3 Track 5). --private minted an unlisted, expiring capability link; that object no longer exists, so the flag is deleted rather than silently reinterpreted as --visibility private (which means "not shared", not "shared secretly"). --file selected one file of a multi-file share, which the artifact-is-the-share model has no equivalent for. The api.Share type is gone with them.
  • The hidden alias layer is gone (PHNX-4054). 0.2.49 kept every old spelling registered but hidden; this release deletes them. rush cloud <anything> (run, list, view, logs, cancel, message, transcript, artifacts, pause, resume, accounts, agents, warmup, computers, login, whoami, attach), rush ssh, rush agents create|list|view| archive, rush connect codex, rush connect view|status, rush accounts list|ls| status, and the --key flag on connect grok|cursor|copilot are unknown commands now. connect grok|cursor|copilot are visible and take the key from the --api-key prompt or stdin, like connect anthropic|openai; a key is never a command-line argument. The implementations behind the top-level verbs are unchanged: rush run, ps, logs, send, attach, stop, pause, resume, open, artifacts, transcript, agents new|show|edit|rm, accounts, connect, disconnect, and the hidden rush http all work as in 0.2.49. rush agents new no longer has --copy or --idempotency-key (they were create's); pass the whole definition with -f instead. Per-run detail (harness version resolved, capture state, PR URL) is the view rush ps opens from its picker, or the console page rush open lands on.

Fixed

  • rush ps and the run detail decode again. Rush Cloud's PHNX-4050 changed a run's started_by from a name string to {name, avatar_url} (or null), so every GET /cloud-runs read failed with cannot unmarshal object into Go struct field cloudExecution.executions.started_by of type string — rush ps, the run picker, and 0.2.48's rush cloud list all broke against production. The CLI now reads the object and shows the starter's name where it did before.

Changed (PHNX-3751 slice 3 Track 4)

  • Every session/run path moved under the org and project. rush run, ps, logs, send, attach, stop, pause, resume, open, artifacts, and transcript now call /o/{org}/p/{project}/sessions/... (a resolved --project, or the reserved _ segment for a repo-less/direct-repo dispatch) instead of the flat /api/v1/cloud-runs/*; rush sessions and its picker call the org-wide /o/{org}/sessions instead of /api/v1/sessions*. The old /api/v1/* spellings 404 against a deployed Rush Cloud from this release's API onward, so an installed CLI predating this release cannot dispatch against it.
  • Dispatch accepts 202, not 200. A cloud run's creation response is now the full session detail (additive kind/org_id/project_id fields alongside the unchanged execution_id and the rest of the shape).
  • Cancel/pause/resume are one PATCH with a status body, replacing three separate POST .../cancel|pause|resume calls. The CLI's own --reason flag on rush stop is unchanged, but the value is no longer sent to the API — the new endpoint rejects any body field beyond status.

Downloads

PlatformBinarySHA-256
macOS · Apple Silicondownload—
macOS · Inteldownload—
Linux · x64download—
Linux · arm64download—
Windows · x64download—
Windows · arm64download—

Checksums are published for the current latest release. Verify older binaries against rush --version after install.