Resources / Drift changelog

Every model change that would have broken your app

Providers ship silent snapshot updates. We watch malformed-response rates per model and publish a proxy rule the same day, so the fix lands upstream of your code.

  1. OpenAIRegression

    Markdown fences reappeared around JSON responses

    gpt-4o (2026-07-24 snapshot)

    What we detected

    Malformed-JSON rate on structured output rose from 0.4% to 3.6% across 100k proxied requests within 6 hours of the snapshot rollout.

    How the proxy patched it

    Proxy rule fence-strip-v3 now unwraps ```json blocks before validation, so applications received clean objects with zero code changes.

  2. AnthropicBreaking

    Tool-use blocks emitted before text blocks

    claude-3.7-sonnet

    What we detected

    Clients reading content[0].text began throwing on 12% of tool calls as block ordering changed.

    How the proxy patched it

    Response normaliser reorders content blocks to the documented shape and exposes tool calls under a stable tool_calls alias.

  3. GeminiRegression

    Enum fields returned title-cased values

    gemini-2.5-pro

    What we detected

    Classification pipelines saw a 5.1% spike in schema violations where 'Billing' was returned instead of 'billing'.

    How the proxy patched it

    Enum coercion rule matches case-insensitively against the declared enum and repairs the value, logging each repair as a drift event.

  4. OpenAIAdvisory

    Silent context window truncation on long prompts

    gpt-4o-mini

    What we detected

    Requests above 118k input tokens were truncated without an error, producing confidently wrong summaries.

    How the proxy patched it

    Pre-flight token accounting rejects or prunes oversized prompts and surfaces a x-driftwatch-truncation-risk header.

  5. AnthropicRegression

    Trailing commas in nested JSON objects

    claude-3.5-haiku

    What we detected

    0.9% of extraction responses failed strict JSON.parse, concentrated in payloads with more than 4 nesting levels.

    How the proxy patched it

    Tolerant JSON repair pass fixes trailing commas and unescaped newlines, then re-validates against your schema before responding.

  6. GeminiBreaking

    Function-call arguments delivered as a string

    gemini-2.0-flash

    What we detected

    Argument objects arrived JSON-encoded inside a string, breaking every downstream tool router on first deploy.

    How the proxy patched it

    Proxy parses stringified argument payloads into objects and normalises them to the OpenAI tool-call shape.