# What's new

> Headline summary of what changed in the UiPath CLI rewrite, covering the new runtime, command model, and key differences from the legacy .NET CLI.

UiPath CLI is a ground-up rewrite of the command-line tooling, replacing the `uipcli.exe` .NET tool used through `2025.10`. If you are migrating from a 2025.10 pipeline, read the [migration guide](./migration-from-dotnet-cli.md) — this page is the headline summary of what changed and why.

## A different tool

UiPath CLI is a **TypeScript CLI** distributed on **npm** as `@uipath/cli` and invoked as `uip`. It runs on Node.js 18+ on Windows, macOS, and Linux. The host and most tools have no .NET dependency; the **`rpa-tool`** is the exception — it wraps the Studio packager and the workflow compiler, both of which still require a .NET runtime. Install the host the same way in every environment:

```bash
npm install -g @uipath/cli
```

The CLI is a plugin host. Commands for each UiPath surface — Orchestrator, Solutions, Agents, Flows, Maestro, Test Manager, and so on — ship as separate npm packages that `uip` auto-installs the first time you use them. See [Tools (plugins)](./concepts-tools.md).

## Semantic versioning

The calendar-based versioning (`2023.10`, `2024.10`, `2025.10`) is gone. 1.0.0 is the starting point of a **semver** contract:

- **MAJOR** — breaking changes with a full deprecation cycle first.
- **MINOR** — new commands, new flags, additive only. `Data` shape can evolve.
- **PATCH** — bug fixes only.

Host and tool versions coordinate: each tool tracks the CLI's MAJOR.MINOR line by default. See [Versioning and stability](./versioning.md).

## More than CI/CD

The legacy CLI was a CI/CD tool: pack, analyze, deploy, run tests. UiPath CLI 1.x covers the full platform — build, manage, operate, deploy — and is designed to be used interactively by developers as well as programmatically by pipelines. You can now:

- Scaffold and validate projects (`uip solution new`, `uip agent init`, `uip flow init`, `uip maestro init`).
- Manage Orchestrator resources (folders, processes, packages, machines, users, roles, licenses, queues, assets, buckets, webhooks).
- Start and monitor jobs (`uip or jobs start`, `uip or jobs get`), with optional `--wait-for-completion`.
- Drive the full Agent lifecycle including evaluation (`uip agent eval`).
- Inspect Flow and Maestro instances and incidents.
- Manage Data Fabric entities and Integration Service connections.

Every command returns the same structured JSON envelope, so anything you can do by hand is scriptable.

## JSON by default

Output is **JSON on stdout** by default, with a stable envelope (`Result`, `Code`, `Data`, `Message`, `Instructions`). Humans opt into the table view with `--output table`; pipelines and AI agents get clean, structured data without extra flags. See [Output formats](./output-formats.md).

## Human-friendly interactive login

`uip login` opens a browser, signs you into UiPath, and persists the refreshed session inside `~/.uipath/`. Client credentials no longer need to be embedded on a developer workstation. CI pipelines still use External App client credentials (now passed through `--client-id env.UIPATH_CLIENT_ID`), and containers can use environment-variable auth with an opaque access token. See [Authentication](./authentication.md).

## Built for AI coding agents

The `uip skills` system teaches Claude Code, Cursor, GitHub Copilot, Gemini CLI, Codex, and OpenCode how to use `uip`. Skills are published by UiPath and installed per-agent. Once installed, the agent can drive a full pack-publish-deploy flow without requiring you to type each command. See [Using UiPath CLI with Coding Agents](./coding-agents.md).

## Shell completion

`uip completion` installs tab completion for bash, zsh, fish, and PowerShell. Dynamic flag-value completion (for example, `uip or packages upload --package-name <TAB>`) is available on zsh when `jq` is on the PATH; static subcommand and option-name completion works on all four shells.

## Other meaningful shifts

- **No implicit env-var auth reading.** `UIPATH_CLIENT_ID` and `UIPATH_CLIENT_SECRET` are no longer read automatically. Pass them through `--client-id env.UIPATH_CLIENT_ID --client-secret env.UIPATH_CLIENT_SECRET` (the `env.` prefix looks up the variable at runtime without exposing it on the command line).
- **Exit codes tightened** to five values (0 / 1 / 2 / 3 / 4, plus 130 for user cancellation). The contract is stable within a MAJOR release — script against them. See [Exit codes](./exit-codes.md).
- **JMESPath filtering** (`--output-filter`) on every command, at parse time, with exit code `3` on syntax errors so a typo does not waste an API call.
- **Cross-platform.** ARM64 Windows, macOS, and Linux are supported — a reflection of the Node.js runtime.
- **Telemetry opt-out variable renamed** from `UIPATH_EXTENSIONS_CLI_TELEMETRY_ENABLED=False` to `UIPATH_TELEMETRY_DISABLED=1`. Both generations are opt-out by default — update CI runners that relied on the old name.

## Where to start

- New user? [Quickstart](./quickstart.md).
- Migrating from 2025.10? [Migration guide](./migration-from-dotnet-cli.md).
- Setting up CI? [Your first pipeline](./first-pipeline.md) → pick a [CI/CD recipe](./recipes-azure-devops.md).
- Working with AI agents? [Using UiPath CLI with Coding Agents](./coding-agents.md).

See [Release notes](../release-notes/overview.md) for the full change list and anything shipped after.
