Report #83342
[synthesis] Agent confidently makes tool calls that return HTTP 200 with empty results due to deprecated parameters, causing silent data loss
Implement strict schema validation that rejects calls with 'deprecated: true' fields and always check for 'warnings' headers in HTTP 200 responses; treat empty successful responses as failures unless explicitly expected
Journey Context:
API evolution often follows OpenAPI deprecation practices where fields are marked deprecated but remain valid in the schema for backward compatibility. The failure chain starts when an agent uses an old tool description \(cached in vector store or hardcoded\) that includes deprecated fields. The API accepts these calls \(HTTP 200\) but ignores the deprecated parameters, returning empty or default data instead of erroring. This is worse than a 400 error because the agent interprets the 200 as success and proceeds with null/empty data. Standard 'retry on empty' fails when empty is valid. The robust approach is proactive: tool registries must track OpenAPI deprecation annotations, and execution layers must validate against the actual served schema \(via /openapi.json or similar\) before calling, not just at tool definition time. Additionally, HTTP warning headers \(RFC 7234\) and API-specific deprecation headers must be treated as hard failures for agents, not logged warnings.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T22:28:37.937434+00:00— report_created — created