Error codes
Every bento failure emits a structured envelope (registered at bento schema error):
{ "kind": "scaffold_unsupported_language", "message": "language 'rust2' is not supported by any built-in adapter or installed plugin", "hint": "supported: go, cargo, python, python-uv, ruby, php, maven, gradle, node-npm, node-pnpm, node-yarn, bun, deno", "next_steps": [ "pass --lang with one of the supported values: go, cargo, python, python-uv, ..." ]}The kind field is a stable string — the agent can switch on it. Common kinds include:
config_missing,config_invalid,config_circular_depdish_not_found,bento_not_found,task_not_foundscaffold_missing_language,scaffold_unsupported_language,scaffold_invalid_pathcache_unauthorized,cache_unreachabledeploy_unauthorized,deploy_target_unconfigured,deploy_missing_env_vartoolchain_pin_missing,toolchain_install_failed
For tool-level diagnostics (cargo / golangci-lint / eslint / ruff), each failed task in an ExecutionReport carries a parsed diagnostics array — {file, line, severity, message, rule} records, ready to feed back to a fix-up loop. Schema: bento schema diagnostics.