/status round trip. Exit code 0
is green; exit code 1 means broken wiring.
Error codes
Every non-2xx response uses
{ "error": { "code", "message" } }.
pending-approval is a tool outcome, not an error.
Common checks
- A rung 2 through 4 app requires a configured sandbox adapter.
- Present-mode credential forwarding requires
VENDO_BASE_URLto be set to the trusted host origin. When it is unset or the route binding is cross-origin, Vendo emits a singlepresent-credentials-not-forwardedaudit event per composition (reasonuntrusted-host-originorcross-origin-binding) and same-origin tool calls run without inbound auth.vendo doctorcatches this before you ship — see below. - Away host API calls require
actAsand an app-bound grant that was captured while the user was present. See actAs presets for provider wiring. IfactAsreturnsnullfor a run, the step fails closed, the run terminates, and nothing reaches the host API. Each attempt is audited with its disposition (minted,declined,mismatch, orerror); grants that don’t match the current principal fail closed withact-as-subject-mismatch. - Cookie-authenticated mutations require
Content-Type: application/json. /tickrequires the configured bearer secret.- Webhook verification uses the raw body and delivery headers.
- Unknown instant UI formats render a contained notice instead of breaking the page.
Doctor probes
vendo doctor runs two live probes against the running dev server:
POST /doctor/presentverifies thatauthorizationandcookieheaders reach the host API on same-origin calls. Failure meansVENDO_BASE_URLis missing or wrong, the route binding is cross-origin, or the server is down.POST /doctor/act-asverifies thatcreateVendo({ actAs })mints auth material the host principal resolver accepts. Doctor warns (does not fail) whenactAsis not configured.
/doctor/* routes return 404 in production.
See the CLI reference.