- 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 codedagent`, a bridge to the Python UiPath CLI for building and running Coded Agents.
uip codedagent is a thin bridge to the Python-based UiPath Coded Agents workflow. It detects a suitable Python interpreter, confirms the uipath Python package is installed, and forwards a fixed whitelist of subcommands into the Python CLI — so new, dev, pack, publish, and other lifecycle verbs come from the Python package rather than this tool. review is the one exception: it's a native command implemented directly in this tool, not forwarded.
See Tools (plugins) for how thin wrappers differ from full tools.
Synopsis
uip codedagent setup [--force]
uip codedagent review [path] [--checks <categories>]
uip codedagent <whitelisted-command> [args...]
uip codedagent setup [--force]
uip codedagent review [path] [--checks <categories>]
uip codedagent <whitelisted-command> [args...]
setup, review, and any forwarded command honor the global options (--output, --output-filter, --log-level, --log-file). Exit codes follow the standard contract.
uip codedagent review
Review a coded agent project against a deterministic rule set — no Python interpreter needed, this runs natively in the CLI. Returns a verdict (PASS/FAIL), a score (0-100), a letter grade (A+...F), and a list of issues.
Arguments
| Name | Required | Purpose |
|---|---|---|
[path] | no | Agent project directory. Default: .. |
Options
--checks <categories>— Comma-separated rule categories to run. Omit to run all rules. Known categories includeevals,schema,tools,guardrails,code,general(runuip codedagent review --helpfor the live list).
Examples
uip codedagent review ./my-coded-agent
uip codedagent review --checks code
uip codedagent review ./my-coded-agent
uip codedagent review --checks code
Data shape (--output json)
{
"Code": "CodedAgentReview",
"Data": {
"ProjectDir": "./my-coded-agent",
"Verdict": "PASS",
"Score": 100,
"Grade": "A+",
"Issues": [],
"Strengths": [],
"Stats": {
"errors": 0,
"warnings": 0,
"infos": 0,
"byCategory": { "evals": 0, "schema": 0, "tools": 0, "guardrails": 0, "code": 0, "general": 0 }
}
}
}
{
"Code": "CodedAgentReview",
"Data": {
"ProjectDir": "./my-coded-agent",
"Verdict": "PASS",
"Score": 100,
"Grade": "A+",
"Issues": [],
"Strengths": [],
"Stats": {
"errors": 0,
"warnings": 0,
"infos": 0,
"byCategory": { "evals": 0, "schema": 0, "tools": 0, "guardrails": 0, "code": 0, "general": 0 }
}
}
}
An unrecognized --checks value fails with Code: "CodedAgentReviewInvalidChecks", listing the known categories.
uip codedagent setup
Detect Python and verify the uipath package is installed. Results are cached in a per-user file so subsequent codedagent commands can resolve the Python binary instantly.
Arguments
None.
Options
--force— Re-run detection even if a cached result is present.
Examples
uip codedagent setup
uip codedagent setup --force
uip codedagent setup
uip codedagent setup --force
Data shape (--output json)
{
"Code": "CodedAgentsSetup",
"Data": {
"PythonPath": "/usr/bin/python3.11",
"Package": "uipath",
"PackageInstalled": "Yes",
"PackageVersion": "1.0.0"
}
}
{
"Code": "CodedAgentsSetup",
"Data": {
"PythonPath": "/usr/bin/python3.11",
"Package": "uipath",
"PackageInstalled": "Yes",
"PackageVersion": "1.0.0"
}
}
Environment checks
- Allowed Python versions are configured via the environment variable
PYTHON_TOOL_PYTHON_VERSIONS. An empty list raisesFailureat setup time. - If a
.venvdirectory exists in the current working directory but no virtual environment is activated, setup refuses to run and suggests activating it first (.venv\Scripts\activateon Windows,source .venv/bin/activateelsewhere).
Forwarded commands
A fixed whitelist of 15 subcommand names is forwarded to the uipath Python CLI as codedagent exec <subcommand> ...: add, debug, deploy, dev, eval, init, invoke, list-models, new, pack, publish, pull, push, register, run. Anything outside this list — including a typo — is rejected by Commander as an unknown command before any forwarding is attempted; it is not passed through to Python.
Examples
# Hand off to the Python CLI's new command
uip codedagent new my-agent
# Run the Python CLI's help for a sub-verb
uip codedagent init --help
# Execute a dev loop defined by the Python package
uip codedagent dev
# Hand off to the Python CLI's new command
uip codedagent new my-agent
# Run the Python CLI's help for a sub-verb
uip codedagent init --help
# Execute a dev loop defined by the Python package
uip codedagent dev
Because these commands are defined by the uipath Python package, their flags and output shape are whatever that package emits — not the CLI's standard Code/Data envelope. Treat the CLI here as a transport. For the argument surface, run uip codedagent <command> --help, which forwards into Python. Bare uip codedagent help is not forwarded — codedagent-tool never registers a help command, so it shows Commander's own generated help for this tool instead.
Auth relay: before forwarding, the CLI reads the session created by uip login and injects these environment variables into the Python subprocess so the SDK picks them up automatically:
UIPATH_ACCESS_TOKENUIPATH_URL(composed as<baseUrl>/<org>/<tenant>)UIPATH_ORGANIZATION_ID,UIPATH_ORGANIZATION_NAMEUIPATH_TENANT_ID,UIPATH_TENANT_NAME
If you are not logged in, forwarding still works; the Python CLI runs without those variables.
--force is always stripped: this tool defines no command-specific rules for --force, so it is unconditionally and silently stripped from every forwarded command's arguments before they reach the Python CLI. It never reaches Python, and no error is emitted — passing --force to a forwarded subcommand is simply a no-op.
push requires UIPATH_PROJECT_ID — a required environment variable, checked natively (in this tool, before forwarding to Python), not something the Python CLI enforces on its own. Set it once per project:
echo "UIPATH_PROJECT_ID=<id>" >> .env
uip codedagent push
echo "UIPATH_PROJECT_ID=<id>" >> .env
uip codedagent push
Get <id> from an existing Coded Agent project in Studio Web. The check is skipped for uip codedagent push --help.
deploy/publish --my-workspace (or -w) requires a personal-workspace-capable login scope — another native, pre-forwarding check. It reads your current uip login access token and requires the umbrella OrchestratorApiUserAccess scope or the granular OR.Users.Read scope (either satisfies it); a token missing both fails before anything reaches Python:
{
"Result": "Failure",
"Message": "Current login token is missing the OrchestratorApiUserAccess (or granular OR.Users.Read) scope required for --my-workspace.",
"Instructions": "The personal workspace publish path calls Orchestrator GetCurrentUserExtended and requires either the umbrella OrchestratorApiUserAccess scope or the granular OR.Users.Read scope. If you are using the default client, run `uip login` again — IdentityServer attaches OrchestratorApiUserAccess to issued tokens automatically. ..."
}
{
"Result": "Failure",
"Message": "Current login token is missing the OrchestratorApiUserAccess (or granular OR.Users.Read) scope required for --my-workspace.",
"Instructions": "The personal workspace publish path calls Orchestrator GetCurrentUserExtended and requires either the umbrella OrchestratorApiUserAccess scope or the granular OR.Users.Read scope. If you are using the default client, run `uip login` again — IdentityServer attaches OrchestratorApiUserAccess to issued tokens automatically. ..."
}
The default uip login client picks up OrchestratorApiUserAccess automatically, so this only bites custom clients or a restricted scope list. Skip the check entirely by deploying to the tenant feed instead: uip codedagent deploy --tenant. This check only applies to deploy/publish when --my-workspace/-w is passed — it does not run for a plain deploy/publish or any other whitelisted command.
Exit codes
Standard exit codes apply. The forwarded subprocess's exit code is relayed directly to the parent shell, so a Python-side failure exits uip codedagent with the same non-zero status.
Related
- Tools (plugins) — thin-wrapper tool model.
uip login— creates the session that is relayed to the Python runtime.uip tools— install, update, uninstall thecodedagent-toolpackage itself.