- Overview
- Get started
- Concepts
- Using UiPath CLI
- How-to guides
- CI/CD recipes
- Command reference
- Overview
- Exit codes
- Global options
- uip codedagent
- uip coder
- uip context-grounding
- uip docsai
- uip function
- uip guardrails
- uip llm-configuration
- uip llm-gateway
- uip model-hub
- add-test-data-entity
- add-test-data-queue
- add-test-data-variation
- analyze
- build
- create-project
- diff
- find-activities
- get-analyzer-rules
- get-default-activity-xaml
- get-errors
- get-manual-test-cases
- get-manual-test-steps
- get-library-object-repository
- get-object-repository
- get-versions
- get-workflow-example
- indicate-application
- indicate-element
- inspect-package
- install-data-fabric-entities
- install-or-update-packages
- list-data-fabric-entities
- list-instances
- list-workflow-examples
- pack
- publish
- remote
- restore
- run, debug & execution
- run-file
- search-templates
- start-studio
- stop-execution
- tm
- uia
- uip tasks
- uip traces
- uip traces feedback
- Migration
- Reference & support
Syntax and options for `uip update`, which updates installed tools and skills and checks for or applies a newer CLI version.
uip update updates every installed tool and skill, and checks for (and by default applies) a newer CLI release. It's the one-command equivalent of running uip tools update and a skills update together, plus the CLI's own self-update check.
Synopsis
uip update [--dry-run] [--tools-only | --skills-only] [--no-tools] [--no-skills] [--no-cli-check] [--no-self] [--channel <stable|preview>] [--name <tool-name>] [--agent <agent>] [--local | --no-local]
uip update [--dry-run] [--tools-only | --skills-only] [--no-tools] [--no-skills] [--no-cli-check] [--no-self] [--channel <stable|preview>] [--name <tool-name>] [--agent <agent>] [--local | --no-local]
uip update honors the global options (--output, --output-filter, --log-level, --log-file). Exit codes follow the standard contract, with one addition below.
Options
| Flag | Description |
|---|---|
--dry-run | Preview what would change without applying it. |
--tools-only | Update tools; skip the skills section. Mutually exclusive with --skills-only and with --no-tools. |
--skills-only | Update skills; skip the tools section. Mutually exclusive with --tools-only and with --no-skills. |
--no-tools | Do not update tools. |
--no-skills | Do not update skills. |
--no-cli-check | Do not probe for a newer CLI version at all. |
--no-self | Probe for a newer CLI version and report it, but do not install it — prints a notice with the manual upgrade command instead of self-updating. |
--channel <channel> | Override the release channel for this run: stable or preview (see uip config updateChannel). Without this flag, the channel is resolved from core.updateChannel/the running CLI's own build. |
--name <tool-name> | Restrict the tools update to one scoped tool name. |
--agent <agent> | Restrict the skills update to one coding agent. |
--local | Restrict the skills update to local (project) scope only. |
--no-local | Restrict the skills update to global scope only. |
--tools-only combined with --no-tools (or --skills-only combined with --no-skills) is a contradiction and fails with ValidationError before anything runs.
Version policy
There is no per-invocation version flag — uip update always targets the effective version target: your core.version pin from uip config if one is set, otherwise the latest published release.
- No pin — targets the latest release, crossing MINOR and MAJOR boundaries freely (an explicit
uip updateis the user opting into that, unlike the unattended daily background sync, which caps itself to avoid an unexpected MAJOR jump). major.minorpin (a "line" pin, e.g.1.196) — tracks the latest patch within that line.major.minor.patchpin (an exact pin, e.g.1.196.3) — freezes updates entirely.uip updateskips the update engine altogether, emits aSuccessenvelope with every section marked as not run, and prints a warning to stderr explaining the pin and how to clear it (uip config set version <major.minor>to track a line, oruip config clear versionto follow latest again).
Examples
# Update everything installed, including the CLI itself
uip update
# Update everything installed, including the CLI itself
uip update
# Update tools and skills but only report on a newer CLI, don't self-update
uip update --no-self
# Update tools and skills but only report on a newer CLI, don't self-update
uip update --no-self
# Preview without applying
uip update --dry-run
# Preview without applying
uip update --dry-run
# Tools only, on the preview channel
uip update --tools-only --channel preview
# Tools only, on the preview channel
uip update --tools-only --channel preview
Data shape (--output json)
{
"Code": "UpdateResult",
"Data": {
"DryRun": false,
"Channel": "stable",
"Cli": {
"current": "1.4.2",
"available": "1.4.3",
"action": "updated",
"reason": null
},
"Tools": [
{ "name": "orchestrator-tool", "status": "updated", "from": "1.4.2", "to": "1.4.3" }
],
"Skills": { "Sections": [] },
"Errors": [],
"HasFailures": false
}
}
{
"Code": "UpdateResult",
"Data": {
"DryRun": false,
"Channel": "stable",
"Cli": {
"current": "1.4.2",
"available": "1.4.3",
"action": "updated",
"reason": null
},
"Tools": [
{ "name": "orchestrator-tool", "status": "updated", "from": "1.4.2", "to": "1.4.3" }
],
"Skills": { "Sections": [] },
"Errors": [],
"HasFailures": false
}
}
Cli.action is one of updated, notice (a newer CLI exists but wasn't applied — because of --no-self, or because auto-update declined for another reason), none (already current), or skipped (an exact core.version pin froze the run — see above). Tools/Skills are null, not an empty array, when that section was skipped entirely (--tools-only, --skills-only, --no-tools, --no-skills, or the frozen-pin short-circuit).
A run with Cli.action: "notice" also logs the manual upgrade command to stderr (npm install -g @uipath/cli@<version>, or a tool-reported equivalent).
Exit codes
uip update follows the standard contract, with one addition: a partial failure still returns a Success envelope (the orchestrator doesn't stop at the first failing subsystem — it runs every section and reports each outcome under Data.Errors), but the process still exits non-zero when Data.HasFailures is true. Check HasFailures, not just Result, if a script needs to detect a partial update failure.
Related
- uip config —
versionandupdateChannelgovern whatuip updatetargets. - uip tools —
uip tools updateis the tools-only equivalent with its own dedicated flags. - uip skills — skills installation and per-agent update behavior.