UiPath Admin
Administrative operations through uip admin for Identity Server, Authorization, OMS, IP Restriction, and Audit.
When to Use
- Identity: Users, groups and membership, robot accounts, external apps and credentials, PATs, SMTP, OAuth2 scope discovery, and human or robot onboarding.
- Authz: Custom roles, assignments, permission catalogs, effective access, and ad-hoc grants. Role scopes are
Organization,TenantGlobal,Tenant, andProject; assignments may also useFolderorApp. - OMS: Current organization, tenant lifecycle, service provisioning, operation polling, and region discovery. The CLI cannot create or delete organizations.
- IP Restriction: Allowlist entries, enforcement, bypass rules, and
ip-restriction my-ipfor public-IP questions and safety checks. - Audit: Use
uip admin audit, neveruip or audit-logs, for organization or tenant audit events, sources, targets, types, queries, login history, membership/license activity, tenant activity, investigations, and exports.uip or audit-logsis Orchestrator-operational audit and belongs touipath-platform. - Troubleshooting: Use the diagnose capability index and identity troubleshooting guide for access, authentication, identity, tenant operations, provisioning, robot authentication, SMTP, PAT, external-app, or IP-lockout symptoms.
For audit availability, run uip admin audit <scope> sources; discover live catalogs instead of relying on memory. Route org versus tenant with audit-workflow-guide.md → Audit scope disambiguation and Rule 23. Natural-language investigations may cover resource changes/deletions, sign-ins, tenant changes, compliance windows, and cross-scope requests; run once per requested scope and combine results.
Troubleshooting routes: access denied — 403, "role not taking effect", and cross-service role confusion are one scenario → resolve the principal, check effective access, look up the required permission, then branch on missing permission versus mis-scoped grant (Playbook 1, failure modes → Access denied); suspicious logins → organization audit (Playbook 2); IP lockout → my-ip, ranges, and enforcement (Playbook 3); PAT/external-app failure → expiry, scopes, and revocation audit (Playbook 4). SMTP uses smtp get and smtp test; poll stuck tenant operations; for provisioning no-ops check platform-pinned services; distinguish robot identity issues from credential-model issues.
Critical Rules
Each rule is part of the agent contract.
Universal
- Route correctly: Orchestrator-specific role/permission requests go to
uip or roles(uipath-platform), notuip admin authorization. Organization/tenant audit always usesuip admin audit <scope>(sources,events, orexport), neveruip or audit-logs, including audit history, exports, login history, compliance dumps, and “who did what/where.” - Verify login first: Run
uip login status --output json. If unauthenticated, stop and ask the user to runuip login; it opens an interactive browser flow and must not run in automated/non-interactive sessions. Environment-authenticated sessions are already logged in. Resolve the organization from the active session. - Use
--output jsonon every command. Parse programmatically and present conversationally. - Stop on error and show it verbatim. Never retry authentication failures; ask the user to run
uip login. - Resolve named principals before high-risk operations: users, groups, robot accounts, and external apps, including assignment create/delete, user/group deletion, membership changes, robot deletion, external-app deletion, and secret generation. Search first and echo
Principal: <displayName> (<userName>) — <id>. Zero matches: stop and ask. Multiple matches: show a numbered list and wait for a digit. Never substitute the current login user. See Resolving Principal IDs.
Identity
- Discover before creating: List robot accounts, groups, and external apps first; user invites are excepted.
- Show secrets once only for external-app creation and
generate-secret; tell the user to save them immediately. - External apps require creation scopes:
--app-scopeor--user-scope, such as--app-scope "OR.Folders". - Group membership uses user IDs: Resolve users under Rule 5, then use
groups members add/revoke. - Confirm deletion of users, groups, robot accounts, and external apps after resolving the target. Built-in groups (
type: "BuiltIn") cannot be deleted; onlyCustomgroups can.
Authz
- Built-in roles are read-only. Create/update/delete only
Customroles. The CLI rejects service-managed or platform-level authoring; see Services That Manage Their Own Roles. roles create/updateare PUT-style upserts. Build the body from flags and--file ./actions.json; alwaysroles getbefore update because omitted flags overwrite fields.--serviceinfers scope (for example,studio→Tenant,apps→Organization); use--scopeonly to override. Never guess aserviceName— valid values and the re-derive command: permission-catalog.md → serviceNames.- Listing supports every service; authoring does not.
roles list --service <svc>androles assignments list --service <svc>accept every service. Usecheck-accessfor effective access. - Scope vocabularies differ:
roles create --scope=Organization|TenantGlobal|Tenant|Project; assignment create addsFolder|App; assignment list excludesTenantGlobal;check-access --scopesupports onlyTenant|Folder. - Assignment create/delete requires principal resolution under Rule 5;
--identity-idis an unchecked raw UUID. - Assignment ownership must match the scope path: the path's service segment is
lowercase(ownerServiceName), taken verbatim from the role's ownroles get—DocumentUnderstanding→/tenant/<tid>/documentunderstanding.CentralizedAccesshas no service segment (/or/tenant/<tid>). Never substitute a sibling service's segment and never copy one off another role's grant:Reinfer(display name IXP) is not Document Understanding. Display-name mappings apply to user-facing prose only, never to paths. Repair a mismatch by re-creating the assignment with--service <slug>or--scope-path "/tenant/<tid>/<slug>"; aTenant-scope role takes no project segment. See Validate Role's Owning Service. 17b. A mis-scoped grant is invisible to the default listings — retrieve it with--scope-path.roles assignments listpins both a scope path and a serviceName from your flags, so a<svc>-owned role granted at the bare/tenant/<tid>matches no default shape: it is absent from the bare listing, from--identity-id, from--scope Tenant(with or without--include-inherited), and from--service <svc>. Retrieve it withroles assignments list --scope-path "/tenant/<TENANT_ID>" --output jsonand no--service. Never read an empty listing as proof the grant does not exist, and never re-create the assignment on that basis — that reproduces the original mismatch. See Access denied → Cause B.
OMS
- Async lifecycle: auto-poll, then hand off. Tenant create/update/delete/enable/disable return
operationId; pollorganizations operation get <OP_ID>three times at five-second intervals, stop on terminal status, then, if still in progress, present a numbered menu. Never loop indefinitely. Organizations create/delete are unavailable in the CLI and require Portal/support. See Polling procedure. tenants deleteis soft-only. Restoration requires support; no hard-delete flag exists.- Tenant commands default to the login tenant. Always provide explicit
<TENANT_ID>for tenant delete/disable andtenants services remove. - Resolve region before tenant creation: Run
organizations regions listfirst because--regionis required and region-aware. - Service disable/remove can falsely report Success. Always re-list afterward. See Tenants concepts.
Audit
- Disambiguate
orgversustenantbefore querying. If vague and no prior turn fixes scope, ask one clarifying question, using AskUserQuestion when available; do not silently default. If non-interactive clarification is impossible, query both and combine. Scope is positional:uip admin audit org sourcesoruip admin audit tenant events;--scopeis invalid. See Audit scope disambiguation. - Events return
{auditEvents, next, previous}, not a bare array. ReadData.auditEvents[];nextis newer,previousolder, and newest-backward traversal followsprevious. --limitpaginates internally. Do not date-loop for pagination. Each server request is clamped to[10, 200]; CLI limits are up to 10000.--limitmust be[1, 10000]; above 10000 returnsResult: "ValidationError". Omit it or stay within range for “everything.”- Run
audit <scope> sourcesfirst. Never invent source, target, or type GUIDs; use live catalog GUIDs. The response also answers availability questions. - Bound event windows in UTC ISO 8601. Do not query noisy tenants without
--from-dateand--to-date. Accept date-only or timestamp forms such as2026-04-01T14:30:00Z.--to-dateincludes the exact instant; use the next day’s start orT23:59:59.999Zfor a full final day. Resolve relative dates using actual UTC (date -u), never guessing, and echo the window. 27b. An empty targeted query is complete. State that no matching event was found, with scope, filters, and window; offer widening, the other scope, or checking resource existence. Never infer an actor from adjacent resources, event types, or broad searches, and never loosen filters merely to find a culprit. Name an actor only when the matching event supports both requested resource and verb; quotecreatedOnand identifyingeventDetails. See Step 5. --tenant-idis ignored for org audit. Useaudit tenantinstead.- On audit 401, do not retry. The token lacks
Audit.Read; tell the user to runuip logout && uip login. 29b. Retry transient audit 5xx errors (ErrorCode: server_error/Retry: RetryLater, such as 503/504) up to two more times with several seconds of backoff, using the identical query. Do not change limit or window. Never present or save an error envelope as data; report failed retrieval. - Exports use a base directory and whole UTC days. Require
--from-date,--to-date, and--output-path. Dates are inclusive calendar days; do not use the events next-day trick.--output-pathis a directory, never a filename/extension; the CLI createsaudit_<from>_<to>_<generated-at>inside it. Default JSON creates per-day<YYYY-MM-DD>.json;--file-format csvcreates one merged CSV. Use CSV for flat spreadsheets and JSON for day-wise files. Pass a user-named destination verbatim without confirmation; confirm only a selected default such as./audit-exports. ReportPathandGeneratedAt.
IP Restriction
- Enforcement enable requires a safety check and confirmation: Run
ip-restriction my-ip, verify the caller IP is covered byip-ranges list, then state: “After enabling IP restriction, any caller (Portal, CLI, robot, external app) whose source IP is not inip-ranges listwill be blocked from this org. Misconfiguration locks you out and requires platform-side recovery. Proceed?” Require--confirm. Deleting a range while enforcement is enabled also requires--confirm. See enforcement management. - IP-lockout recovery is platform-side: use an allowlisted IP to disable enforcement or Portal recovery; there is no CLI bypass.
- Never expose “APMS.” Say “IP Restriction” in user-facing output.
What Not to Do
- Never pass resource IDs as flags. IDs and names are positional, for example
groups members add <GROUP_ID> --user-ids ...; apply this to get/update/delete/create commands. - Never present authz results without provenance: role name,
scopeType,ownerServiceName, and tenant binding using names rather than UUIDs. See Provenance contract.
The rest are the inverse of the Critical Rules — never:
- use
uip or audit-logsfor org/tenant audit (R1), or default the audit scope when ambiguous (R23); - treat
audit eventsas a bare array (R24), hand-loop dates to paginate (R25), invent source/target/type GUIDs (R26), or query events unbounded on a noisy tenant (R27); - name an actor the query didn't return (R27b), pass
--tenant-idtoorgaudit (R28), retry a 401 (R29), or save/report an error envelope as data (R29b); - use the next-day
--to-datetrick onexport(R30), orroles updatewith only the changed flag (R12); - confuse provisioned
services listwith thelist-availablecatalog (R22), or run an OMS mutation without echoing the resolved target (Output Etiquette).
Quick Start
| Goal | Entry point |
|---|---|
| Invite user and assign group | user-management.md, group-management.md |
| Create custom role | uip admin authorization roles create --scope <Organization|TenantGlobal|Tenant|Project> --name "<NAME>" --file ./actions.json --output json |
| Grant permissions | grant-permissions.md |
| Assign a role | Resolve principal; roles get; validate owner service/path; create assignment |
| Check effective access | uip admin authorization check-access <USER_GUID_OR_EMAIL> --scope <Tenant|Folder> --output json |
| Create tenant | tenant-management.md |
| Add tenant service | tenants services list-available --region <R>; add; verify post-state |
| Find public IP | ip-restriction my-ip --output json; return Data.ipAddress |
| Enable IP enforcement | my-ip → verify range → enforcement enable --confirm |
| Query/export audit | audit-workflow-guide.md |
Key Concepts
See key-concepts.md for organization hierarchy and distinctions among users, groups, robot accounts, robot credentials, and external apps.
Output Etiquette and Report Contract
| Area | Required output |
|---|---|
| Identity mutations | Result and new resource ID; highlight one-time external-app secrets, warn to save them, and offer a relevant next step. |
| Authz reads/mutations | Role name, scopeType, ownerServiceName from the response, translated display name where applicable, and tenant binding resolved to a name. For check-access, label each row direct or inherited from <Group name> using nested roleAssignments[].securityPrincipalType. See Provenance contract. |
| OMS reads | Lead with Organization: <ORG_NAME>; separate provisioned services with status from the available catalog without status. Tenant reads also show name, UUID, and lifecycle status. |
| OMS mutations | Echo resolved target; auto-poll async operations three times at five-second intervals, then offer a numbered menu; re-list synchronous services to verify state. |
| Audit queries/exports | State scope, count, resolved UTC window, filters, and cursor state; obey Rules 23, 26, and 27. After reporting, wait for the user's next-step choice and do not chain mutations. For exports report Path and GeneratedAt. See audit output etiquette. |
| IP Restriction mutations | Before enabling, state impact and obtain explicit confirmation; afterward rerun my-ip and ip-ranges list to confirm coverage; never say APMS. |
Task Navigation
| Need | Reference |
|---|---|
| Identity CLI | identity-commands.md |
| Users | user-management.md |
| Groups and membership | group-management.md |
| Robot accounts | robot-account-management.md |
| External apps | external-app-management.md |
| PATs | pat-management.md |
| SMTP | smtp-management.md |
| Authorization CLI | authorization-commands.md |
| Custom roles | role-management.md |
| Grant permissions | grant-permissions.md |
| Role assignments | role-assignment-management.md |
| Permission catalog | permission-catalog.md |
| Effective access | check-access.md |
| Organizations | organizations-commands.md, organization-management.md |
| Tenants and services | tenants-commands.md, tenant-management.md |
| IP Restriction CLI | ip-restriction-commands.md |
| IP ranges | ip-range-management.md |
| Enforcement | enforcement-management.md |
| Bypass rules | bypass-rule-management.md |
| Audit CLI | audit-commands.md |
| Audit investigations | audit-workflow-guide.md |
| Audit pagination | audit-commands.md plus Rule 25 |
| Troubleshooting | identity-troubleshoot-guide.md |
| Diagnostic capability index | diagnose/CAPABILITY.md |
| Failure modes | failure-modes.md |
| Diagnostic priority ladder | troubleshooting-guide.md |