- 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
Strictly and read-only validate a local agent project with `uip agent validate` before packing, publishing, or debugging.
uip agent validate is a strict, read-only check. It answers a single question: would Studio Web accept this directory as-is? It never writes any files. If the project's storage schema is behind, or if entry-points.json / bindings_v2.json have drifted from source, validate fails with a code pointing at uip agent refresh — the separate command that actually migrates files and regenerates derived artifacts.
Validate is local-only — no login required.
Synopsis
uip agent validate [path] [--path <path>] [--bindings-target <path>] [--inline-in-flow]
uip agent validate [path] [--path <path>] [--bindings-target <path>] [--inline-in-flow]
[path] and --path are mutually exclusive — passing both throws AgentValidateConflictingPath.
All uip agent validate invocations honor the global options (--output, --output-filter, --log-level, --log-file). Exit codes follow the standard contract.
Arguments
[path](optional, default.) — Agent project directory. Must containagent.json; standalone mode additionally requiresentry-points.jsonandproject.uiproj. Cannot be combined with--path.
Options
| Flag | Default | Purpose |
|---|---|---|
--path <path> | — | Alternative to the positional [path] argument. Cannot be combined with it. |
--bindings-target <path> | <projectDir>/bindings_v2.json; for --inline-in-flow, the immediate parent directory's bindings_v2.json when it contains a .flow file | Path to the bindings_v2.json file to compare against. Mirrors the same option on uip agent refresh. |
--inline-in-flow | off | Validate an inline agent inside a flow project. Skips the entry-points.json and project.uiproj checks. |
Examples
# Validate the current directory
uip agent validate
# Validate a specific standalone project
uip agent validate ./my-agent
# Equivalent, using the flag form
uip agent validate --path ./my-agent
# Validate an inline agent (the flow-project subdirectory)
uip agent validate ./my-flow/<uuid> --inline-in-flow
# Validate the current directory
uip agent validate
# Validate a specific standalone project
uip agent validate ./my-agent
# Equivalent, using the flag form
uip agent validate --path ./my-agent
# Validate an inline agent (the flow-project subdirectory)
uip agent validate ./my-flow/<uuid> --inline-in-flow
What is checked
Standalone mode runs, in order:
- Required files —
agent.json,entry-points.json,project.uiproj. agent.jsonstructure and schema-version gate —agent.versionmust equal the CLI's current schema version (a newer project version fails withAgentValidationOutdatedand tells you to upgradeuip; an older one tells you to runrefresh). Also checkstype === "lowCode",projectIdis a UUID,settings.model/settings.engine/settings.modepresent,metadata.storageVersionpresent,messages[]has at least[system, user].messages[].contentTokens— each message'scontentTokensarray is re-derived fromcontent(splitting on{{…}}/@{…}) and compared to what is on disk. Mismatches in count, type, or raw-string are errors. (Fixing drift here isrefresh's job — validate only reports it.)- I/O schemas and input-variable references —
inputSchema/outputSchemamust each be{ type: "object", properties: {…} }; every{{input.<key>}}reference in a message must resolve to a key declared ininputSchema.properties(a bare{{key}}without theinput.prefix is rejected — the runtime leaves it as literal text). - Resources — both inline
agent.resourcesand file-basedresources/<Name>/resource.jsonentries.toolresources need a UUIDid,name,type, and — whenlocationis set — one of"solution"/"external", withproperties.folderPath === "solution_folder"when the location is"solution"(or""for--inline-in-flow).escalationandmcpresources need a UUID and a name. Folder naming is also checked: standalone resource folders must be named after the resource'sname; inline resource folders must be named after the resource'sid(case-insensitive). - Entry-points sync —
entry-points.json → entryPoints[0].input/outputmust matchagent.json'sinputSchema/outputSchema(properties keys for both; required arrays for input only). Skipped when--inline-in-flowis set. project.uiproj—ProjectType === "Agent". Skipped when--inline-in-flowis set.flow-layout.jsonpresence and parse (standalone only) — missing or malformed fails with instructions to runrefresh.- Storage-version gate — the project's
metadata.storageVersionmust equal the latest known migration version; otherwiseAgentValidationOutdated(upgradeuip, or runrefreshif the project is the one that's behind). - Strict schema validation against the current Studio Web schemas.
- IS connector tool resource presence (
--inline-in-flowonly) — every Integration Service connector tool node wired into the flow must have a matchingresources/<id>/resource.jsonon disk. - Derived-files drift check — a dry run of the same generator
refreshuses, comparingentry-points.json/bindings_v2.jsonagainst what would be regenerated. A referential-integrity failure (e.g. a tool referenced but not present as a resource) is a hard error; a content mismatch is reported as drift, both pointing atrefreshto fix.
Static errors fail fast with exit code 1 before later steps run.
Data shape (--output json)
Valid (Code: "AgentValidation"):
{
"Code": "AgentValidation",
"Data": {
"Status": "Valid",
"ProjectDir": "/abs/path/my-agent",
"Model": "gpt-5.4",
"StorageVersion": "47.0.0",
"Validated": {
"agent": true,
"resources": 2,
"evalSets": 0,
"evaluators": 0
}
}
}
{
"Code": "AgentValidation",
"Data": {
"Status": "Valid",
"ProjectDir": "/abs/path/my-agent",
"Model": "gpt-5.4",
"StorageVersion": "47.0.0",
"Validated": {
"agent": true,
"resources": 2,
"evalSets": 0,
"evaluators": 0
}
}
}
Validated is an object breaking down what the strict schema pass checked — not a boolean. InlineInFlow: true is added for --inline-in-flow runs, and a Warnings array is added when the derived-files check produced non-fatal warnings.
Outdated (Code: "AgentValidationOutdated"):
{
"Code": "AgentValidationOutdated",
"Message": "Storage version 45.0.0 is outdated; latest is 47.0.0.",
"Data": { "CurrentVersion": "45.0.0", "LatestVersion": "47.0.0" },
"Instructions": "Run `uip agent refresh` to migrate."
}
{
"Code": "AgentValidationOutdated",
"Message": "Storage version 45.0.0 is outdated; latest is 47.0.0.",
"Data": { "CurrentVersion": "45.0.0", "LatestVersion": "47.0.0" },
"Instructions": "Run `uip agent refresh` to migrate."
}
Drift (Code: "AgentValidationDrift"):
{
"Code": "AgentValidationDrift",
"Message": "Derived artifacts are out of sync with source (1 issue(s))",
"Data": { "Errors": ["bindings_v2.json: out of sync — tool \"InvoiceLookup\" binding changed"] },
"Instructions": "Run `uip agent refresh` to regenerate entry-points.json and bindings_v2.json."
}
{
"Code": "AgentValidationDrift",
"Message": "Derived artifacts are out of sync with source (1 issue(s))",
"Data": { "Errors": ["bindings_v2.json: out of sync — tool \"InvoiceLookup\" binding changed"] },
"Instructions": "Run `uip agent refresh` to regenerate entry-points.json and bindings_v2.json."
}
Static/schema failure (Code: "AgentValidationFailed"):
{
"Code": "AgentValidationFailed",
"Message": "Validation failed with 2 error(s)",
"Data": {
"Errors": [
"agent.json.settings.model: missing or empty",
"messages[1].contentTokens: contentTokens has 3 entries but content requires 2. Rebuild contentTokens to match content."
]
}
}
{
"Code": "AgentValidationFailed",
"Message": "Validation failed with 2 error(s)",
"Data": {
"Errors": [
"agent.json.settings.model: missing or empty",
"messages[1].contentTokens: contentTokens has 3 entries but content requires 2. Rebuild contentTokens to match content."
]
}
}
Related
uip agent init— scaffolds projects that validate cleanly by default.uip agent refresh— the command that actually migrates and regenerates files; run it whenever validate points at it.uip agent review— a scored quality pass, distinct from validate's pass/fail schema check.