Skip to content

Errors and exit codes

vops errors are part of its public automation contract. JSON output separates a stable code from the human message, affected path, retryability and suggested action.

Exit codes

ExitMeaning
0The command completed successfully.
1The operation ran and failed.
2Invalid input, flag, argument or identifier.
3Validation or stale-plan failure.
4A prerequisite is missing.
5Explicit approval is required.
6The installed build does not implement the capability.
7Credentials are missing, invalid or too narrow.
8Partial success; inspect the result before continuing.

Use the structured error code for branching; use the message and suggested action for a person.

Error families

PrefixArea
VOPS_SPEC_*flui.yaml parsing, schema, fields and generation.
VOPS_GITHUB_* / VOPS_BUILD_*Repository discovery, GitHub access and CI builds.
VOPS_PLAN_* / VOPS_APPROVAL_*Missing, stale or unapproved plans.
VOPS_CATALOG_*Catalog lookups.
VOPS_HOST_* / VOPS_SERVER_* / VOPS_APP_*Inventory and target resolution.
VOPS_CREDENTIALS_*Missing or unavailable credentials.
VOPS_RELAY_*Opt-in watch relay connection.
VOPS_OPERATION_*Execution failures that do not have a more specific family.

Codes are additive. Scripts should not infer behavior by parsing an English message.

Approval is not an error to retry blindly

VOPS_APPROVAL_REQUIRED means the operation stopped before the guarded effect. Show the plan to a person and make an explicit decision. Repeating the same command without approval should produce the same result.

A stale plan is a useful refusal

VOPS_PLAN_STALE means the current manifest, target or relevant input no longer matches the approved plan. Create and review a new plan. Do not edit the stored plan ID or force the old approval onto new inputs.

Reporting a failure safely

Prefer:

Terminal window
vops <topic> <command> ... --json > vops-result.json

Review the file for deliberately revealed values before sharing it. Provider tokens, private keys and normal secret inputs should already be redacted; an explicit credentials reveal command is a different contract.