Common Fail-closed Cases
| Case | Behavior |
|---|---|
| Anthropic streaming | Throws before provider execution. |
| OpenAI streaming output rewrite | Throws when policy requires rewrite during streaming. |
| Unsupported rich media source | Throws before request preflight. |
| Unsupported tool shape | Throws before provider execution. |
| Native provider method not listed as guarded | Not an Averta-guarded path. Do not treat it as protected. |
Missing run_id for active tool chain | Throws before tool-call checks continue. |
| Malformed Averta decision response | Throws AvertaSdkError. |
| Checkpoint-incompatible decision | Throws AvertaSdkError. |
Why This Matters
Silent bypass is worse than a noisy failure. If the wrapper cannot prove that a checkpoint ran correctly, continuing would make your app look protected when it is not. That is not conservative documentation language; it is the right security posture.Handling Errors
requestContext or request_context so you can find the matching dashboard event.
Integration Rule
Do not catchAvertaSdkError and retry the same provider call with an unwrapped client. That defeats the guardrail.
Acceptable responses are:
- return a safe fallback
- ask the user to rephrase
- remove unsupported input and retry through the wrapped client
- fix the integration path
- adjust policy if the block is expected but too strict