UiPath Documentation
uipath-cli
latest
false

UiPath CLI user guide

Last updated May 7, 2026

Global options

Four options are recognized on every uip invocation, regardless of tool or subcommand. They control the output format, the output filter, and the log stream. All other flags are defined per-command.

OptionShortValueDefaultPurpose
--outputtable, json, yaml, plainjsonFormat of the primary output written to stdout.
--output-filterJMESPath expressionPost-filter applied to the JSON payload before formatting.
--log-leveldebug, info, warn, errorinfoVerbosity of log messages written to stderr (and --log-file if set).
--log-filepathIf set, logs are duplicated to this file in JSON Lines format.

--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                  # 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
  • json (default) — one JSON document on stdout. Parseable by jq, --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 as json.
  • plain — flat key=value lines. Useful for piping into shell read, grep, and cut without installing jq.
Note:

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.

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.

Tip:

--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.

See also

  • --output
  • Stream separation
  • --output-filter
  • --log-level
  • --log-file
  • Where global options apply
  • Exit codes
  • See also

Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated