- 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
Global options accepted by every `uip` invocation, covering output format, output filter, log level, and log file.
Every uip invocation is pre-scanned for a fixed set of global options before any tool or subcommand sees its arguments — they can appear anywhere on the command line, work identically across every tool, and are stripped out before per-command flag parsing runs.
| Option | Short | Value | Default | Purpose |
|---|---|---|---|---|
--output | — | table, json, yaml, plain, markdown | json | Format of the primary output written to stdout. |
--json | — | flag | — | Hidden compatibility alias for --output json. Passing it together with an explicit --output <value> is a conflict — see below. |
--output-filter | — | JMESPath expression | — | Post-filter applied to the JSON payload before formatting. |
--log-level | — | debug, info, warn, error | info | Verbosity of log messages written to stderr (and --log-file if set). |
--log-file | — | path | — | If set, logs are duplicated to this file in JSON Lines format. |
--profile | — | name | — | Selects a named, saved login profile instead of the default credentials location. Mutually exclusive with a command's own -f, --file <folder> (for example on uip login, uip login tenant list/set, uip logout) — passing both is a ValidationError. See Sessions and credentials. |
--interactive / --no-interactive | — | flag | auto (prompts only on a TTY) | Force prompting on or off, overriding the default "prompt only when connected to a TTY" behavior. Not specific to any one command — it governs every place a uip command would otherwise ask a question (for example tenant selection during uip login, or the agent/target picker on uip skills install). |
--version (-v) and --help (-h) are also recognized on uip and every subcommand, but they are standard CLI conventions rather than global flags in the sense above.
--output
Choose the output format. Both --output json and --output=json work; values are case-sensitive.
uip or folders list # default: json
uip or folders list --output table # human-friendly table
uip or folders list --output yaml # yaml
uip or folders list --output plain # key=value lines, no structure
uip or folders list --output markdown # GitHub-flavored markdown, for agents/chat surfaces
uip or folders list # default: json
uip or folders list --output table # human-friendly table
uip or folders list --output yaml # yaml
uip or folders list --output plain # key=value lines, no structure
uip or folders list --output markdown # GitHub-flavored markdown, for agents/chat surfaces
json(default) — one JSON document on stdout. Parseable byjq,--output-filter, and any JSON consumer. This is the default for every invocation regardless of whether the terminal is a TTY.table— bordered, colored table suitable for reading in a terminal. Not stable across versions — do not parse it.yaml— YAML serialization of the same structure asjson.plain— flatkey=valuelines. Useful for piping into shellread,grep, andcutwithout installingjq.markdown— a GFM table for a list, or**key:** valuelines for a single record. Meant for an agent or chat surface readinguipoutput, not a terminal session. See Output formats — markdown for the full behavior.
The default is json, not table. When a human runs uip or folders list in a terminal they see a JSON document on stdout. Pass --output table explicitly (or add it to a shell alias) for the reading-friendly view. This choice keeps the same stdout shape in a terminal and in a pipeline — scripts do not need to care whether they are running interactively.
--json (hidden alias)
--json is a hidden compatibility alias for --output json — it doesn't appear in --help, but it is fully functional:
uip or folders list --json # identical to --output json
uip or folders list --json # identical to --output json
Passing --json together with an explicit --output <value> (any value, including json) is flagged as a conflict internally; avoid combining them — pass one or the other.
--profile
Select a named, saved login profile instead of the default credentials location:
uip login --profile ci-runner --client-id env.UIPATH_CLIENT_ID --client-secret env.UIPATH_CLIENT_SECRET --tenant Production
uip or folders list --profile ci-runner
uip login --profile ci-runner --client-id env.UIPATH_CLIENT_ID --client-secret env.UIPATH_CLIENT_SECRET --tenant Production
uip or folders list --profile ci-runner
--profile <name> and a command's own -f, --file <folder> are mutually exclusive — passing both fails with ValidationError: option '--profile' cannot be used with option '--file'. Profile names are normalized (case and separator rules apply); an invalid name is rejected before any network call. See Sessions and credentials — named profiles.
--interactive / --no-interactive
Override the default "prompt only when stdout is a TTY" behavior:
uip login --interactive # force the tenant-selection prompt even when not on a TTY
uip skills install --no-interactive --agent claude # never prompt, fail instead if a required choice is missing
uip login --interactive # force the tenant-selection prompt even when not on a TTY
uip skills install --no-interactive --agent claude # never prompt, fail instead if a required choice is missing
--interactive sets prompting to always-on; --no-interactive forces it off. Neither flag is specific to uip login — despite appearing in login examples throughout this documentation set, interactivity is a cross-cutting global option with no command-specific short form (there is no --it or similar alias anywhere in the CLI).
Stream separation
--output controls stdout only. Logs, progress indicators, and human-facing errors go to stderr, regardless of format. This means a pipeline can capture clean JSON with:
uip or folders list > folders.json 2> uip.log
uip or folders list > folders.json 2> uip.log
…and still see the log output separately.
--output-filter
Apply a JMESPath expression to the JSON payload before formatting. The filter runs on the full response envelope, so Data[*].Name picks names out of the Data array, length(Data) returns a count, and so on.
# just the Data field
uip or folders list --output-filter "Data"
# folder names only
uip or folders list --output-filter "Data[*].Name"
# count
uip or folders list --output-filter "length(Data)"
# first folder's key and name
uip or folders list --output-filter "Data[0] | {key: Key, name: Name}"
# just the Data field
uip or folders list --output-filter "Data"
# folder names only
uip or folders list --output-filter "Data[*].Name"
# count
uip or folders list --output-filter "length(Data)"
# first folder's key and name
uip or folders list --output-filter "Data[0] | {key: Key, name: Name}"
Combining with --output:
# names as YAML
uip or folders list --output-filter "Data[*].Name" --output yaml
# names as one-per-line plain text
uip or folders list --output-filter "Data[*].Name" --output plain
# names as YAML
uip or folders list --output-filter "Data[*].Name" --output yaml
# names as one-per-line plain text
uip or folders list --output-filter "Data[*].Name" --output plain
A malformed filter expression fails fast with a ValidationError and exit code 3 before the underlying command runs — so a typo does not waste an API call.
--output-filter is the CLI's version of Azure CLI's --query, AWS CLI's --query, and gcloud's --filter/--format. If you already know JMESPath from those tools, the syntax is identical.
--log-level
Set the verbosity of log messages (written to stderr and to --log-file if provided).
uip or folders list --log-level debug # verbose — HTTP calls, auth refresh, tool loading
uip or folders list --log-level info # default
uip or folders list --log-level warn
uip or folders list --log-level error # only failures
uip or folders list --log-level debug # verbose — HTTP calls, auth refresh, tool loading
uip or folders list --log-level info # default
uip or folders list --log-level warn
uip or folders list --log-level error # only failures
Values are case-insensitive. Unknown values are silently ignored (the default is kept) rather than erroring — on purpose, so a typo in a wrapper script does not break a pipeline.
The UIPATH_LOG_LEVEL environment variable is not honored; pass the flag or set it in a profile script.
--log-file
Write a duplicate of the log stream to the specified file, in JSON Lines format (one JSON object per line). The file is appended — use a build-specific path if you need separate logs per run.
uip or folders list --log-file ./uip.log
uip or folders list --log-file /var/log/uip/$(date +%F).log --log-level debug
uip or folders list --log-file ./uip.log
uip or folders list --log-file /var/log/uip/$(date +%F).log --log-level debug
Each line in the file looks like:
{"time":"2026-04-24T18:42:00.123Z","level":"info","message":"CLI v1.0.0 starting — output=json, logLevel=info, logFile=./uip.log"}
{"time":"2026-04-24T18:42:00.123Z","level":"info","message":"CLI v1.0.0 starting — output=json, logLevel=info, logFile=./uip.log"}
This format is designed for log shippers (Fluent Bit, Loki, Splunk) and for post-mortem analysis.
Where global options apply
Global options are stripped from the command line before per-command flags are parsed, so they can appear anywhere on the command line:
uip --output table or folders list
uip or --output table folders list
uip or folders list --output table
uip or folders list --output=table
uip --output table or folders list
uip or --output table folders list
uip or folders list --output table
uip or folders list --output=table
All four invocations are equivalent.
Tool subcommands do not define their own --output or --log-level. A tool that inadvertently defined one would shadow the global flag — the CLI's lint checks forbid this.
Exit codes
Global options control output and logging only; they do not affect exit codes. See Exit codes.
Environment variable overrides
Two environment variables change global-option behavior without a flag:
| Variable | Effect |
|---|---|
UIP_DEFAULT_OUTPUT | Overrides the built-in json default for --output when the flag isn't passed. Accepts table, json, yaml, plain, or markdown; invalid values are ignored. An explicit --output on the command line always wins. |
UIP_TIMINGS | Set to 1 or true to print a per-invocation timing line to stderr on every uip command. See Command timings below. |
Command timings
Set UIP_TIMINGS=1 (or true) and every invocation prints one line to stderr:
[timing] 'uip or assets list' exit=0 total=1250ms startup=380ms command=863ms http=691ms httpCalls=3 flush=7ms
[timing] 'uip or assets list' exit=0 total=1250ms startup=380ms command=863ms http=691ms httpCalls=3 flush=7ms
| Field | Meaning |
|---|---|
| (the quoted command) | The command as typed. |
exit | The exit code the invocation returned. |
total | Total wall clock, measured from process start. |
startup | Everything before the command handler ran — process boot, config, tool loading. |
command | The command handler itself. |
http | Summed duration of the run's outbound HTTP calls — a sum, not wall clock. It overlaps command rather than adding to it, so parallel calls can make it larger than command. |
httpCalls | How many outbound HTTP calls that sum covers. |
flush | Everything after the handler returned — telemetry bookkeeping and the final flush. |
startup + command + flush always equals total. Fields are omitted when they don't apply: a run that never reaches a handler (uip --version, an unknown command) prints only total and exit; a command that makes no HTTP call has neither http nor httpCalls.
The report has its own switch — it doesn't depend on --log-level, so you get durations without turning on debug output, and stdout is never touched.
See also
- Output formats (table, JSON, YAML) — deeper coverage with full examples of each format.
- Scripting patterns — exit codes, stream separation, retries, polling.
- uip login reference and other command pages — document their per-command flags in addition to these globals.