Problem type harness-error
This URI identifies a Problem Details (RFC 9457) object that describes an error detected by an AI agent harness:
https://agenterrors.org/problems/harness-error
Implementations may use this URI until the problem type is registered with IANA as https://iana.org/assignments/http-problem-types#agent-harness-error. Consumers must treat the two URIs as equivalent.
This page summarizes the editor's copy of the draft. If they differ, the draft is authoritative.
Required member
code is a registered error code of the form <category>.<name>, for example output.schema_violation. Consumers decide what kind of error occurred from code, never from title or detail.
Extension members
| Member | Meaning |
|---|---|
origin | Where the error originated: model, harness, tool, upstream, or user. |
retryable | Whether repeating the same operation unchanged may succeed. |
model_recoverable | Whether the model is likely to correct the error if it is told about it. |
model_feedback | Text intended for the model, distinct from detail, which is for humans. |
retry_after | Seconds after which a retry is advised. |
attempts, max_attempts | Attempts already made, and the configured maximum. |
limit | The exceeded limit: name, value, observed, unit. |
location | Where in the run: run_id, turn, tool_name, tool_call_id, pointer. |
upstream | Raw information from an upstream component, kept for diagnosis. |
causes | Problem details objects that caused this one, most recent first. |
Code categories
| Category | Description |
|---|---|
output | Model output could not be accepted by the harness. |
loop | A limit on the agent loop was reached, or the loop is not progressing. |
context | Context assembly or management failed. |
tool | Tool resolution or execution failed. |
policy | A policy, guardrail, refusal, or human decision stopped the operation. |
upstream | A remote dependency, typically the model API, failed. |
harness | The harness failed for another reason. |
The full list of codes, with default values for retryable and model_recoverable, is in the draft.
Example
HTTP/1.1 422 Unprocessable Content
Content-Type: application/problem+json
{
"type": "https://agenterrors.org/problems/harness-error",
"title": "Output Retries Exhausted",
"code": "output.retries_exhausted",
"origin": "harness",
"retryable": false,
"attempts": 3,
"max_attempts": 3,
"causes": [
{
"type": "https://agenterrors.org/problems/harness-error",
"title": "Output Schema Violation",
"code": "output.schema_violation",
"origin": "model",
"model_feedback": "Field 'price' must be a number, got string.",
"location": { "turn": 5, "pointer": "/items/0/price" }
}
]
}
Other bindings
- MCP: the object goes in
_metaunder the keyorg.agenterrors/harness-error, or in JSON-RPCerror.data. - A2A: see the A2A extension.